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


14

如何限制用户仅执行选择性命令。我在tomc组中有一个用户tomc。我需要这个用户成为sudo用户,然后要限制bash。我尝试了以下/etc/sudoers文件中的代码,但是由于用户能够执行其他命令(例如mkdirrm

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

3
尽管sudo的使用可能仅限于特定命令,但这可能很棘手,并且需要一定的信任。如果您不信任用户,那么给他们任何sudo访问权限是一个坏主意。它将为他们提供root特权,或者为他们提供专门的应用程序进行攻击以获得root特权。sudo bash在大多数情况下,让某人运行相当于拥有root密码。从sudo bash壳他们可以运行任何管理命令,安装或删除软件,删除用户和目录等
保罗

@Paul您可以为此建议我更好和更实用的选择吗?

首先,这是堆栈溢出问题。更好的地方包括超级用户,askubuntu或linux&unix。首先要弄清楚您要允许tomc做的事情。应该允许tomc做______,但不能________。然后问。Sudo适用于需要root(admin)priv的命令。他可以运行bash而无需以root用户身份运行它。
Paul

Answers:


18

您可能会走错路了。与其给用户一个“受限”的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逃逸等。


7
这些线都不安全。如您所述,vim可以运行任意的shell命令。第二行可能会允许less /var/log/myapp/../../../etc/shadow!根据我的实验,安全地使用sudo很难!但是,如果您可以避免*使用s并使用sudoedit代替,vim那么您可能会好的。
joeytwiddle

避免*是不够的!一旦less作为root用户,可以尝试输入!tail /var/log/secure。感觉如何?研究NOEXEC标签。但是,请谨记@joeytwiddle的信息:sudo的安全确实很难。
布鲁诺·布鲁诺斯基

3

在运行DSM 6的Synology Diskstation上,只有管理员用户才能一致地使用ssh(非管理员用户在/ etc / passwd中将shell作为/ sbin / nologin使用-您可以将其设置为/ bin / sh以临时允许ssh,但在重新启动时/ etc / passwd文件被重置)。由于这个原因,帐户需要某种sudo限制,否则只能执行/ sbin / poweroff。/ 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:~$ 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.