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

OHL*_*ÁLÁ 33 permissions users

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

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

zwe*_*ets 26

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

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

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

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

另一方面,用户是受信任的:他们必须在没有提升权限的情况下进行身份验证运行。因此,文件权限足以阻止他们更改不属于他们的文件,并阻止他们看到他们不应该看到的东西。为防止用户阅读文件内容,请使用chmod o-r FILE. 要让用户远离目录,请使用chmod o-rwx DIR.

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

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

为了做任何有用的事情,用户需要访问命令和应用程序。它们位于/binand 之类的目录中/usr/bin,因此除非您将他们需要的所有命令从那里复制到其主目录,否则用户将需要访问/binand /usr/bin。但这只是开始。应用程序需要从图书馆/usr/lib/lib,而这又需要访问系统资源,这是在/dev中,并配置文件/etc/usr/share

这只是只读部分。应用程序也需要/tmp并且经常/var写入。因此,如果您想将用户限制在他的主目录中,您将不得不向其中复制很多内容。事实上,几乎整个基本文件系统——您已经拥有,位于/.

  • 这对我来说没有意义,您希望用户只能访问 1 个文件夹的原因可能有很多。一个示例可能是为了将文件从一台服务器传输到另一台服务器而授予访问权限。我宁愿认为任何用户都可以浏览整个系统是*有点愚蠢*。 (9认同)

小智 12

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

我使用了以下命令序列:

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

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/
Run Code Online (Sandbox Code Playgroud)

所以用户可以看到下面列出的目录,/var/但不能看到子目录下的内容,除了/var/xyz.

  • @ElderGeek OP 不能只使用相同的命令,但对于主目录吗? (5认同)
  • @Elder 是的,我相信会的。不完美,但仍然是一个答案 (4认同)
  • 欢迎来到 askubuntu!我不认为这是对有关主目录的问题的回答。 (2认同)

小智 6

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

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


小智 5

要完成@Willman 的回答,您只需执行以下操作:

首先,对于不列出所有用户主目录的用户:

chmod 701 /home
Run Code Online (Sandbox Code Playgroud)

但是如果您知道用户主目录的路径,您仍然可以使用cd.

因此,您可以只使用chmod 750所有已创建的用户目录。

但是我们在这里想要的是防止任何用户的主目录对其拥有755权限。有一个文件负责配置新用户/etc/adduser.conf::

只需更改DIR_MODE=0755DIR_MODE=0750