このガイドでは、パスワードを必要とせずに別のユーザーアカウントまたは特定のユーザーアカウントに切り替える方法を説明します。たとえば、 postgresというユーザーアカウントがあります (デフォルトの PostgreSQL スーパーユーザーシステムアカウント)、すべてのユーザー(通常は PostgreSQL )が必要です postgres というグループのデータベースおよびシステム管理者) postgresに切り替えるには su
を使用するアカウント パスワードを入力せずにコマンドを実行します。
デフォルトでは、rootユーザーのみがパスワードを入力せずに別のユーザーアカウントに切り替えることができます。他のユーザーは、切り替え先のユーザーアカウントのパスワードを入力するように求められます(または、sudoコマンドを使用している場合は、パスワードの入力を求められます)。正しいパスワードを入力しないと、次のようになります。 「認証に失敗しました 次のスクリーンショットに示すように、」エラー。
上記の問題を解決するには、以下の2つのソリューションのいずれかを使用できます。
1。 PAM認証モジュールの使用
PAM (プラガブル認証モジュール )は、最新のLinuxオペレーティングシステムでのユーザー認証の中核です。特定のグループのユーザーがパスワードなしで別のユーザーアカウントに切り替えられるようにするために、suコマンドのデフォルトのPAM設定を変更できます。 /etc/pam.d/suにあります ファイル。
# 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=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
ファイルを保存して閉じます。
次に、ユーザーを追加します(たとえば、 aaronk )su
したいこと アカウントにpostgres グループへのパスワードなしpostgres usermodコマンドを使用します。
$sudo usermod -aG postgres aaronk
次に、su
を試してください postgresへ ユーザーとしてのアカウントaaronk 、次のスクリーンショットに示すように、パスワードの入力を求められないようにする必要があります。
$ su - postgres
2。 Sudoersファイルの使用
su
もできます sudoersファイルにいくつかの変更を加えることにより、パスワードを必要とせずに別のユーザーに送信します。この場合、ユーザー(たとえば、 aaronk )別のユーザーアカウントに切り替えるユーザー(例: postgres )sudoコマンドを呼び出せるようにするには、sudoersファイルまたはsudoグループに含まれている必要があります 。
$ sudo visudo
次に、“%sudo ALL=(ALL:ALL) ALL”
の行の下に次の構成を追加します。 次のスクリーンショットに示すように。
aaronk ALL=NOPASSWD: /bin/su – postgres
ファイルを保存して閉じます。
次に、su
を試してください アカウントにpostgres ユーザーとしてaaronk 、シェルはパスワードの入力を求めるプロンプトを表示しないはずです:
$ sudo su - postgres
それは今のところすべてです!詳細については、PAMのマニュアルエントリページ( man pam.conf )を参照してください。 )およびsudoコマンドの 同様に( man sudo 。
$ man pam.conf $ man sudo関連記事 :Linuxで「sudo」を設定するための10の便利なSudoers構成