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


86

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?


Tôi chưa có tiếng để trả lời, nhưng nếu bạn đang tìm cách làm điều này từ single_userchế độ (thiết lập lại bảo mật) thì bạn sẽ cần phải khởi động lại, giữ Command-Squyền truy cập ghi vào đĩa trên mỗi chi tiết trên màn hình và sau rm /var/db/.AppleSetupDoneđó sẽ cho phép bạn tạo một tài khoản quản trị viên mới. Hy vọng điều này sẽ giúp được ai đó
New Alexandria

Câu trả lời:


80

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 chí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

7
Làm cách nào để đảm bảo UID là duy nhất?
JR Lawhorne

3
Không có cách tự động; nếu bạn viết kịch bản này, bạn có thể chạy nó bằng lệnh "id ####" và đảm bảo nó trả về "Không có người dùng như vậy" hoặc một số hack như vậy.
palmer

1
Hãy nhớ sử dụng sudo nếu bạn không có quyền.
Raffi Khatchadourian

BTW, vì đây là cách dài dòng hơn mức cần thiết, tôi đã chuyển các lệnh này vào useraddcú pháp.
Xiong Chiamiov

1
Lưu ý rằng PrimaryGroupID 80admin, vì vậy lusercó thể sử dụng sudongay cả khi bạn không thêm anh ấy vào nhóm quản trị viên của.
ruslo

20

(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 đã cung cấp để 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ó.)


1
Tôi đã tạo một tập lệnh tạo ra Open Directory Master của chúng tôi với những người dùng mới và sau đó gọi sudo createhomedir -s(IIRC) trên Bản sao / Tệp dữ liệu mở và họ vui vẻ tạo các thư mục chính.
Clinton Blackmore

2
dscl -listđược giới hạn ở 256 kết quả, vì vậy nếu bạn có hơn 256 người dùng, kỹ thuật này sẽ không đảm bảo UID duy nhất.
smokris

Thủ thuật nhỏ để đuổi 2 ống bổ sung (chỉ sử dụng awk): dscl. -list / Người dùng UniqueID | awk '{if ($ 2> tối đa) max = $ 2; } HẾT {in tối đa + 1; } '
Valtoni Boaventura

@ValtoniBoaventura Đẹp. Tôi kết hợp điều đó bằng câu trả lời (với một mặc định trong trường hợp không có tài khoản thông thường). Tôi cũng đã thêm một bước để đặt Drop Box ACL (được thêm vào 10.6).
Gordon Davisson

8

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

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


Kì lạ Apple dường như đã loại bỏ v10.5 của tài liệu mà bạn đề cập ban đầu, nhưng vẫn giữ phiên bản
chb

7

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


dscl -listđược giới hạn ở 256 kết quả, vì vậy nếu bạn có hơn 256 người dùng, kỹ thuật này sẽ không đảm bảo UID duy nhất.
smokris

yup đó là con đường ngắn nhất để thêm người dùng mà ngay tại đây ngay bây giờ, chỉ cần grepnó với các idbạn đã có trong tâm trí để sử dụng cho người dùng mới
Yair

7

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 hay để 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 idvới tư cách 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.


Trong một câu trả lời khác, Elliott cảnh báo rằng lệnh 'createhomedir -c', cho đến cuối, sẽ tạo tài khoản cho tất cả người dùng trong thư mục mà bạn bị ràng buộc. (Tùy chọn '-c', trong trang man, 'tạo thư mục gốc chỉ cho các đường dẫn nhà cục bộ.') Có một tùy chọn khác, '-u tên người dùng', có thể hoạt động tốt hơn.
Clinton Blackmore

xin chào tôi đang sử dụng đoạn script trên Vì vậy, nó thêm người dùng mới của tôi nhưng khi người dùng sẽ kết nối với lịch của anh ta thì họ nói rằng anh ta không có quyền! Bạn có thể giúp tôi được không ?

@jimmy: Tôi khuyên bạn nên hỏi một câu hỏi mới trên serverfault và liên kết với câu trả lời này thay vì chỉ hỏi một câu hỏi trong các bình luận, điều này sẽ hiếm khi được nhìn thấy. Tôi mong đợi các quyền là đúng. Sử dụng 'chown' và 'chmod' có thể giúp ích nếu bạn có thể xác định một tệp không có quyền chính xác ... nhưng tôi không biết đó là tệp nào.
Clinton Blackmore

dscl -listđược giới hạn ở 256 kết quả, vì vậy nếu bạn có hơn 256 người dùng, kỹ thuật này sẽ không đảm bảo UID duy nhất.
smokris

4

Tôi bắt đầu một wrapper ít về dsclmà có useraddthông số 's - nó không đầy đủ (cũng không làm tôi nghĩ rằng nó có thể được, như một số thứ là không thể trên OS X), nhưng tôi sử dụng nó để làm một số người dùng tạo ra.

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 đó.


Chạy # gem install osx-useradd.gemspectrên OS X 10.5 cho kết quả ERROR: While executing gem ... (Gem::RemoteSourceException)và dòng thứ hai là HTTP Response 301 fetching http://gems.rubyforge.org/yaml.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.