
私のスクリプトの1つで、別のコンピュータのディレクトリ配列に基づいてユーザーを作成します。
問題は、パスワードなしで作成されたこのユーザーがパスワードがあるかのように動作することです。彼はsudo権限を持っていますが、パスワードを要求するのでsudoをまったくできません。存在しない。単に彼をrootに設定できることを知っていますが、システムはローカルroot権限を持つユーザーの介入なしに動作するように設計する必要があります。
また、passwdはpasswdを提供する必要があるため、関連ユーザーとしてpasswdを使用することはできません。存在しないパスワードです。
これは予想される動作だと思います。しかし、最終的な基本パスワードは何であり、この問題を回避するにはどうすればよいですか?
編集:スクリプトが実行する作業は次のとおりです。
1:/opt/sshgw/homeで作成または更新する必要があるSSHゲートウェイシステムのユーザーホームディレクトリを同期します(sshgwはSSHゲートウェイを意味します)。
2:スクリプトを実行しているコンピュータのすべてのユーザーのすべての認証キーを削除します。
3: ホイールグループから各ユーザーを削除しますusermod -L 実行(私はスクリプト作成者ではなく、なぜ彼がアカウントをロックしたのかわかりません。)しかし、この時点でのみ既存のユーザーが修正されました。
4:ユーザーがsshgwから検索され、ローカルシステムに存在しない場合はユーザーが作成され、指定された場合はそのユーザーがホイールグループに追加されます。次に、公開鍵を正しいホームディレクトリに追加します。最後に、usermod -Uを実行します。。
/etc/passwdのユーザー入力は正常です。
passwdが呼び出されると、次のようにユーザーに現在のパスワードを求めるメッセージが表示されます(パスワードなしで作成したばかりのユーザーにはパスワードは存在できません)。
[splatpope@monitor sshgw]$ passwd
Changing password for user splatpope.
Changing password for splatpope.
(current) UNIX password:
犯人はusermod -Uだと思います。
答え1
デフォルトでは、ユーザーはロックされたアカウントで作成されます。パスワードハッシュを含める必要があるフィールドには/etc/shadow
含まれています!!
。アカウントがロックされている場合、そのアカウントはrootのみを使用できます(rootはsuできますがログインできません)。アカウントを「ロック解除」すると(削除のみ可能)、!!
パスワードを変更できます。
[root@test ~]# su - test
[test@test ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
[test@test ~]$ exit
logout
[root@test ~]# passwd -u test
Unlocking password for user test.
passwd: Warning: unlocked password would be empty.
passwd: Unsafe operation (use -f to force)
[root@test ~]# passwd -u test -f
Unlocking password for user test.
passwd: Success
[root@test ~]# su - test
[test@test ~]$ passwd
Changing password for user test.
New password:
答え2
ヨネックスの答え事実を扱った。はいデフォルトのパスワードはありません。
アカウントの作成時に新しく作成されたユーザーにパスワードを入力するには、次の手順を実行します。
useradd ... -p $(mkpasswd $Password) ... user_name
これは次のことを前提としています。
- このユーザーに提供したいパスワードは
$Password
変数にあります。 mkpasswd
パスワードを暗号化するユーティリティがあります(whois
私のDebianボックスのパッケージにあります)。
ただし、デフォルトの動作はアカウントを無効にすることです。引用元useradd(8)
:
-p, --password パスワード
crypt(3) によって返される暗号化されたパスワードです。デフォルトはパスワードを無効にすることです。