我的主文件夹包含 2 个用户。 1 名管理员用户和 1 名访客。
我基本上希望来宾用户在通过 SSH 会话登录时无法将目录更改为自己的主文件夹之外的目录。
用户如下所示:
root@Ubuntu-2004-focal-64-minimal / # id olw
uid=1000(olw) gid=1002(olw) groups=1002(olw),1000(admins)
root@Ubuntu-2004-focal-64-minimal / # id guest
uid=1002(guest) gid=1001(guest) groups=1001(guest)
主目录:
drwxr-xr-x 5 root root 4096 Jun 16 11:01 home/
根据我的理解,这意味着其他人(不在根组中)可以读取或进入(执行)此目录。
在该目录中,文件系统如下所示:
drwxr-xr-x 5 root root 4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root 4096 Jun 14 16:13 ../
drwxrwx--- 2 root guest 4096 Jun 16 11:11 guest/
drwxr-x--- 4 olw admins 4096 Jun 15 16:12 olw/
因此,现在,一旦访客进入自己的主目录,就可以切换回主目录,因为 /home 对于其他人来说是可执行的。
我chmod o-rx home/
也将主文件夹的组更改为管理员。否则,除了 root 或 root 组内的人员之外,没有人可以对根文件夹执行任何操作。
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root 4096 Jun 14 16:13 ../
drwxrwx--- 2 root guest 4096 Jun 16 11:11 guest/
drwxr-x--- 4 olw admins 4096 Jun 15 16:12 olw/
现在奇怪的事情是:
当我切换到管理员时,一切正常。我可以进入我的主文件夹,然后出去;做所有事情,但使用 GUEST 帐户我会得到一个
oot@Ubuntu-2004-focal-64-minimal /home # su guest
bash: /home/guest/.bashrc: Permission denied
我什至无法读取默认的 .bashrc 文件或执行ls
命令。
我什至将访客主文件夹的权限切换为每个人的完全访问权限,最终得到:
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root 4096 Jun 14 16:13 ../
drwxrwxrwx 2 root guest 4096 Jun 16 11:11 guest/
drwxr-x--- 4 olw admins 4096 Jun 15 16:12 olw/
我仍然收到错误。我究竟做错了什么?我希望访客不能离开他自己的主目录,但我希望他看到他自己的主目录并能够在那里执行命令。为什么它与 olw 用户一起工作?
用户内部的文件系统如下所示
客人
drwxrwxrwx 2 root guest 4096 Jun 16 11:11 ./
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ../
-rw------- 1 guest guest 42 Jun 16 11:22 .bash_history
-rwxrwxrwx 1 root guest 220 Jun 15 15:00 .bash_logout*
-rwxrwxrwx 1 root guest 3771 Jun 15 15:00 .bashrc*
-rwxrwxrwx 1 root guest 0 Jun 15 15:00 .cloud-locale-test.skip*
-rwxrwxrwx 1 root guest 807 Jun 15 15:00 .profile*
-rwxrwxrwx 1 root guest 20 Jun 15 15:14 WELCOME.txt*
奥尔夫
drwxr-x--- 4 olw admins 4096 Jun 15 16:12 ./
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ../
-rwxr-x--- 1 olw olw 960 Jun 16 11:35 .bash_history*
-rwxr-x--- 1 olw olw 220 Jun 15 14:38 .bash_logout*
-rwxr-x--- 1 olw olw 3771 Jun 15 14:38 .bashrc*
drwx------ 2 olw olw 4096 Jun 15 15:54 .cache/
-rwxr-x--- 1 olw olw 0 Jun 15 14:38 .cloud-locale-test.skip*
drwxrwx--x 3 olw olw 4096 Jun 15 15:10 .local/
-rwxr-x--- 1 olw olw 807 Jun 15 14:38 .profile*
答案1
所有文件的访问都取决于文件的权限以及它所在的目录层次结构。
虽然有多种方法可以实现您想要的结果,但这些方法都很重要,并且您可能会破坏服务器安全性的其他部分。例如,您可以将 guest 的 homedir 设置为 /other/guest - 但为了将它们从 /home 中排除,您需要创建一个包含所有其他用户的组,并将 /home 的组所有权设置为该组并 chmod o- rwx /home。但你还没有完成。除了文件系统权限之外,您的 Ubuntu 机器还有一个名为 apparmor 的安全子系统 - 它使用更集中的对象(不仅仅是文件)用户数据库以及链接它们的权限 - 这也需要更新。
我想我知道 Linux 的使用方法,但在我看来,这是一项极其复杂的任务,几乎没有什么明显的好处。