パスワードなしで作成されたユーザーは、パスワードがあるかのように動作します。

パスワードなしで作成されたユーザーは、パスワードがあるかのように動作します。

私のスクリプトの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) によって返される暗号化されたパスワードです。デフォルトはパスワードを無効にすることです。

関連情報