web-dev-qa-db-ja.com

useraddコマンドを使用して新しいユーザーのパスワードを暗号化するにはどうすればよいですか?

CLIでuseraddコマンドを使用しながら、新しいユーザーの暗号化されたログインパスワードを作成したいと思います。オプション-pを使用するとパスワードを作成できますが、このオプションを使用してもパスワードは暗号化されません。また、useraddを使用して新しいユーザーを作成した後、passwd [username]コマンドを使用して暗号化パスワードを個別に作成できることも知っていますが、前述のように、暗号化パスワードを作成する方法を知りたいuseraddコマンド。

1
Charlie D

PasswdはUbuntuで--stdinをサポートしていないため、これを試すことができます。

Perl -e "print crypt('password','sa');"

https://administratosphere.wordpress.com/2011/06/16/generated-passwords-using-crypt3/ を参照してください

1
wbrmx

ユーザー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.
1
waltinator

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)\$\")")" [...]
1
kos