Mac OS X 10.5のターミナルからユーザーアカウントを作成するにはどうすればよいですか?


86

マシンにsshした後、Mac OS X 10.5で新しいユーザーをリモートで作成できるようにしたいと思います。どうすればいいですか?


私はまだ答える評判がありませんが、single_userモードからこれを行う方法を探している場合(セキュリティリセット)、Command-S画面の詳細ごとにディスクに書き込みアクセスして、押しながら再起動する必要があります、それからrm /var/db/.AppleSetupDone新しい管理者アカウントを作成できます。これが誰かを助けることを願って
ニューアレクサンドリア

回答:


80

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

7
UIDが一意であることを確認するにはどうすればよいですか?
JR Lawhorne

3
自動的な方法はありません。これをスクリプト化する場合は、「id ####」コマンドを実行して、「No such user」または何らかのハックを返すようにするだけです。
パーマー

1
権限がない場合は、必ずsudoを使用してください。
ラフィカッチャドゥリアン

ところで、これは本来よりもずっと冗長なので、これらのコマンドを構文に移植しましたuseradd
Xiong Chiamiov 14

1
それは注意しPrimaryGroupID 80ているadminので、luser使用することができsudoますが、管理者のグループに彼を追加しない場合でも。
ruslo 14

20

(この答えは、パーマーの手順のいくつかの空白を埋めるための補遺とみなされるべきです)

新しいユーザーの未使用の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コマンドがありますが、テストしたときに機能しませんでした。)


1
Open Directory Masterに新しいユーザーを入力し、Open Directory sudo createhomedir -sReplicas / Filesharesで(IIRC)を呼び出すスクリプトを作成し、ホームディレクトリを作成しました。
クリントンブラックモア

2
dscl -list256個の結果に制限されているため、256人を超えるユーザーがいる場合、この手法は一意のUIDを保証できません。
スモクリス

2つの追加パイプを排除するための小さなトリック(awkのみを使用):dscl。-list / Users UniqueID | awk '{if($ 2> max)max = $ 2; } END {print max + 1; } '
ヴァルトーニボアベンチュラ

@ValtoniBoaventuraニース。私はそれを回答に組み込んだ(通常のアカウントがない場合のデフォルトを使用)。また、ドロップボックスACLを設定する手順を追加しました(10.6で追加されました)。
ゴードンデイヴィソン

8

多数のユーザーを作成する場合は、構造化テキストファイルを作成し、それを渡してdsimportジョブを実行することができます。

Appleのコマンドライン管理ガイドには、ユーザーとグループに関する章全体があります。


奇数。アップルは、あなたが最初に呼ばれた文書のバージョン10.5を離れて行っているようだが、バージョン10.3に保持し、以下の包括的なSnow Leopardのバージョン
CHB

7

アカウントを作成する前に一意のユーザーIDを選択する別の方法は、リストを調べて、使用したいユーザーIDがそこにないことを確認することです。

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

特定のIDを使用する必要がある場合に便利


dscl -list256個の結果に制限されているため、256人を超えるユーザーがいる場合、この手法は一意のUIDを保証できません。
スモクリス

うん、今すぐそのユーザーをここに追加する最短のパスです。新しいユーザーに使用することを念頭に置いて、grepそれをid念頭に置いて
-yair

7

ここでさまざまな答えを活用して、ユーザーアカウントを作成するのに最適なスクリプトだと思うものを考え出しました。確かに、これは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のバージョンによって異なる可能性があるようです。idOS X 10.6で管理者として実行すると、OS X 10.5で管理者として実行した場合とは異なる結果が得られます。


別の答えとして、エリオットは、「createhomedir -c」コマンドが最後に向かって、バインドされているディレクトリ内のすべてのユーザーのアカウントを作成することを警告しています。(manページの「-c」オプションは、「ローカルホームパスのみのホームディレクトリを作成します。」)別のオプション「-uユーザー名」があります。
クリントンブラックモア

こんにちは、上記のスクリプトを使用しています。そのため、新しいユーザーが追加されますが、ユーザーが自分のカレンダーに接続すると、権限がないと表示されます!手伝って頂けますか ?

@jimmy:めったに見られないコメントで質問するのではなく、serverfaultで新しい質問をして、この回答にリンクすることをお勧めします。私は許可が正しいと期待しています。「chown」と「chmod」を使用すると、正しいアクセス許可を持たないファイルを識別できる場合に役立ちますが、どのファイルになるかわかりません。
クリントンブラックモア

dscl -list256個の結果に制限されているため、256人を超えるユーザーがいる場合、この手法は一意のUIDを保証できません。
スモクリス

4

私が始めた小さなラッパーについてdsclそれが取るuseraddのパラメータを-それは完全ではありません(またいくつかのものは、OS X上では不可能であるように私は、それができると思います)が、私はいくつかのユーザー作成を行うには、それを使用していました。

フレームワークはすべてのパラメーターに対応しているため、GitHubの素晴らしいソーシャル機能を利用したい場合は簡単です。


# gem install osx-useradd.gemspecOS X 10.5で実行するERROR: While executing gem ... (Gem::RemoteSourceException)と、2行目がになりHTTP Response 301 fetching http://gems.rubyforge.org/yamlます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.