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

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

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

答え1

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

答え2

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

答え3

Ubuntu では passwd が --stdin をサポートしていないため、以下を試すことができます:

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

見るhttps://administratosphere.wordpress.com/2011/06/16/generating-passwords-using-crypt3/

答え4

私の場合、Ubuntu 18.04 LTS では以下が機能しました:

echo 'your_password' > /tmp/pw.txt
pw="$(makepasswd --crypt-md5 --clearfrom=/tmp/pw.txt)"
sudo useradd -p "${pw}" your_username
rm -f /tmp/pw.txt

まず、以下をmakepasswd使用してインストールする必要があります。(Ubuntu または Debian の場合。他のディストリビューションについては Google で検索してください):

sudo apt install makepasswd

関連情報