如何防止用户访问自己的主目录以外的任何内容?


22

如何防止用户访问自己的主目录以外的任何内容?

例如,我在下安装了一个NTFS分区/media/ntfs,因此,如果用户通过ssh登录,则可以访问该分区。如何禁止用户cd离开其主目录?

Answers:


22

首先重新评估您的要求。您要解决的问题是什么?为什么要阻止用户离开其主目录?难道不是您不希望他们通过特定的其他目录(例如其他用户的主目录)进行漫游吗?

阻止用户离开其主目录非常困难。实际上,这也有点愚蠢(解释如下)。阻止用户输入您不希望他们输入的目录要简单得多。

首先,是的,您可以为用户提供所谓的受限外壳,请参见man rbash。这样可以防止它们在cd其他地方-ing,但是只能在该shell内。如果用户启动vinano(或任何其他能够打开文件的程序),他们可以再次在系统上的任何位置打开文件。实际上,受限制的外壳不能防止例如cat /etc/passwd

下一步是根监狱。有关社区Wiki此问题的更多信息。尽管根监狱将用户锁定在围墙花园内,在其中他们只能访问您故意放置在其中的文件和命令,但根监狱实际上是用于隔离不受信任的软件而不是用户。特别是,它们适用于需要以提升的特权运行的软件-因此是监狱。

另一方面,用户是受信任的:他们必须在没有提升特权的情况下进行身份验证运行。因此,文件许可权足以防止他们更改不拥有的文件,以及避免看到他们一定看不到的东西。为防止用户阅读文件的内容,请使用删除文件的全球可读性chmod o-r FILE。要使用户不在目录中,请使用使其无法访问chmod o-rwx DIR

但是,出于默认原因,世界可读性是默认设置:用户实际上需要文件系统上的大多数内容。不要仅仅因为外面存在秘密而将用户锁定在家里。

为什么将用户锁定在其主目录中有点愚蠢

为了做任何有用的事情,用户需要访问命令和应用程序。这些都是一样的目录/bin/usr/bin,所以,除非你从他们那里需要的所有命令复制到自己的主目录,用户将需要访问/bin/usr/bin。但这仅仅是开始。应用程序需要从图书馆/usr/lib/lib,而这又需要访问系统资源,这是在/dev中,并配置文件/etc/usr/share

这只是只读部分。应用程序也希望/tmp并且经常/var要写入。因此,如果要将用户限制在其主目录中,则必须将很多内容复制到该目录中。实际上,您可以找到位于的几乎整个基础文件系统/


2
这对我来说没有任何意义,可能有很多原因导致您希望用户只能访问1个文件夹。一个示例可能是为了将文件从一台服务器传输到另一台服务器而进行访问。我宁愿认为任何用户都可以浏览整个系统有点愚蠢
理查德(Richard)

以我为例,我正在设置一个用户,以允许设备将ssh反向进入计算机以进行设备的远程管理。因此,我想尽可能地限制该用户帐户,以防万一遭到破坏-我只需要建立成功的连接即可。我不会说这很愚蠢,这取决于您要完成的工作。
约翰(John)

7

我需要提供访问用户sam/var/xyz里面其他的文件夹只和块挂牌内容/var/

我使用了以下命令序列:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

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

因此,用户可以看到列出的目录,/var/但不能看到子目录下的内容/var/xyz


2
欢迎来到askubuntu!我不认为这是有关主目录的问题的答案。
年长者怪胎

3
@ElderGeek OP不能只使用相同的命令,而是使用主目录吗?
塞斯

@Seth是的,但是对普通用户来说清楚吗?
2015年

3
@Elder是的,我相信会的。不完美,但仍然是答案
Seth

1

除了限制对其他目录(尤其是其他用户的主目录)的访问之外,我也不想让用户ll /home看到系统上其他用户的名称。

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


尽管不是严格地回答问题,但这仍然非常有趣...在操作客户端可以连接到的远程服务器的情况下,这很棒。他们仍然可以按照自己的意愿四处走动,同时保留其他客户用户名的隐私。
Jack_Hu
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.