Linux文件权限混乱

Linux文件权限混乱

我的主文件夹包含 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 的使用方法,但在我看来,这是一项极其复杂的任务,几乎没有什么明显的好处。

相关内容