スクリプトは次のとおりです。
#!/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
ですから、事前に明確なユーザーリストはありません。
EDIT: OPがより多くの情報を提供した後、完全に書き直します。
/ etc/sudoersで、_/usr/sbin/Sudo
_を実行する権限を持つユーザーを指定します。
これにより、ユーザーはSudoコマンドを実行できますが、他のコマンドを実行する権限はありません。
CentOS-7.3.1611で新しいユーザーアカウントを使用してこれをテストしました。
testusr ALL=(ALL) NOPASSWD: /usr/sbin/Sudo
許可されたコマンドのリストでSudoコマンド自体を指定することによるセキュリティ上の影響があるかどうかはわかりません実稼働環境でこれに依存する前に、確認してテストしてください...安全でない可能性があります。
別のユーザーが(ALL)として任意のコマンドを実行できる場合にのみ、そのユーザーが実行できるコマンドを一覧表示できると思います。代わりに...
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