Linuxでユーザーに初期/デフォルトパスワードを割り当てるにはどうすればよいですか?


10

ユーザーのパスワードの設定方法を説明したガイドを見つけました。私はそれを自動化して、次のようなユーザーに電子メールを送信しようとしています:

userid created with password XYZ.
request to change the initial password.

上記のドキュメントによると、Pythonを使用して暗号化されたパスワードを作成し、usermod次のようにコマンドに渡す必要があります。

 usermod -p "<encrypted-password>" <username>

これを行う他の簡単な方法はありますか?それを行うために特別なユーティリティをダウンロードしたくありません。可能な限り一般化する必要があります。


編集:上記のリンクで与えられた方法でさえ私にはうまくいかないようです:

bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist.  Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.

ここに私が見つけたもう1つのリンクがありますがusermod、誰かpsがパスワードを表示しているプロセスを表示するために使用するときに-pオプションを使用するとセキュリティ上の問題があるようです
12:23のmunish

回答:


13

chpasswdこれを行うために、次のように使用できます。

echo "username:newpassword" | chpasswd

都合がよければ、chpasswd以外のプログラムからパイプすることもできますがecho、これでうまくいきます。

編集:シェルスクリプト内でパスワードを生成して設定するには、次のようにします。

# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd

の詳細についてはchpasswdhttp://linux.die.net/man/8/chpasswdを参照してください。

(パスワードを生成するコマンドはhttp://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.htmlからのものでした)


@Dominickに感謝します。chpasswdはおそらくAIXにあります...私はそれを使用していません。そして、evrytimeはパスワードを書く必要があります...質問のリンクのようにスクリプトで生成することはできません...残念ながらそれでも私には
うまくいき

@munishスクリプトで生成することの意味がよくわかりませんが、役立つように回答を更新しました。
Dominick Pastore

動作しません。「認証トークン操作エラー」
Cerin

@Cerinたまたまあなたは次のようなことをしていsudo echo "username:newpass" | chpasswdますか?からの昇格されたアクセス許可sudoはパイプを通過しないためchpasswd、通常のユーザーとして実行されます。これは、移動して固定することができsudoのように、echo "username:newpass" | sudo chpasswd。そのエラーメッセージを引き起こす可能性のある他の問題もありますが、このような権限エラーはおそらく最も一般的です。
Dominick Pastore 14

1
コマンドラインのパスワードは、w、ps、または他のプロセスに関する情報を表示する他のコマンドを使用して、同じマシンにログインしている他のユーザーに表示される可能性があります。この方法で設定したパスワードは、ユーザーができるだけ早く変更する必要があります。
Mnebuerquo

3

OpenSSLを使用してランダムなパスワード(この場合は16文字)を生成できます。

# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')

次に、ハッシュされたパスワードをuseraddまたはにフィードしますusermod

# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>

正当な理由:パスワードの生成は、の代わりにを使用する同様の方法を採用してい/dev/urandomますopenssl


2

useraddは動作するはずです(私はUbuntuで実行しました)。多分あなたの各引数が正しいことを確認してください(これらのグループが存在し、パスはbashする権利です)。パスワードとユーザーのみでコマンドを実行し、userdelを使用して削除してから、さらにパラメーターを使用して再試行し、問題の原因を突き止めることができます(ブルートフォースアプローチ)。

newusers(manページを参照)もあります。少なくともUbuntuでは、プレーンテキストのパスワードを含む、infoのようなpasswdファイルを含むファイルを指定すると、それらのユーザーが作成されます。一度に多くのユーザーを実行するための素晴らしい方法。


newusersUbuntuのコマンドに言及するための+1
Levon

1

私が見つけた最も簡単な方法:


PASSWD="mySeCr3t-default-pa55" 
echo ${PASSWD} | passwd --stdin username_here

これもテストしましたか?passwd: unrecognized option '--stdin'
Cerin、2014年

はい、私はこれを何度も使用しましたが、他のほとんどのコマンドと同様に、当面の問題に対する事実上の解決策ではありません。passwdバイナリの一部のバリエーションは、-stdinスイッチをサポートしていません。
MelBurslan 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.