パスワードなしで(su)を別のユーザーアカウントに切り替える方法


このガイドでは、パスワードを必要とせずに別のユーザーアカウントまたは特定のユーザーアカウントに切り替える方法を示します。たとえば、postgresというユーザーアカウント(デフォルトのPostgreSQLスーパーユーザーシステムアカウント)があり、postgresというグループのすべてのユーザー(通常はPostgreSQLデータベースとシステム管理者)が su <を使用してpostgresアカウントに切り替える必要があります。パスワードを入力せずに/ code>コマンド。

デフォルトでは、rootユーザーのみがパスワードを入力せずに別のユーザーアカウントに切り替えることができます。他のユーザーは、切り替え先のユーザーアカウントのパスワードを入力するように求められます(または、sudoコマンドを使用している場合は、パスワードの入力を求められます)。正しいパスワードを入力しないと、次のようになります。次のスクリーンショットに示すように、「認証に失敗しました」エラー。

上記の問題を解決するには、以下に示す2つのソリューションのいずれかを使用できます。

1.PAM認証モジュールの使用

PAM(Pluggable authentication modules)は、最新のLinuxオペレーティングシステムのユーザー認証の中核です。特定のグループのユーザーがパスワードなしで別のユーザーアカウントに切り替えられるようにするために、/ etc/pam.d/suファイルのsuコマンドのデフォルトのPAM設定を変更できます。

# vim /etc/pam.d/su
OR
$ sudo vim /etc/pam.d/su

次のスクリーンショットに示すように、「auth十分なpam_rootok.so」の後に次の構成を追加します。

auth       [success=ignore default=1] pam_succeed_if.so user = postgres
auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

上記の構成では、最初の行はターゲットユーザーがpostgresであるかどうかをチェックし、そうである場合、サービスは現在のユーザーをチェックします。そうでない場合、 default u003d 1 行はスキップされ、通常の認証手順が実行されます。 。

auth       [success=ignore default=1] pam_succeed_if.so user = postgres

次の行は、現在のユーザーがグループpostgresに属しているかどうかを確認し、 yes の場合、認証プロセスは成功したと見なされ、結果として十分な結果を返します。それ以外の場合は、通常の認証手順が実行されます。

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

ファイルを保存して閉じます。

次に、usermodコマンドを使用して、パスワードなしでアカウントpostgresに su するユーザー(たとえばaaronk)をグループpostgresに追加します。

$sudo usermod -aG postgres aaronk

次に、ユーザーaaronkとしてpostgresアカウントに su を試みます。次のスクリーンショットに示すように、パスワードの入力を求められることはありません。

$ su - postgres

2.Sudoersファイルの使用

sudoersファイルにいくつかの変更を加えることで、パスワードを必要とせずに別のユーザーに su することもできます。この場合、別のユーザーアカウント(postgresなど)に切り替えるユーザー(aaronkなど)は、sudoコマンドを呼び出すことができるようにsudoersファイルまたはsudoグループに存在する必要があります。

$ sudo visudo

次に、次のスクリーンショットに示すように、“%sudo ALL u003d(ALL:ALL)ALL” の行の下に次の構成を追加します。

aaronk ALL=NOPASSWD: /bin/su – postgres

ファイルを保存して閉じます。

ここで、ユーザーaaronkとしてアカウントpostgresに su を試みます。シェルは、パスワードの入力を求めるプロンプトを表示しません。

$ sudo su - postgres

それは今のところすべてです!詳細については、PAMのマニュアルエントリページ(man pam.conf)およびsudoコマンドのマニュアルエントリページ(man sudo)を参照してください。

$ man pam.conf
$ man sudo