Pertanyaan 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 jarak jauh setelah ssh'ing ke dalam mesin. Bagaimana saya melakukan ini?


84
2018-06-05 18:07




Saya belum memiliki reputasi untuk dijawab, tetapi jika Anda mencari cara untuk melakukannya single_user mode (reset keamanan) maka Anda harus reboot menekan Command-S, dapatkan akses tulis ke disk per detail di layar, dan kemudian rm /var/db/.AppleSetupDone yang akan membiarkan Anda membuat akun admin baru. Semoga ini bisa membantu seseorang - New Alexandria


Jawaban:


Gunakan perintah dscl. Contoh ini akan membuat pengguna "pengguna", 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 gunakan:

dscl . -passwd /Users/luser password

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

Baris ini akan menambahkan pengguna ke grup administrator:

dscl . -append /Groups/admin GroupMembership luser

80
2018-06-05 18:15



Bagaimana cara memastikan UID itu unik? - JR Lawhorne
Tidak ada cara otomatis; jika Anda skrip ini, Anda dapat menjalankan perintah "id ####" dan memastikannya mengembalikan "No such user" atau beberapa peretasan semacam itu. - palmer
Ingat untuk menggunakan sudo jika Anda tidak memiliki izin. - Raffi Khatchadourian
BTW, karena ini jauh lebih verbose dari seharusnya, Saya porting perintah-perintah ini ke dalam useradd sintaksis. - Xiong Chiamiov
Perhatikan itu PrimaryGroupID 80 aku s admin, jadi luser bisa menggunakan sudo bahkan jika Anda tidak menambahkannya ke grup administrator. - ruslo


(Jawaban ini harus dianggap sebagai adendum untuk mengisi beberapa kosong dalam prosedur palmer)

Untuk memilih UniqueID yang tidak terpakai untuk Anda pengguna baru, Anda bisa menggunakan:

maxid=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
newid=$((maxid+1))

... kemudian gunakan urutan perintah dscl yang diberikan palmer 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

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


20
2018-06-05 20:21



Saya membuat skrip yang mengisi Master Open Directory kami dengan pengguna baru, dan kemudian memanggil sudo createhomedir -s (IIRC) pada Open Directory Replicas / Fileshares, dan mereka dengan senang hati membuat direktori home. - Clinton Blackmore
dscl -list dibatasi hingga 256 hasil, jadi jika Anda memiliki lebih dari 256 pengguna, teknik ini akan gagal menjamin UID yang unik. - smokris


Jika Anda memiliki banyak pengguna untuk membuat, adalah mungkin untuk membuat file teks terstruktur dan menyebarkannya dsimport untuk melakukan pekerjaan itu.

Apel Administrasi Baris Perintah Panduan memiliki seluruh bab tentang pengguna dan grup.


8
2018-06-05 19:19



Aneh. Apple tampaknya telah menghapus v10.5 dari dokumen yang Anda maksud awalnya, tetapi terus v10.3 dan kurang komprehensif Versi Snow Leopard - chb


Cara lain untuk memilih dan memilih ID pengguna unik sebelum membuat akun adalah dengan melihat 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
2017-11-30 16:10



dscl -list dibatasi hingga 256 hasil, jadi jika Anda memiliki lebih dari 256 pengguna, teknik ini akan gagal menjamin UID yang unik. - smokris
yup itulah jalur terpendek untuk menambahkan pengguna itu di sini sekarang, hanya grep dengan itu id yang ada dalam pikiran Anda gunakan untuk pengguna baru - yair


Saya telah memanfaatkan berbagai jawaban di sini untuk menghasilkan apa yang menurut saya adalah skrip bagus untuk membuat akun pengguna. Diakui, ini tidak dirancang untuk menjalankan perintah pada suatu waktu dari ssh; itu lebih dirancang untuk menjadi skrip berjalan ketika menyusun 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 mana yang seharusnya menjadi milik pengguna. Tampaknya bagi saya ini mungkin berbeda tergantung pada versi OS X yang Anda jalankan. Saya mendapatkan hasil yang berbeda ketika saya berlari id sebagai admin pada OS X 10.6 daripada yang saya lakukan saat menjalankan sebagai admin pada OS X 10.5.


7
2018-01-14 23:02



Dalam jawaban lain, Elliott memperingatkan bahwa perintah 'createhomedir -c', menjelang akhir, akan membuat akun untuk semua pengguna di direktori yang Anda tuju. (Opsi '-c', di halaman manual, 'membuat direktori home hanya untuk jalur lokal.') Ada opsi lain, '-u nama pengguna', yang mungkin berfungsi lebih baik. - Clinton Blackmore
halo saya menggunakan skrip di atas. Jadi itu menambah pengguna baru saya tetapi ketika pengguna akan terhubung ke kalendernya itu mengatakan bahwa dia tidak memiliki izin! Bisakah kamu membantuku ?
@ Jimmy: Saya akan menyarankan mengajukan pertanyaan baru di serverfault dan tautan ke jawaban ini daripada hanya mengajukan pertanyaan di komentar, yang akan jarang terlihat. Saya berharap izinnya benar. Menggunakan 'chown' dan 'chmod' dapat membantu jika Anda dapat mengidentifikasi file yang tidak memiliki izin yang benar ... tetapi saya tidak tahu yang mana. - Clinton Blackmore
dscl -list dibatasi hingga 256 hasil, jadi jika Anda memiliki lebih dari 256 pengguna, teknik ini akan gagal menjamin UID yang unik. - smokris


Saya mulai bungkus kecil tentang dscl yang dibutuhkan useraddParameter - itu tidak lengkap (saya juga tidak bisa, karena beberapa hal tidak mungkin di OS X), tetapi saya menggunakannya untuk melakukan beberapa pembuatan pengguna.

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


4
2017-10-17 06:15