如何阻止用户访问除自己主目录之外的任何内容?

如何阻止用户访问除自己主目录之外的任何内容?

例如,我在/media/ntfs下安装了一个NTFS分区,因此如果用户通过ssh登录,他可以访问此分区。 如何禁止用户从其主目录中删除?

首先重新评估您的要求。 你想解决的问题是什么? 为什么要阻止用户离开他们的主目录? 是不是你不希望他们翻阅特定的其他目录 – 比如其他用户的主目录?

阻止用户离开他们的主目录是非常困难的。 它实际上有点傻(解释如下)。 防止用户输入您不希望他们输入的目录要简单得多。

首先,是的,你可以给用户一个所谓的限制shell ,请参阅man rbash 。 这将阻止他们在其他地方进行cd -ing,但仅限于在shell中。 如果用户启动vinano (或任何其他能够打开文件的程序),他们可以再次打开系统上的任何位置的文件。 事实上,受限制的shell不会阻止例如cat /etc/passwd

下一步是根监狱。 有关社区维基和此问题的更多信息。 虽然根监狱会将用户锁定在有围墙的花园内,除了你故意放在那里的文件和命令之外,他们只能访问它们,但根管理器确实用于隔离不受信任的软件而不是用户。 特别是,它们适用于需要以提升的权限运行的软件 – 因此是一个监狱。

另一方面,用户是受信任的 :他们必须在没有提升权限的情况下进行身份validation运行。 因此,文件权限足以阻止他们更改他们不拥有的文件,并且不会看到他们看不到的内容。 要防止用户阅读文件内容,请使用chmod or FILE删除其世界可读性。 要使用户远离目录,请使用chmod o-rwx DIR使其无法访问。

世界可读性是默认值,但有充分理由:用户实际上需要文件系统上的大部分内容。 不要仅仅因为外面有秘密就把用户锁在家里。

为什么将用户锁定在他们的主目录中有点傻

要做有用的事情,用户需要访问命令和应用程序。 它们位于/bin/usr/bin ,因此除非您将所需的所有命令从那里复制到其主目录,否则用户将需要访问/bin/usr/bin 。 但那只是一个开始。 应用程序需要来自/usr/lib/lib ,而这些/lib又需要访问/dev系统资源以及/etc/usr/share配置文件。

这只是只读部分。 应用程序还需要/tmp和经常/var写入。 因此,如果您想在用户主目录中约束用户,则必须将其复制到其中。 事实上,几乎整个基本文件系统 – 你已经拥有,位于/

我只需要提供对/var/xyz上用户sam访问权限,并阻止列出/var/中其他文件夹的内容

我使用了以下命令序列:

 setfacl -R -m user:sam:--- /var/ setfacl -m user:sam:rx /var/ setfacl -R -m user:sam:rwx /var/xyz/ 

因此,用户可以看到/var/下列出的目录,但是除了/var/xyz之外,无法查看子目录下的内容。

除了限制对其他目录(特别是其他用户的主目录)的访问之外,我还不希望用户ll /home并查看系统上其他用户的名称。

为了防止这种情况,以root运行chmod 701 /home 。 这使得/home目录本身“读/写/执行”为root,但只对其他人“执行”。 /home仍可访问cd ,但用户无法读取其内容 – 其他用户的主文件夹,因此也无法读取用户名。