權限被拒絕:cd 進入目錄

權限被拒絕:cd 進入目錄

我正在使用 Chromebook,並且想透過 shell 在 Android 容器內導航。容器安裝在路徑上/run/containers/android_XXXXX。當嘗試cd進入目錄時,我被告知Permission Denied。我嘗試將命令運行為sudo,但由於某種原因該cd命令變得無法存取。我已經運行chmod u+x了目錄,但沒有骰子。

從這裡我可以採取什麼步驟?

stat我已經在目錄上運行,它返回以下內容:

  File: ‘android_XXXXXX/’
  Size: 80              Blocks: 0          IO Block: 4096   directory
Device: fh/15d  Inode: 59640       Links: 3
Access: (0700/drwx------)  Uid: (655360/ UNKNOWN)   Gid: (655360/ UNKNOWN)
Context: u:object_r:tmpfs:s0
Access: 2016-10-31 04:04:52.680000040 +0000
Modify: 2016-10-31 04:04:52.200000040 +0000
Change: 2016-10-31 04:44:54.990001186 +0000
 Birth: -

答案1

該目錄drwx------只有 uid 為655350(未在密碼檔案中列出)的人才能讀取或進入它。

sudo cd無法找到該cd命令是預料之中的,它是 shell 的內建命令。如果它不是內建的,那麼它就無法工作。假設你目前的 shell 的進程 ID 為 54000,你執行 /bin/cd 指令,它的 PID 可能是 54309。進程 54000 仍位於其原始目錄中。

chmod u+x改變user (owner)許可。

你想要的是sudo chmod go+rx /run/containers/android_XXXXX

答案2

除了像 @icarus 提到的那樣檢查權限之外,您還需要檢查 ACL(存取控制清單),以getfacl確保沒有任何規則覆蓋基本檔案存取權限。

注意:如果getfacl您的系統上不存在,則可能不是問題所在。


範例 ACL 應該不是問題。

$ getfacl test/
# file: test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

這表示除了標準 POSIX 存取規則之外,沒有應用其他 ACL 規則。您可以看到它ls -ald在權限方面與的輸出相符。 ( 的-d參數ls告訴它向您顯示目錄本身,而不是其內容。)

$ ls -ald test/
drwxr-xr-x 2 root root 4096 May  8 19:11 test/

可能會為您帶來問題的 ACL 範例。

$ getfacl test/
# file: test/
# owner: root
# group: root
user::rwx
user:mc:r--
group::r-x
mask::r-x
other::r-x
$ ls -ald test/
drwxr-xr-x+ 2 root root 4096 May  8 19:11 test/

在這種情況下,查看 的輸出ls -ald,您不會認為會有問題。但是,由於 ACL 規則適用於 POSIX 規則,因此使用者mc將無法變更到該目錄,因為他缺乏可執行權限,儘管其他權限集本來會將其授予mc.

但需要注意的是,所有者權限似乎優先於所有其他 ACL 規則,我相信群組所有者權限也是如此。

Arch Wiki 有有關 ACL 的更多資訊。查看https://wiki.archlinux.org/title/Access_Control_Lists如果您有興趣了解更多有關它們的資訊。


可以理解的是,您可能不想總是檢查getfacl這是否是您的問題,或者您可能會忘記這樣做。幸運的是,ls -al它會告訴您何時應用其他 ACL 規則。如果您查看 的輸出ls -al,只要套用了 ACL 規則,您就可以+在權限位元清單的末端看到 a,否則不會顯示(至少在我的簡短測試中是這樣) 。

+TLDR:如果您在 的權限清單中看到ls -al,請檢查存取控制清單 ( getfacl)。

相關內容