GNU/Linux >> Linux の 問題 >  >> Linux

パスワードが空のユーザーに切り替えるために`su`を使用できないのはなぜですか?

testという名前の新しいアカウントを作成します :

$ sudo useradd test

テスト 現在、パスワードはありません。だから

$ su test

動作しません。試してみると、 testを求められます のパスワード。ありません。これは、パスワードが空であることと同じではないため、Enterキーを押して空のパスワードを入力すると、「su:認証に失敗しました」というメッセージが表示されます。

ttyに切り替えて、 testとしてログインしようとした場合も同じです。 :空のパスワードは使用できません。

次に、 testを割り当てます 空のパスワード:

$ sudo passwd -d test

これで、 testとしてログインできます。 パスワードとして空の文字列を提供することにより、ttyで。ただし、試してみると

$ su test

繰り返しになりますが、「su:認証に失敗しました」というメッセージが表示されますが、セッションはユーザーの testに切り替わりません。 。

なぜですか?

承認された回答:

ldd / bin / suの出力から 、 su バイナリはpamでコンパイルされます ライブラリ( libpam * )、したがって、認証、アカウント管理、セッション開始などは pamによって管理されます。 。

以下は、典型的なUbuntuシステムの su pamによって管理されています 、別のディストリビューションを使用している場合は、同様のアプローチを見つける必要があります。

pam suのルール ファイル/etc/pam.d/suで定義されています 。このファイルには、 common-authも含まれています 、 common-passwd common-session それらの名前が示唆する(そして他の pam で使用される)タスクをカバーするための一般的なテンプレートと同じディレクトリからのファイル 有効なサービス)。

私のシステムでは、 /etc/pam.d/suの下部にあります 私が持っている:

@include common-auth
@include common-account
@include common-session

前の行はnullパスワードチェックを扱っていません。これは主にpam_unixの仕事です。 モジュール。

/etc/pam.d/common-auth 持っている:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure

man pam_unixから :

nullok

このモジュールのデフォルトのアクションは、公式パスワードが空白の場合、ユーザーにサービスへのアクセスを許可しないことです。 nullok引数はこのデフォルトを上書きし、
空白のパスワードを持つすべてのユーザーがサービスにアクセスできるようにします。

nullok_secure

このモジュールのデフォルトのアクションは、公式パスワードが空白の場合、ユーザーにサービスへのアクセスを許可しないことです。 nullok_secure引数はこのデフォルトをオーバーライドし、PAM_TTYの値が/ etc / securettyにある値のいずれかに設定されている限り、
パスワードが空白のユーザーがサービスにアクセスできるようにします。

nullok_secureかどうかを確認できます 環境変数PAM_TTYでない限り、オプションが設定されます 上記の方法で設定されている場合、パスワードがnullのユーザーは、 suを使用してログインすることはできません。 。

したがって、パスワードがnullのユーザーが suを実行できるようにするため 、 nullokが必要です pam_unixへの引数 モジュール:

auth    [success=1 default=ignore]      pam_unix.so nullok

これはcommon-authとして安全ではありません ファイルは、 su だけでも、他の多くのサービスで使用されます これは行われるべきではありません。 (テストのために、一度設定してから元に戻すことができます。ただし、テストを実行する場合は、すべてのロジックを /etc/pam.d/suに組み込むことをお勧めします。 ファイルを作成し、 common- * をいじるのではなく、後で変更を修正します。 ファイル)

関連:コマンド「date-d@xxxxxx」と「find./」をチェーンする方法は?
Linux
  1. xtermを使い続ける理由

  2. パスワードハッシュとその必要性

  3. sshpassを使用したLinuxでのSSHパスワードの自動化

  1. passwdコマンドを使用したLinuxユーザーの管理

  2. パスワードでSSHログインを無効にする方法

  3. Linux で空のパスワードで ssh を許可する方法

  1. Linuxでduを使用して使用済みディスク容量を確認する

  2. BashスクリプトでCdを使用できないのはなぜですか?

  3. 一部のユーザーのパスワードを使用した SSH ログインを無効にする方法は?