我如何限制我的用户仅执行选择性命令。我在 tomc 组中有一个用户 tomc。我需要此用户成为 sudo 用户,然后使用受限 bash。我尝试了/etc/sudoers
文件中的以下代码,但它不起作用,因为用户可以执行其他命令,例如mkdir
,rm
%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:~$