是否有可能编辑sudoers文件,以便用户可以使用sudo来执行除指定命令之外的任何命令? 我相信,我相信,sudoers文件可以被设置,以便用户只能执行给定的命令列表。
编辑:我真的要拿走的命令是暂停和重新启动…这让我觉得有特殊的系统调用停止和重新启动。 你可以把系统调用从用户? 如果没有,是因为unix系统调用的权限系统抽象忽略了这个吗?
另一种看待这个问题的方式是,如果用户拥有很大的不受限制的根访问权限,他们可以很容易地获得完全的根访问权限。
虽然你可能能够解决这个问题,但是很容易规避。
SElinux虽然是一种可能的方式,但它需要学习很多东西。
要做你想做的事情(保持用户窗体运行中止,重新启动和closures),你将不得不看看SElinux的东西,以防止用户做出这些系统调用。 否则,用户将首先运行/ bin / sh,然后运行/ bin / halt而不通过sudo。
通过sudologging他们所做的一切,大概你可以通过一些方法来解决这个问题,而不是再做一次。
Defaults logfile=/var/log/sudolog
会logging他们运行的所有命令,谷歌有点更多的信息。
是和否…您可以通过在文件前加一个(b)(!)来防止用户运行特定的文件,但是不能阻止用户将文件复制到另一个位置,然后从那里运行文件。
User_Alias ADMINS = peter, bob, bunny, %operator ADMINS ALL = !/usr/bin/su, !SHELLS
作为另一个用户授予对特定文件的访问权限
如果用户真的想重新启动,他会find一个方法。 sudo -s , sudo -i , sudo $EDITOR /etc/sudoers …可以用来删除你的限制。
而在类Unix系统上,只要你是root用户(uid 0),你就可以重启系统。 如果您确实find了限制这些系统调用的方法,那么可以这样做:
用户$ echo b | sudo tee / proc / sysrq-trigger
或其变体。 或者通过引起内核恐慌重启。 要么…
最后,拥有root权限通常可以让你去除任何限制。
当然,以root身份调用visudo并阻止“user”运行/ sbin / halt:
user ALL=(ALL) NOPASSWD: !/sbin/halt
这样做是有风险的:通常可以采取相同的行动。 例如,telnit 6或init 6也会重启。 可能有强制内核进行核心转储和重启的方法。
下面这行应该让用户“jim”运行除/ usr / bin / kill和/ usr / bin / su之外的所有内容。
jim ALL= !/usr/bin/kill,!/usr/bin/su
这是未经testing和YMMV,但是如何设置您不想运行的命令的cmd_list然后使用!cmd_list指定的组/用户?
我没有进入testing这个,只是在Sudoers手册在网上看手册页,所以有些专家会纠正我在这里,如果我错了