如何在Mac OS X 10.5中从terminal创build用户帐户?

我希望能够在进入机器之后远程创buildMac OS X 10.5中的新用户。 我如何做到这一点?

    使用dscl命令。 这个例子会创build用户“luser”,如下所示:

     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 

    然后可以使用passwd来更改用户的密码,或者使用:

     dscl . -passwd /Users/luser password 

    您必须为用户的主目录创build/ Users / luser,并更改所有权,以便用户可以访问它,并确保UniqueID实际上是唯一的。

    这一行将把用户添加到pipe理员组中:

     dscl . -append /Groups/admin GroupMembership luser 

    (这个答案应该被认为是填充palmer程序中的一些空白的附录)

    要为您的新用户select一个未使用的UniqueID,您可以使用:

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

    …然后使用palmer给出的dscl命令序列创build帐户,然后使用以下命令创build新用户的主目录:

     cp -R /System/Library/User\ Template/English.lproj /Users/luser chown -R luser:staff /Users/luser 

    (有一个createhomedir命令,但是当我testing它时,它不起作用。)

    如果你有一堆用户创build,可以创build一个结构化的文本文件,并将其传递给dsimport来完成这项工作。

    “苹果的命令行pipe理指南”包含了关于用户和组的一整章。

    在创build帐户之前select唯一的用户ID的另一种方法是查看列表并检查您要使用的用户ID是否不存在:

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

    方便,如果你需要使用一个特定的ID

    我利用这里的不同答案来提出我认为是一个很好的创build用户帐户的脚本。 无可否认,这不是为了在ssh上运行一个命令而devise的, 它更被devise成在编译基于软件包的OS X映像(由Casper Imaging或InstaDMG创build)时运行的脚本。

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

    该脚本可以让你指定一个用户应该属于哪个组。 在我看来,这可能会有所不同,这取决于您正在运行的OS X的版本。 当我在OS X 10.6上以pipe理员身份运行id时,获得的结果与在OS X 10.5上以pipe理员身份运行时的结果不同。

    我开始了一个关于dscl 的小包装 ,它使用了useradd的参数 – 它不是完整的(我也不认为它可以,因为有些东西在OS X上是不可能的),但是我用它来创build一些用户。

    所有的参数都有框架,所以如果你想利用GitHub的真棒社交function,很容易做到。