web-dev-qa-db-ja.com

非対話的にadduserを実行します

adduserコマンドを使用して、シェルスクリプト経由で(無効なパスワードを持つ)ユーザーを追加したいと思います。

デフォルトでは、adduserはさまざまな値(例:氏名)の入力を求めます。コマンドライン経由でこれらの値を送信する方法はありますか?または、代わりにuseraddする必要がありますか?

193
Lorin Hochstein

useradd はユーザーを追加することもでき、どのような形式のプロンプトも組み込まれていないように見えます。

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m--create-home:ユーザーのホームディレクトリを作成
  • -p--password:ユーザーのパスワードを指定します。 スキップして無効にします
  • -s--Shell:ログオンユーザーのデフォルトシェル

    空白の場合、/etc/default/useraddShell変数で指定されたデフォルトのログインシェルが使用されます

  • <user>をログイン名に置き換えます
  • <encryptedPassword>encryptedパスワードに置き換えます

ハッシュ化されたパスワードの生成:

ハッシュ化されたパスワードを生成できるcrypt3実装の 多く があります。全体がハッシュ化されたパスワードです。

Sha-512ベース

結果の出力形式:ハッシュメカニズム(sha-512では$6)、ランダムソルト(2番目のドル記号の後の8バイト$ASDF1234)、残りはペイロードです。

  • mkpasswd mkpasswd -m sha-512

    mkpasswdwhoisパッケージで提供されます)

DESベース:

結果の出力形式:最初の2バイトはソルト、残りはペイロードです。全体がハッシュ化されたパスワードです。

  • mkpasswd:mkpasswdwhoisパッケージで提供)
  • openssl:openssl passwd -crypt
  • Perl:Perl -e "print crypt('password');"
  • python:python3 -c 'import crypt; print(crypt.crypt("password"))'
37
ThorSummoner