如何让用户“Y”仅在执行脚本“X”时在文件夹“A”中写入?

如何让用户“Y”仅在执行脚本“X”时在文件夹“A”中写入?

我如何让用户写入文件夹A仅在执行脚本时X

答案1

我相信这将要求程序 X 具有 setuid 权限,并且属于对文件夹 A 具有写权限的用户 UA。然后,当调用 X 时,它将作为 UA 运行,无论它是由哪个用户调用的。

大多数 shell(可能是全部)都不会让脚本具有 setuid 权限,除非 X 是二进制文件,否则它们只会忽略该权限位。当然 x 可以是只执行一些单独脚本 X.sh 的二进制包装器。

你不应该将 setuid X 设置为如果不必的话。您可以让具有较低权限的用户 UA 可以写入文件夹 A。

或者,您可以使文件夹 A 可由专用组写入,并将 X 分配给该组,并在 X 上使用 setgid 而不是 setuid。

答案2

这个问题在游戏中很常见 - 例如,nethack 有“骨头”文件和高分表,这些文件和表应该由游戏写入,但任何非管理员用户都无法写入。这可以通过执行 setgid 来实现。

http://nethack.wikia.com/wiki/Setgid有关于此系统的简要说明。优点是利用 nethack 只能获得组游戏权限,而不是用户 root 权限。

答案3

有脚本怎么样X写入 /usr/bin,但作为用户用于此特定目的的用户帐户是哪一个?

当然,这意味着使用粘滞位,这本身就有安全隐患,但你可以锁定用户(无需登录,/usr/bin 以外的权限非常受限,等等)

我并不是 Linux 安全方面的佼佼者,但这是我在短时间内能想到的唯一办法。

许多应用程序执行权限分离 - 它们以非特权用户身份执行所有操作,然后需要 root 权限的一两个操作实际上由单独的进程完成。(或者:以 root 权限启动,执行需要 root 权限的一两件事,然后放弃权限。)

我想到的另一个选择是 sudo。

相关内容