![创建只能访问同一系统的其他用户中存在的文件夹和子文件夹的用户](https://linux22.com/image/76172/%E5%88%9B%E5%BB%BA%E5%8F%AA%E8%83%BD%E8%AE%BF%E9%97%AE%E5%90%8C%E4%B8%80%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%85%B6%E4%BB%96%E7%94%A8%E6%88%B7%E4%B8%AD%E5%AD%98%E5%9C%A8%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%E5%92%8C%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E7%94%A8%E6%88%B7.png)
我的 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 的解决方案。