我的 ubuntu 系统上有 2 个用户,User1 和 User2。
我在 User1 中有一个目录(文件夹)/home/User1/Software
,我想将此软件文件夹设置为用户 2 的主目录,以便每当用户 2 登录时,他只能看到该软件文件夹,该文件夹也只能对其进行读取访问。
如果我们通过 User2 远程登录该系统,我们将直接迁移到仅具有读取权限的 software 文件夹,并且无法访问除 Software 及其子文件夹之外的任何其他文件夹。
答案1
您需要更改 User2 的帐户,以便它使用受限制的 shell,例如rbash
.
sudo chsh -s /bin/rbash User2
注意:这只会限制用户的命令行 shell(包括通过 登录ssh
)。它不会影响他们的 GUI 桌面环境,例如,如果他们登录到控制台。
请参阅 参考资料man rbash
获取更多详细信息,但一些限制是阻止用户:
· 用cd改变目录
· 设置或取消设置 SHELL、PATH、ENV 或 BASH_ENV 的值
· 指定包含 / 的命令名称
· 指定包含 / 作为 .内置命令
· 使用 >、>|、<>、>&、&> 和 >> 重定向运算符重定向输出
· 使用 exec 内置命令将 shell 替换为另一个命令
这些限制在读取任何启动文件后强制执行。
阻止重定向可能超出了您的需求(或者可能不是,因为无论如何该目录都是只读的),但不幸的是,rbash
它要么全部要么全无。
答案2
如何防止用户看到目录下/home
除自己的文件之外的任何文件
通过管理您不希望用户看到的目录的文件权限来实现此目的。
为用户提供唯一的登录名和组名。检查他们是否对系统没有所有权;获取他们的数字用户 ID 和组 ID 并运行:
sudo find / -uid n -o -gid n
使 下的所有文件/home
只能由 和 访问,user
而group
不能访问other
。
sudo chmod -R o-rwx /home
要允许系统上的其他用户查看彼此在 下的文件/home
,请将它们全部添加到一个公共组中,例如users
,并将其设置umask
为 002(通常是默认值)。
如果您需要比这更多的限制,您可以研究涉及 rbash 和/或 chroot 的解决方案。