我有一个甚至可以使用 sudo 的用户。我想限制他仅访问他的主目录。没有别的。我创建了一个“有限”组并将他移至该组。怎么办?
我该如何限制他只能访问他的主目录?
答案1
阻止某些特定的访问比默认阻止所有访问并为每种访问添加特定的例外要困难得多。甚至有一个朗朗上口的术语来形容这个原则。因此,请确保显式指定可以通过运行的命令,sudo
以便用户永远无法root
使用它。完成此操作后,您有几个选择:
限制目录权限(选项1)。确保
/
系统上根 ( ) 目录中的所有目录的执行位均已关闭允许团体。这通常意味着运行类似于以下内容的内容:$ chmod o-x <dir>
对于已经运行上述命令但具有该用户所属组的所有目录也执行相同的操作(至少是
limited
您问题中的组)。这意味着运行:$ chmod g-x <dir>
这种更改主要顶级目录上的目录执行权限可能不切实际:可能有一些重要的进程依赖于能够更改目录(例如,更改为
/
或/var
),而无需任何详细的权限设置。但你至少可以这样做几次私人的目录。使用 chroot 监狱(选项 2)。我认为现实的选择是使用 chroot 监狱,以便用户在登录后立即获取受限环境的信息。除了设置 chroot 环境之外,还必须适当配置 OpenSSH 服务器。这确实假设只能通过以下方式访问系统
ssh
。或者,您可以使用已经讨论过的 Jailkit这里。
答案2
在 Unix 中,即使要做最基本的事情,用户也需要访问各种资源(可执行文件、库、配置文件、手册页、示例……)。即使被认为是“普通命令”的东西,例如cp(1)
、ls(1)
、 ,也是由用户运行的常规程序,用户需要能够访问它们。用户需要对系统大部分内容的访问,如果被切断,就会使系统几乎毫无用处。
如果您希望用户无法翻阅其他用户的文件,则可以通过(现在是传统的)用户主目录的 Linux 配置来实现这一点:假设 Joe Sixpack 的用户是joe
。为他创建一个具有名称joe
和主要组的帐户(UID) ,他的家由和 组拥有,并且具有类似的权限(即,可以读取、写入和搜索;除了乔本人之外,组中没有人;并且没有其他人,可以做任何事情)。joe
joe
joe
dwrx------
joe
joe