Linux

Linux文件權限混淆

  • June 16, 2021

我的主文件夾包含 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 上的方式,但這在我看來是一項非常複雜的任務,幾乎沒有明顯的好處。

引用自:https://unix.stackexchange.com/questions/654506