sudoを介して特定のBashスクリプトにのみユーザー権限を付与できますか? [コピー]

sudoを介して特定のBashスクリプトにのみユーザー権限を付与できますか? [コピー]

私はUbuntu 16.04.3の管理者です。

このシステムには多くのユーザーがおり、それらはすべてsudoersリストにあります。次のように設定できるかどうか疑問に思います。

各ユーザーのためのBashスクリプトを作成したいと思います。各ユーザーは、このスクリプトを実行する以外は何もできません。

とにかく、各ユーザーは自分が何をしたいのかを教えて、それをBashスクリプトに入れます。ログインすると、このスクリプトを実行する以外は何もできません。

ベストアンサー1

基本設定

次のようにスクリプトを設定できます。

$ cat /usr/local/bin/user1.bash
#!/bin/bash

whoami

次のファイルを追加します/etc/sudoers.d

$ cat /etc/sudoers.d/users
user1            ALL = (ALL) NOPASSWD: /usr/local/bin/user1.bash
user2            ALL = (ALL) NOPASSWD: /usr/local/bin/user2.bash
user3            ALL = (ALL) NOPASSWD: /usr/local/bin/user3.bash

実行例

今ログインするとuser1

$ su - user1
$ sudo -l
Matching Defaults entries for user1 on centos7:
    always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
    LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User user1 may run the following commands on centos7:
    (ALL) NOPASSWD: /usr/local/bin/user1.bash

このユーザーは1つのコマンドしか実行できないことがわかりますuser1.bash。我々はそれを実行している場合。このユーザーがスクリプトを実行できることを確認できます。

$ sudo /usr/local/bin/user1.bash
root

しかし、他のものは実行できません。

$ sudo whoami
[sudo] password for user1:
Sorry, user user1 is not allowed to execute '/bin/whoami' as root on centos7.

引用する

おすすめ記事