是否可以仅通过 sudo 为特定的 Bash 脚本授予用户权限?

Yve*_*ves 3 users permissions

我是 Ubuntu 16.04.3 的管理员。

在这个系统上,有很多用户,他们在 sudoers 列表中。我在想是否可以进行如下配置:

我想为每个用户创建一个 Bash 脚本,每个用户只能执行这个脚本。

总之,每个用户都可以告诉我他们想要做什么,我将其放入Bash脚本中。当他们登录时,他们只能执行此脚本。

slm*_*slm 5

初始设置

您可以像这样设置脚本:

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

whoami
Run Code Online (Sandbox Code Playgroud)

并添加一个文件,/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
Run Code Online (Sandbox Code Playgroud)

示例运行

现在,当我们以以下身份登录时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
Run Code Online (Sandbox Code Playgroud)

我们可以看到这个用户只被允许执行 1 命令user1.bash。如果我们运行它。我们可以看到这个用户能够运行脚本:

$ sudo /usr/local/bin/user1.bash
root
Run Code Online (Sandbox Code Playgroud)

但不能运行其他任何东西:

$ sudo whoami
[sudo] password for user1:
Sorry, user user1 is not allowed to execute '/bin/whoami' as root on centos7.
Run Code Online (Sandbox Code Playgroud)

参考