回答:
dsclコマンドを使用します。この例では、次のようにユーザー「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
ユーザーのホームディレクトリ用に/ Users / luserを作成し、ユーザーがアクセスできるように所有権を変更し、UniqueIDが実際に一意であることを確認する必要があります。
次の行は、ユーザーを管理者のグループに追加します。
dscl . -append /Groups/admin GroupMembership luser
useradd
。
PrimaryGroupID 80
ているadmin
ので、luser
使用することができsudo
ますが、管理者のグループに彼を追加しない場合でも。
(この答えは、パーマーの手順のいくつかの空白を埋めるための補遺とみなされるべきです)
新しいユーザーの未使用のUniqueIDを選択するには、次を使用できます。
maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))
...次に、palmerが与えたdsclコマンドのシーケンスを使用してアカウントを作成し、次のコマンドを使用して新しいユーザーのホームディレクトリを作成します。
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
(createhomedirコマンドがありますが、テストしたときに機能しませんでした。)
sudo createhomedir -s
Replicas / Filesharesで(IIRC)を呼び出すスクリプトを作成し、ホームディレクトリを作成しました。
dscl -list
256個の結果に制限されているため、256人を超えるユーザーがいる場合、この手法は一意のUIDを保証できません。
多数のユーザーを作成する場合は、構造化テキストファイルを作成し、それを渡してdsimport
ジョブを実行することができます。
Appleのコマンドライン管理ガイドには、ユーザーとグループに関する章全体があります。
ここでさまざまな答えを活用して、ユーザーアカウントを作成するのに最適なスクリプトだと思うものを考え出しました。確かに、これはsshから一度にコマンドを実行するためのものではありません。さらに、OS Xのパッケージベースのイメージ(Casper Imagingまたは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)"
このスクリプトでは、ユーザーが属するグループを指定できます。これは、実行しているOS Xのバージョンによって異なる可能性があるようです。id
OS X 10.6で管理者として実行すると、OS X 10.5で管理者として実行した場合とは異なる結果が得られます。
dscl -list
256個の結果に制限されているため、256人を超えるユーザーがいる場合、この手法は一意のUIDを保証できません。
私が始めた小さなラッパーについてdscl
それが取るuseradd
のパラメータを-それは完全ではありません(またいくつかのものは、OS X上では不可能であるように私は、それができると思います)が、私はいくつかのユーザー作成を行うには、それを使用していました。
フレームワークはすべてのパラメーターに対応しているため、GitHubの素晴らしいソーシャル機能を利用したい場合は簡単です。
single_user
モードからこれを行う方法を探している場合(セキュリティリセット)、Command-S
画面の詳細ごとにディスクに書き込みアクセスして、押しながら再起動する必要があります、それからrm /var/db/.AppleSetupDone
新しい管理者アカウントを作成できます。これが誰かを助けることを願って