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 組內的人之外,沒有人可以對 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*
所有文件訪問都取決於文件的權限和它所在的目錄層次結構。
雖然有幾種方法可以實現您想要的結果,但這些方法並不重要,您可能會破壞伺服器安全性的其他部分。例如,您可以將 guest 的 homedir 設置為 /other/guest - 但是為了將它們排除在 /home 之外,您需要創建一個包含所有其他使用者的組,並將 /home 的組所有權設置為該組和 chmod o- rwx /首頁。但你還沒有完成。除了文件系統權限之外,您的 Ubuntu 機器還有一個名為 apparmor 的安全子系統——它使用更集中的對象(不僅僅是文件)使用者數據庫和連結它們的權限——這也需要更新。
我想我知道我在 Linux 上的方式,但這在我看來是一項非常複雜的任務,幾乎沒有明顯的好處。