Sudoユーザーの「su」アクセスを無効にする方法


suコマンドは、別のユーザーおよびグループとしてコマンドを実行できるようにする特別なLinuxコマンドです。また、rootアカウント(引数なしで実行された場合)または別の指定されたユーザーアカウントに切り替えることもできます。

デフォルトでは、すべてのユーザーがsuコマンドにアクセスできます。ただし、システム管理者は、以下で説明するようにsudoersファイルを使用して、ユーザーまたはユーザーのグループのsuアクセスを無効にすることができます。

sudoersファイルは、ユーザーのsudo権限を決定するsudoセキュリティポリシープラグインを駆動します。 sudoコマンドを使用すると、ユーザーは別のユーザー(デフォルトではrootユーザー)のセキュリティ権限でプログラムを実行できます。

別のユーザーアカウントに切り替えるには、図のように、ユーザーは現在のログインセッションからsuコマンドを実行できます。この例では、ユーザーaaronkがtestuserアカウントに切り替えています。ユーザーaaronkは、testuserアカウントのパスワードを入力するように求められます。

$ su testuser

rootアカウントに切り替えるには、ユーザーはrootパスワードを持っているか、sudoコマンドを呼び出す権限を持っている必要があります。つまり、ユーザーはsudoersファイルに存在する必要があります。この例では、ユーザーaaronk(sudoユーザー)がrootアカウントに切り替えています。

sudoを呼び出した後、ユーザーaaronkは自分のパスワードを入力するように求められます。パスワードが有効な場合、ユーザーはrootとしてインタラクティブシェルへのアクセスを許可されます。

$ sudo su

SudoユーザーのsuAccessを無効にする

上記のaaronkユーザーなどのsudoユーザーのsuアクセスを無効にするには、まず、/ etc/sudoersにある元のsudoersファイルを次のようにバックアップします。

$ sudo cp /etc/sudoers /etc/sudoers.bak

次に、次のコマンドを使用してsudoersファイルを開きます。 sudoersファイルを手動で編集することはお勧めしません。常にvisudoコマンドを使用してください。

 
$ sudo visudo

コマンドエイリアスのセクションで、次のエイリアスを作成します。

Cmnd_Alias DISABLE_SU = /bin/su

次に、ファイルの最後に次の行を追加し、ユーザー名aaronkをsuアクセスを無効にするユーザーに置き換えます。

aaronk ALL=(ALL) NOPASSWD: ALL, !DISABLE_SU

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

次に、テストして、セットアップが次のように機能していることを確認します。システムは次のようなエラーメッセージを返す必要があります:「申し訳ありませんが、ユーザーaaronkはtecmintのrootとして「/ bin/su」を実行できません。」

$ sudo su

SudoユーザーのグループのsuAccessを無効にする

sudoユーザーのグループのsuアクセスを無効にすることもできます。たとえば、グループadminのすべてのユーザーのsuアクセスを無効にするには、次の行を変更します。

%admin ALL=(ALL) ALL

これに:

%admin ALL=(ALL) ALL, !DISABLE_SU

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

管理者グループにユーザーを追加するには、usermodコマンドを実行します(ユーザー名を実際のユーザーに置き換えます)。

$ sudo usermod -aG  admin  username

su、sudo、およびsudoersの詳細については、manページを確認してください。

$ man su
$ man sudo
$ man sudoers