ウェブサイト検索

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


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

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

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

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

su testuser

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

sudo を呼び出した後、ユーザー aarnk はパスワードの入力を求められます。パスワードが有効であれば、ユーザーには root として対話型シェルへのアクセスが許可されます。

sudo su

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

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

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

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

 
sudo visudo

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

Cmnd_Alias DISABLE_SU = /bin/su

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

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

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

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

sudo su

Sudo ユーザーのグループの su アクセスを無効にする

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

%admin ALL=(ALL) ALL

これに:

%admin ALL=(ALL) ALL, !DISABLE_SU

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

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

sudo usermod -aG  admin  username

susudo、および sudoers の詳細については、マニュアル ページを確認してください。

man su
man sudo
man sudoers