it-swarm-vi.tech

Làm cách nào để tạo tài khoản người dùng từ Terminal trong Mac OS X 10.5?

Tôi muốn có thể tạo người dùng mới trong Mac OS X 10.5 từ xa sau khi vào máy. Làm thế nào để tôi làm điều này?

87
JR Lawhorne

Sử dụng lệnh dscl. Ví dụ này sẽ tạo ra "luser" người dùng, như vậy:

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

Sau đó, bạn có thể sử dụng mật khẩu để thay đổi mật khẩu của người dùng hoặc sử dụng:

dscl . -passwd /Users/luser password

Bạn sẽ phải tạo/Người dùng/người sử dụng cho thư mục nhà của người dùng và thay đổi quyền sở hữu để người dùng có thể truy cập vào đó và chắc chắn rằng UniqueID thực tế là duy nhất.

Dòng này sẽ thêm người dùng vào nhóm của quản trị viên:

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

(Câu trả lời này nên được coi là một phụ lục để điền vào một số khoảng trống trong quy trình của palmer)

Để chọn một UniqueID chưa sử dụng cho người dùng mới của bạn, bạn có thể sử dụng:

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

... sau đó sử dụng chuỗi các lệnh dscl palmer đã đưa ra để tạo tài khoản và sau đó tạo thư mục chính của người dùng mới với:

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

(có một lệnh createhomedir, nhưng nó không hoạt động khi tôi thử nghiệm nó.)

20
Gordon Davisson

Nếu bạn có một nhóm người dùng để tạo, có thể tạo tệp văn bản có cấu trúc và chuyển nó đến dsimport để thực hiện công việc.

Apple Quản trị dòng lệnh Hướng dẫn có cả một chương về người dùng và nhóm.

8
Clinton Blackmore

Một cách khác để chọn và chọn một ID người dùng duy nhất trước khi tạo tài khoản chỉ là xem qua danh sách và kiểm tra xem tài khoản bạn muốn sử dụng có ở đó không:

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

Tiện dụng nếu bạn cần sử dụng một ID nhất định

7
Kevin McDonagh

Tôi đã tận dụng các câu trả lời khác nhau ở đây để đưa ra những gì tôi nghĩ là một kịch bản đẹp để tạo tài khoản người dùng. Phải thừa nhận rằng điều này không được thiết kế để chạy lệnh tại một thời điểm từ ssh; nó được thiết kế để chạy tập lệnh khi biên dịch hình ảnh dựa trên gói của OS X (như được tạo bởi Casper Imaging hoặc 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)"

Kịch bản cho phép bạn chỉ định những nhóm người dùng nên thuộc về. Tôi nhận thấy rằng điều này có thể khác nhau tùy thuộc vào phiên bản OS X mà bạn đang chạy. Tôi nhận được các kết quả khác nhau khi tôi chạy id với tư cách là quản trị viên trên OS X 10.6 so với khi tôi làm quản trị viên trên OS X 10.5.

7
Clinton Blackmore

Tôi đã bắt đầu một trình bao bọc nhỏ about dscl mất các tham số của useradd - nó không hoàn chỉnh (tôi cũng không thể nghĩ được, vì một số điều không thể thực hiện được trên OS X ), nhưng tôi đã sử dụng nó để tạo một số người dùng.

Khung này có sẵn cho tất cả các tham số, vì vậy nếu bạn muốn tận dụng các tính năng xã hội tuyệt vời của GitHub, thật dễ dàng để làm điều đó.