pengembangan-web-mp-pd.com

Bagaimana cara membuat akun pengguna dari Terminal di Mac OS X 10.5?

Saya ingin dapat membuat pengguna baru di Mac OS X 10.5 dari jarak jauh setelah ssh'ing ke dalam mesin. Bagaimana saya melakukan ini?

87
JR Lawhorne

Gunakan perintah dscl. Contoh ini akan membuat pengguna "luser", seperti:

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

Anda kemudian dapat menggunakan passwd untuk mengubah kata sandi pengguna, atau menggunakan:

dscl . -passwd /Users/luser password

Anda harus membuat/Users/luser untuk direktori home pengguna dan mengubah kepemilikan sehingga pengguna dapat mengaksesnya, dan pastikan bahwa UniqueID sebenarnya unik.

Baris ini akan menambahkan pengguna ke grup administrator:

dscl . -append /Groups/admin GroupMembership luser
80
palmer

(Jawaban ini harus dianggap sebagai tambahan untuk mengisi beberapa kekosongan dalam prosedur palmer)

Untuk memilih UniqueID yang tidak digunakan untuk Anda pengguna baru, Anda dapat menggunakan:

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

... kemudian gunakan urutan palmer perintah dscl yang diberikan untuk membuat akun, lalu buat direktori home pengguna baru dengan:

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

(ada perintah createhomedir, tetapi tidak berfungsi ketika saya mengujinya.)

20
Gordon Davisson

Jika Anda memiliki banyak pengguna untuk dibuat, dimungkinkan untuk membuat file teks terstruktur dan meneruskannya ke dsimport untuk melakukan pekerjaan itu.

Apple Administrasi Baris Perintah Panduan memiliki bab lengkap tentang pengguna dan grup.

8

Cara lain untuk memilih dan memilih ID pengguna yang unik sebelum membuat akun adalah dengan melihat-lihat daftar dan memeriksa bahwa yang ingin Anda gunakan tidak ada di sana:

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

Berguna jika Anda perlu menggunakan ID tertentu

7
Kevin McDonagh

Saya telah memanfaatkan berbagai jawaban di sini untuk menghasilkan apa yang menurut saya adalah skrip yang bagus untuk membuat akun pengguna. Memang, ini tidak dirancang untuk menjalankan perintah pada satu waktu dari ssh; itu lebih dirancang untuk menjadi skrip dijalankan ketika mengkompilasi gambar berbasis paket OS X (seperti yang dibuat oleh Casper Imaging atau InstaDMG ).

#!/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)"

Skrip memungkinkan Anda menentukan grup yang harus dimiliki pengguna. Tampak bagi saya bahwa ini mungkin berbeda tergantung pada versi OS X yang Anda jalankan. Saya mendapatkan hasil yang berbeda ketika saya menjalankan id sebagai admin di OS X 10.6 daripada yang saya lakukan saat menjalankan sebagai admin di OS X 10.5.

7

Saya mulai pembungkus kecil tentang dscl yang mengambil parameter useradd - tidak lengkap (saya juga tidak berpikir demikian, karena beberapa hal tidak mungkin pada OS X ), tapi saya menggunakannya untuk melakukan beberapa kreasi pengguna.

Kerangka kerjanya ada untuk semua parameter, jadi jika Anda ingin memanfaatkan fitur sosial GitHub yang mengagumkan, itu mudah dilakukan.