我有一個資料夾,裡面有關於系統的筆記。
我以 user1 登入
cd masternotes
產生:
bash: cd: mastersnotes: permission denied
whoami
產生:user1
ls -l
產生:
drw-rw-rw-. 2 user1 user1 4096 Mar 26 20:47 masternotes
ls -l
目錄內產生:
-rw-rw-rw-. 7 user1 user1 345 Oct 7 2006 crontab
-rw-rw-rw-. 7 user1 user1 348 Oct 7 2006 crontab~
-rw-rw-rw-. 7 user1 user1 3702 Oct 7 2006 grep_usage.txt
-rw-rw-rw-. 7 user1 user1 91868 Oct 7 2006 lvm-layout-10-14-03.tif
-rw-rw-rw-. 7 user1 user1 30 Oct 7 2006 mysql
-rw-rw-rw-. 7 user1 user1 35764 Oct 7 2006 notes
我已經chmod -R 666 masternotes
在該資料夾上運行了。
我已經運行chown
到 root 並chgrp
再次運行到 root,然後再次返回 user1。
root可以下行進入資料夾並開啟檔案。
user1 不能。
關於這裡發生的事情有任何線索嗎?
答案1
這是一個權限問題,而不是所有權問題。
您向我們展示的權限中明顯缺少執行權限(縮寫x
並出現在 中-
) 。rw-
執行權限對於目錄的工作方式與對於常規檔案的工作方式非常不同。對於目錄,執行權限能夠進入目錄(即,存取cd
它,或在檔案總管中開啟它)。它們還提供了嘗試存取目錄中的檔案的能力(儘管是否成功也取決於其他權限,有時包括正在存取的檔案的權限)。
root
之所以能夠進入該目錄,是因為它並沒有像通常的方式那樣真正受到權限的約束。在許多方面,運行的命令和應用程式root
將嘗試尊重權限,以便遵守用戶的意願。但root
有權對任何檔案或目錄執行任何操作(作業系統能夠執行的操作)。在root
shell 中,cd
進入沒有任何執行權限的目錄將會成功。
解決方案問題是運行:
chmod u+x masternotes
這賦予 ( +
) 所有者對該目錄的masternotes
( u
) 可執行權限 ( )。x
然後,您將能夠以普通使用者身分進入該目錄並嘗試存取其中的檔案。
如果您希望其群組擁有者的成員也能夠執行此操作,那麼您可以執行以下命令:
chmod ug+x masternotes
但您可能是特定於使用者的群組(擁有該資料夾)的唯一成員。
chmod
這裡的命令的作用是不是需要運行為root
--這是我故意的不是包含sudo
在任一命令中。你自己的資料夾,因此您可以自行更改其權限 - 無需root
為您執行此操作。
如果您有興趣以數字方式設定執行權限,請記住,對於您添加的每個數字(從零開始):
- 4 供閱讀。
- 2 用於寫入。
- 1 表示執行。
例如,如果您希望每個人都能夠讀取和執行some-file
但只有所有者才能寫入,您可以使用:
chmod 755 some-file
我建議社區文件中的 FilePermissions,進一步閱讀 Ubuntu 中的檔案權限,包括可執行位元及其對資料夾的特殊意義。