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