Linux
ext4 外部驅動器上的權限問題
我在連接到伺服器的外部硬碟驅動器上遇到了一個奇怪的權限錯誤。我想啟用傳輸以將種子下載到其上的文件夾,但發現由於權限錯誤而無法創建目錄。
我自己對其進行了測試,並驗證了以 user 身份執行的守護程序
transmission
無法在它擁有的具有755權限的文件夾中創建目錄。我認為這可能是一些奇怪的 inode 惡作劇,但
fsck
回來乾淨,一切看起來都很正常。matoro@matoro-server ~ $ ls -i /run/media/matoro/drive-data total 40 43253761 drwxr-xr-x 5 matoro matoro 4096 Apr 11 2017 backup 11796481 drwxr-xr-x 3 matoro matoro 4096 Oct 28 22:40 iso 37568568 drwxr-xr-x 2 matoro matoro 4096 Apr 23 2017 pending 42336296 drwxr-xr-x 3 matoro matoro 4096 Oct 25 01:26 podcasts 38141969 drwxr-xr-x 39 matoro matoro 12288 Sep 18 22:05 reading 37519377 drwxr-xr-x 3 transmission transmission 4096 Oct 30 17:10 seeding 37490784 drwxr-xr-x 4 matoro matoro 4096 Oct 30 17:09 videos 42336292 drwxr-xr-x 3 matoro matoro 4096 Oct 25 01:23 youtube matoro@matoro-server ~ $ ls -ia /run/media/matoro/drive-data/seeding total 912160 37519377 drwxr-xr-x 3 transmission transmission 4096 Oct 30 17:10 . 2 drwxr-xr-x 11 matoro matoro 4096 Nov 3 14:56 .. 37584902 drwxr-xr-x 3 transmission transmission 4096 Aug 10 2016 'some directory' 37488367 -rw-r--r-- 1 transmission transmission 430297088 Aug 14 2016 some_file matoro@matoro-server ~ $ sudo -u transmission mkdir -v /run/media/matoro/drive-data/seeding/test mkdir: cannot create directory ‘/run/media/matoro/drive-data/seeding/test’: Permission denied
以下是相關的掛載選項:
/dev/sdc3 on /run/media/matoro/drive-data type ext4 (rw,nosuid,nodev,noexec,noatime,data=ordered,uhelper=udisks2)
這可能是什麼原因造成的?它可能與ACL有關嗎?
該
mkdir
命令必須遍歷目錄結構以查找現有目錄/run/media/matoro/drive-data/seeding
,然後向其中添加條目。所需的權限是:
x
許可/
x
許可/run
x
許可/run/media
x
許可/run/media/matoro
x
許可/run/media/matoro/drive-data
w
和x
許可/run/media/matoro/drive-data/seeding
(當然,它們都必須是目錄,並且您創建的目錄必須不存在)
我敢打賭你錯過了其中之一(可能是#4或#5)如果程序已經
/run/media/matoro/drive-data/seeding
作為其目前目錄(如果在您進入目錄後祖先目錄權限發生更改,或者如果程序切換uid,則可能發生這種情況)然後它可以mkdir test
並且僅使用權限#6(w
並且x
在目前目錄上)成功,而mkdir /run/media/matoro/drive-data/seeding/test
需要所有x
權限,即使它引用相同的位置。當您使用絕對路徑或具有多個組件的相對路徑時,
x
將對您提到的每個祖先目錄進行權限檢查。