CLIでuseradd
コマンドを使用しながら、新しいユーザーの暗号化されたログインパスワードを作成したいと思います。オプション-p
を使用するとパスワードを作成できますが、このオプションを使用してもパスワードは暗号化されません。また、useradd
を使用して新しいユーザーを作成した後、passwd [username]
コマンドを使用して暗号化パスワードを個別に作成できることも知っていますが、前述のように、暗号化パスワードを作成する方法を知りたいuseradd
コマンド。
PasswdはUbuntuで--stdinをサポートしていないため、これを試すことができます。
Perl -e "print crypt('password','sa');"
https://administratosphere.wordpress.com/2011/06/16/generated-passwords-using-crypt3/ を参照してください
ユーザーIDを作成してからpasswd --expire
を使用することにより、管理者が作成したパスワードによるユーザー管理の手間をすべてスキップできます。 man passwd
から:
-e, --expire
Immediately expire an account's password. This in effect can force
a user to change his/her password at the user's next login.
Perlを使用できます。
Perl -e "print crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"
またはPythonとcrypt
モジュール:
python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"
foo
:暗号化するパスワード$6
:暗号化タイプ、この場合はSHA-512$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)
:暗号化ソルト、この場合はランダムな32文字の文字列。useradd
と組み合わせて:
useradd [...] -p"$(Perl -e "print crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")")" [...]
または:
useradd [...] -p"$(python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")")" [...]