有什么方法可以禁止在 Linux 中从主目录执行文件吗?我的目标是保护我的系统免受恶意脚本等的侵害。当然,我可以使用 chmod 删除执行位/home/user
及其所有子目录,但它很容易更改,因为user
它是/home/user
.所以我考虑只允许从bin
、/usr/bin
、执行usr/sbin
,并禁止从其他目录执行。我的系统是 Debian 8。
答案1
如果
/home
是一个单独的分区,您可以使用选项挂载它noexec
。通过这样做,您正在为您的用户破坏(或试图)UNIX 系统的大部分功能,因为它会禁用所有用户编写的脚本,而不仅仅是“恶意”脚本。对于 UNIX 用户来说,编写脚本来完成工作是一件非常正常的事情。
它仍然不能阻止他们编写脚本并使用
bash myscript.sh
或perl myscript.pl
等等执行它们。如果您对用户没有至少最低限度的信任,请不要给他们 shell,或者给他们一个受限制的 shell,例如
/bin/rbash
代替/bin/bash
.
答案2
可以做到这一点的一种方法是为用户设置一个有限的 shell - 例如使用lshell
。也可以看看受限外壳。
基本上,您将登录 shell 设置为 ,而不是/usr/bin/lshell
,bash
然后您可以通过为每个用户配置它/etc/lshell.conf
以仅允许执行某些内容。
但是,这可能会破坏大多数无需扩展配置的用户可用的程序 - 也可以使某些程序执行自定义命令,这些命令可能可用于摆脱有限的 shell。
因此,如果您在系统上设置了正确的权限(并且没有sudo
访问权限,另请参阅polkit
允许的内容),他们应该能够使用标准登录 shell,而不会影响系统的其余部分。
注意,我知道不受信任的用户可以访问系统的另一种方法是每天左右重新镜像整个系统。但对于大多数情况来说不太实用。