Mac OS X 10.5'teki Terminal'den kullanıcı hesaplarını nasıl oluştururum?


86

Makineye girdikten sonra Mac OS X 10.5'te uzaktan yeni kullanıcılar oluşturabilmek istiyorum. Bunu nasıl yaparım?


Henüz cevap verecek itibarımız yok, ancak bunu single_usermoddan nasıl yapacağınızı (güvenlik ayarlarına sıfırlama) arıyorsanız Command-S, basılı tutup yeniden başlatmanız gerekecek , ekran detayları başına diske yazma erişimi kazanacaksınız. , ve sonra rm /var/db/.AppleSetupDonehangisi yeni bir yönetici hesabı oluşturmanıza izin verir. Umarım bu birine yardımcı olur
Yeni İskenderiye

Yanıtlar:


80

Dscl komutunu kullanın. Bu örnek, "luser" kullanıcısını şöyle yaratır:

dscl . -create /Users/luser
dscl . -create /Users/luser UserShell /bin/bash
dscl . -create /Users/luser RealName "Lucius Q. User"
dscl . -create /Users/luser UniqueID "1010"
dscl . -create /Users/luser PrimaryGroupID 80
dscl . -create /Users/luser NFSHomeDirectory /Users/luser

Kullanıcı şifresini değiştirmek için passwd tuşunu kullanabilir veya kullanabilirsiniz:

dscl . -passwd /Users/luser password

Kullanıcının giriş dizini için / Users / luser oluşturmanız ve kullanıcının ona erişebilmesi için sahipliğini değiştirmeniz ve UniqueID'nin gerçekten benzersiz olduğundan emin olmanız gerekir.

Bu satır kullanıcıyı yönetici grubuna ekleyecektir:

dscl . -append /Groups/admin GroupMembership luser

7
UID'nin benzersiz olmasını nasıl sağlayabilirim?
JR Lawhorne

3
Otomatik bir yol yok; Eğer bunu yazarsanız, sadece "id ####" komutunu çalıştırmasını ve "Böyle bir kullanıcı yok" ya da böyle bir hack döndürdüğünden emin olabilirsiniz.
palmer

1
İzinleriniz yoksa sudo kullanmayı unutmayın.
Raffi Khatchadourian

Bu olması gerekenden daha yol daha ayrıntılı olduğundan BTW, ben taşıdık içine bu komutlar useraddsözdizimi.
Xiong Chiamiov

1
Not PrimaryGroupID 80olduğu admin, bu nedenle luserkullanabilirsiniz sudosen yöneticilerin grubunun onu eklemek değilse bile.
ruslo

20

(Bu cevap, palmer'ın prosedüründeki bazı boşlukları doldurmak için bir zeyilname olarak kabul edilmelidir)

Kullanılmayan bir UniqueID'yi sizin için yeni bir kullanıcı seçmek için kullanabilirsiniz:

maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))

... sonra hesap oluşturmak için palmer'ın verdiği dscl komutlarının sırasını kullanın ve ardından yeni kullanıcının ana dizinini oluşturun:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser
if [[ "$(sw_vers -productVersion)" != 10.[0-5].* ]]; then
    # Set ACL on Drop Box in 10.6 and later
    chmod +a "user:luser allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" /Users/luser/Public/Drop\ Box
fi

(Bir createhomedir komutu var, fakat test ettiğimde işe yaramadı.)


1
Open Directory Master'ımızı yeni kullanıcılarla dolduran bir komut dosyası hazırladım ve ardından sudo createhomedir -sOpen Directory Kopyaları / Dosya Paylaşımlarını (IIRC) çağırır ve mutlu bir şekilde ev dizinlerini oluştururlar.
Clinton Blackmore

2
dscl -list256 sonuçla sınırlıdır, bu nedenle 256'dan fazla kullanıcınız varsa, bu teknik benzersiz bir UID'yi garanti edemez.
smokris

2 ek boru tahliye etmek için ufak bir hile (sadece awk kullanın): dscl. -list / Kullanıcılar UniqueID | awk '{if (2 $> maks.) max = 2 $; } END {en fazla + 1 yazdır; } '
Valtoni Boaventura

@ValtoniBoaventura Güzel. Ben bunu cevap olarak dahil ettim (normal hesap yoksa diye varsayılan). Ayrıca Drop Box ACL'yi ayarlamak için bir adım daha ekledim (10.6'da eklendi).
Gordon Davisson

8

Oluşturulacak çok sayıda kullanıcı varsa, yapılandırılmış bir metin dosyası oluşturmak dsimportve işi yapmak için geçmek mümkündür .

Apple'ın Komut Satırı Yönetim Kılavuzu kullanıcılar ve gruplar hakkında bir bölüme sahiptir.


Garip. Elma Başlangıçta anılan belgenin v10.5 ile deplasmanda yapmış gibi görünüyor, ama v10.3 tuttu ve daha az kapsamlı Snow Leopard sürümünü
KHB

7

Bir hesap oluşturmadan önce benzersiz bir kullanıcı kimliği seçmenin ve seçmenin başka bir yolu da listeye bakmak ve kullanmak istediğiniz birinin orada olmadığını kontrol etmektir:

 sudo dscl . list /Users uid
 sudo dscl . list groups gid

Belirli bir kimlik kullanmanız gerekirse kullanışlı


dscl -list256 sonuçla sınırlıdır, bu nedenle 256'dan fazla kullanıcınız varsa, bu teknik benzersiz bir UID'yi garanti edemez.
smokris

yup bu kısa yol sadece şu an tam burada o kullanıcı eklemek için var grepile idyeni kullanıcı için kullanmak aklındaki
Yair

7

Kullanıcı hesapları oluşturmak için iyi bir komut dosyası olduğunu düşündüğüm şeyi bulmak için buradaki farklı cevapları kullandım. Kuşkusuz, bu bir anda ssh komutunu çalıştırmak için tasarlanmamıştır; OS X'in paket tabanlı bir görüntüsünü derlerken ( Casper Imaging veya InstaDMG tarafından oluşturulmuş) bir komut dosyası çalışması olarak tasarlanmıştır .

#!/bin/bash
# This script creates a user account under Mac OS X
# (tested with 10.5 and 10.6; likely works with 10.4 but not earlier)
# Written by Clinton Blackmore, based on work at
# http://serverfault.com/questions/20702

# === Typically, this is all you need to edit ===

USERNAME=joeadmin
FULLNAME="Joe Admin"
PASSWORD="hard_to_hack"

# A list of (secondary) groups the user should belong to
# This makes the difference between admin and non-admin users.
# Leave only one uncommented
#SECONDARY_GROUPS=""  # for a non-admin user
SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME

dscl . -passwd /Users/$USERNAME $PASSWORD


# Add use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"

Komut dosyası, bir kullanıcının hangi gruplara ait olacağını belirtmenize izin vermiyor. Bana göre bu, çalıştırmakta olduğunuz OS X sürümüne bağlı olarak değişebilir. idOS X 10.6'da yönetici olarak çalıştırdığımda OS X 10.5'de yönetici olarak çalıştırdığımdan farklı sonuçlar alıyorum .


Başka bir cevapta Elliott, 'createhomedir -c' komutunun sonuna doğru, bağlı olduğunuz dizindeki tüm kullanıcılar için hesap oluşturacağı konusunda uyarır. (Man-sayfasındaki '-c' seçeneği, yalnızca yerel ev yolları için ev dizinleri oluşturur.) Daha iyi çalışabilecek başka bir seçenek olan '-u kullaniciadi' vardır.
Clinton Blackmore

merhaba yukarıdaki betiği kullanıyorum. Bu yüzden benim yeni kullanıcı ekler ama kullanıcı onun takvimine bağlanacak zaman o izinleri olmadığını söylüyor! Bana yardım eder misiniz ?

@jimmy: Yorumlarda sadece nadir görülen bir soru sormak yerine serverfault hakkında yeni bir soru sormanızı ve bu cevaba bağlanmanızı öneririm. İzinlerin doğru olmasını bekliyorum. 'Chown' ve 'chmod' komutlarını kullanmak, doğru izinlere sahip olmayan bir dosyayı tanımlayabiliyorsanız yardımcı olabilir ... ama hangisinin olacağını bilmiyorum.
Clinton Blackmore

dscl -list256 sonuçla sınırlıdır, bu nedenle 256'dan fazla kullanıcınız varsa, bu teknik benzersiz bir UID'yi garanti edemez.
smokris

4

Başladığım biraz sarıcı hakkında dsclo alır useraddtamamlandığını değil (ne de bazı şeyler OS X üzerinde mümkün değildir gibi olabilir sizce) ama bazı kullanıcı oluşturmayı yapmak için kullandı - 'in parametrelerini.

Çerçeve tüm parametreler için var, bu yüzden GitHub'ın muhteşem sosyal özelliklerinden yararlanmak istiyorsanız, bunu yapmak kolaydır.


Koşu # gem install osx-useradd.gemspecOS X 10.5 sonuçlarına ERROR: While executing gem ... (Gem::RemoteSourceException)ve ikinci çizgidir HTTP Response 301 fetching http://gems.rubyforge.org/yaml.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.