限制用户执行选择性命令(Linux)

限制用户执行选择性命令(Linux)

我如何限制我的用户仅执行选择性命令。我在 tomc 组中有一个用户 tomc。我需要此用户成为 sudo 用户,然后使用受限 bash。我尝试了/etc/sudoers文件中的以下代码,但它不起作用,因为用户可以执行其他命令,例如mkdirrm

%tomc ALL=/bin/bash,/usr/bin/vim /*

答案1

你可能做错了。你不应该给用户一个“受限”的 bash shell,而应该只给他们以 root 身份运行所需命令的权限。例如,在你的 sudoers 文件中:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

允许用户以 root 身份运行 vim 时要小心。Vim 有很多内置功能,比如转入 shell 和在 vim 中运行命令的能力。根据您的发行版,您可能可以sudoedit使用这些功能。它的工作原理与普通 Vim 相同,只是它被设计用于处理 shell 转义等。

答案2

在运行 DSM 6 的 Synology Diskstation 上,只有管理员用户可以持续使用 ssh(非管理员用户的 shell 为 /etc/passwd 中的 /sbin/nologin——您可以将其设置为 /bin/sh 以暂时允许 ssh,但在重新启动时 /etc/passwd 文件将被重置)。因此,需要对仅用于执行 /sbin/poweroff 等操作的帐户进行某种 sudo 限制。/etc/sudoers 中的以下几行对我有用:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

翻译:禁止所有命令,然后只允许所需的命令(在这种情况下不要求输入密码)。

使用此配置,sudo 会要求输入密码,然后对于除白名单命令之外的命令会失败:

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 

相关内容