所有權、磁碟驅動器和權限
我遇到了我已經發布的磁碟驅動器的問題。(出於好奇:格式化後設備出現問題)
簡而言之,我的一個磁碟停止允許我使用 Dolphin (Debian) 通過拖放複製文件,並且只有在我使用 sudo 從終端執行此操作時才允許我這樣做。
我研究了我的問題並註意到了一些事情:
- 這已經發生在我的另一個磁碟驅動器上。
- 該磁碟驅動器和這個磁碟驅動器已用 dd if=/dev/zero of=/dev/sdX 擦除,其中 sdX 是有問題的驅動器
- 其他未使用 dd 擦除但僅格式化(使用 mkfs)和/或分區(例如使用多個主分區創建的 gpt 分區)的磁碟驅動器不會發生這種情況。
- 在那個磁碟和這個磁碟中,所有者被更改為 root,不再是使用者。
所以我的問題是:
- 為什麼這種情況發生在完全擦除的磁碟上而不是格式化或分區的磁碟上?
- 權限是如何工作的?它們是否寫入磁碟?還是所有權寫入磁碟?
- 是否可以更改磁碟的所有者以使更改在 Linux 發行版中保持不變?
編輯:我嘗試用 exfat 格式化磁碟。使用 Dolphin 進行拖放,所有權更改為使用者。我試圖用 ext4 格式化磁碟。拖放不再起作用。所有權已更改為 root。我試圖將磁碟驅動器的所有權更改為目前使用者。命令行退出沒有問題(終端:sudo chown …:/dev/sdX -R -w)。但是,當與 Dolphin 一起使用時,拖放不起作用。Dolphin 仍然將所有權列為 root。如果從終端手動掛載,則為掛載創建的目錄將僅將所有權顯示為 root(即使該目錄是在不需要 sudo 的情況下創建的)。如果從 Dolphin 自動掛載,它也只會以 root 身份顯示所有權。安裝點名稱在 Dolphin 的兩個自動安裝之間發生變化。
我還應該補充一點,我確實使用 ext* 文件系統格式化了其他驅動器。只要我沒有在它們上執行 dd if=… of=… (完全擦除它們),它們就沒有問題(即使使用 ext4)。
你能向我解釋發生了什麼事嗎?
為什麼它似乎表明 ext* 格式自動使 root 成為所有者而 exfat 格式不是?這兩個命令都是使用 mkfs 執行的。
編輯:忘了寫我使用 Debian。
格式化驅動器(或分區,或其他塊設備,或磁碟映像文件等)時,文件系統的頂級目錄歸執行
mkfs
命令的使用者所有。通常,除非您將磁碟映像文件(或您碰巧具有 RW 權限的塊設備)格式化為非 root uid,否則它是 root。
如果要更改所有權,請掛載它,然後 chown 掛載的目錄。這將更改格式化 fs 本身中該頂級目錄的所有權,因此在解除安裝後所有權更改將持續存在。例如(作為根):
mkfs.ext4 /dev/sdaX mount /dev/sdaX /mnt chown user:group /mnt
這必須在掛載 fs 時完成,否則它只會更改掛載點本身的所有者(即父文件系統中的目錄),並且當您安裝時,這將被掛載文件系統中的所有者覆蓋安裝它。
例如,
/mnt
它只是一個目錄,/
直到您在其上掛載另一個文件系統。它具有在 /fs 中為其設置的任何所有權和權限。當您在 /mnt 上掛載另一個 fs 時,它現在擁有為該文件系統的頂級目錄設置的任何所有權和權限。FAT 不是 unix 文件系統,不支持 unix 所有權或權限。當你掛載一個FAT文件系統時,你在掛載它時指定fs中所有文件的所有權和權限(預設是掛載過程的uid & gid)。
請注意,
mkfs
對於某些文件系統,您可以在格式化時指定所有者,但是,因為每個這樣的 fs 都有自己的方法,所以chown
在第一次安裝它之後通常會更容易(如上所示),而不必記住一個很少使用的工具的一個小便利功能。例如mkfs.ext4
,使用擴展選項 (-E
) 執行此操作:mkfs.ext4 -E root_owner=uid:gid /dev/sdaX