ユーザーが特定のsudoコマンドを実行できないように制限する

ユーザーが特定のsudoコマンドを実行できないように制限する

以下はスクリプトです。

#!/bin/bash

user='my_sudo_user'
sudo -lU $user

non_sudo_userこのスクリプトを実行する能力を制限しようとしています。を使用してvisudo次のことを試しました。

non_sudo_user ALL=(ALL) NOPASSWD: /bin/bash /full/path/script.sh
non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -lU
non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -lU *   # unsafe

それらのどれも動作しません。次のメッセージが表示されます。

Sorry, user non_sudo_user is not allowed to execute 'list' as my_sudo_user on host123.

しかし、sudoerファイルに-lを提供しました。

どうですか?ところで、これはUbuntuです。

編集する:

実際に次のスクリプトを実行します。

for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU $u ; done

したがって、事前に明確なユーザーのリストはありません。

答え1

編集する: OPが追加情報を提供したら、書き換えを完了してください。

実行権限を持つ/ etc / sudoersにユーザーを割り当てます/usr/sbin/sudo

これにより sudo コマンドを実行できますが、他のコマンドを実行する権限はありません。

私は新しいユーザーアカウントを使ってCentOS-7.3.1611でこれをテストしました。

testusr ALL=(ALL) NOPASSWD: /usr/sbin/sudo

許可されたコマンドのリストにsudoコマンド自体を指定することがセキュリティに影響を与えるかどうかは不明です。 本番環境で使用する前に確認してテストしてください。安全ではないかもしれません。

答え2

そのユーザー全体で任意のコマンドを実行できる場合にのみ、他のユーザーが実行できるコマンドを一覧表示できると思います。だから代わりに...

sudoersから:

non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -l

そしてそれをリストするには、次のようにしますnon_sudo_user

for target_user in user1 user2 user3... ; do
    sudo -u "$target_user" sudo -l
done

関連情報