サーバーを準備するBASHスクリプトの一部として、新しいシステムにユーザーセットを追加する必要があります。非対話式でユーザーを追加し、ホームディレクトリを作成し、グループを設定し、デフォルトのパスワードを入力する方法は?
たとえば、次のユーザーを追加する必要がある場合はどうすればよいですか?
user: node
password: spoon
group: ultraMegaPermissions
user:serve
password: spoot
group: sortaNotMega
user:watcher
password: spoogle
group: notMega
答え1
これは古い質問ですが、気になります。他の人はこのコマンドを検討するかもしれませんnewusers
。これは私が使用しているRHEL 5.5システムとUbuntu 12.04システムの両方に存在するため、ほとんどのディストリビューションリポジトリで利用できると思います。
からman newusers
:
newusersコマンドは、ユーザー名とプレーンテキストパスワードのペアのファイルを読み取り、この情報を使用して既存のユーザーセットを更新するか、新しいユーザーを作成します。各行の形式は、後述の例外を除き、標準パスワードファイル(passwd(5)を参照)と同じです。
答え2
useradd
少なくともLinuxでは。
使用crypt(3)
暗号化されたパスワードを生成したら、各パスワードに対して次の手順を実行します。
useradd -m -g [group] -p [crypt output] [user]
-m
ホームディレクトリを作成します。-g
ユーザーの初期ログイングループを設定します。-p
返される暗号化パスワードを設定しますcrypt(3)
(ユーザーの作成時にプロセスを一覧表示するユーザーには暗号化パスワードが表示されるため、このオプションは適切ではない可能性があることに注意してください)。
使用したい他のオプションもあります(少なくとも推測-s
)。これについて読んでくださいman 8 useradd
。
答え3
ユーザーパスワードを手動で入力する必要がある場合:
echo -n "Enter $MY_USER password: "
read -sa MY_PASS
echo ${MY_USER}:${MY_PASS}::::/home/${MY_USER}:${DEFAULT_SHELL} | newusers
完全に非対話型である必要がある場合は、プレーンテキストパスワード($ MY_PASS)を使用して最後のコマンドを実行してください。これは一般的に良い考えではありません。
答え4
newuser コマンドがサーバーに存在しない場合。
passwd コマンドのヘルプを使用できます。
echo "new_passwd" | passwd --stdin new_user