Permissions

組內的使用者無法在安裝為 NTFS 的本地磁碟上進行 chmod

  • May 22, 2021

我有一個本地 SSD 磁碟,它通過 /etc/fstab 安裝在我的 Ubuntu 機器上:

/dev/sdb2 /media/Store ntfs-3g rw,nosuid,nodev,default_permissions,umask=0002,uid=deniss,gid=deniss 0 0

我可以在那個驅動器上讀寫任何東西。現在我已經安裝了 nginx 和 php-fpm,並添加www-data到我的組和www-data我的組中,這樣我就可以編輯兩個組中的文件:

$ groups deniss
deniss : deniss adm cdrom sudo dip www-data plugdev lpadmin lxd sambashare

$ groups www-data
www-data : www-data deniss

nginx 使用者(www-data)可以讀取和寫入已安裝共享上的所有文件,當它嘗試對驅動器上的文件進行 chmod 時,問題就開始了:

$ sudo -u www-data chmod 644 test.txt
chmod: changing permissions of '/media/Store/file.txt': Operation not permitted

並不是說我需要 www-data 到 chmod 文件,而是驅動器上執行著本地網站,而且 chmod 有時集成到庫和框架中,我無法禁用它們。

NTFS 不是 unix 文件系統,不能使用 unix 所有權、組或權限。

在 Linux 上掛載 NTFS 文件系統時,一個使用者和一個組用於模擬所有文件和目錄的所有權,並且一組權限也用於 NTFS 掛載上的所有文件/目錄。

這就是default_permissions,umask=0002,uid=deniss,gid=deniss您的/etc/fstab條目部分正在設置的內容。

ntfs-3g驅動程序實際上可以提供與 unix 風格的所有權、組和基本權限等價的功能。預設情況下不這樣做,因為驅動程序不知道應該如何將 Linux 使用者和組 ID 表示為 Windows 安全 ID(簡稱 SID)。

但是,如果您創建一個映射文件,為每個相關的 Linux UID和GID標識相應的 Windows SID /media/Store/.NTFS-3G/UserMapping,並將其(在您的情況下)放在) 只要僅引用存在 SID 映射的使用者和組。chmod``chown

有關詳細資訊,請參閱中的USER MAPPING段落man ntfs-3g。該ntfsusermap命令可以幫助您創建此類映射文件,方法是辨識具有特定 Windows 使用者或組 SID 的文件並詢問您相應的 Linux 使用者或組應該是什麼,並重複該過程直到文件系統中的所有現有 SID 都被映射或您想停止創建更多映射。

https://jp-andre.pagesperso-orange.fr/ntfsusermap.html中,您將找到有關使用的範例ntfsusermap,以及該ntfsusermap工具的 Windows 版本,以防您在執行 Windows 時更方便地創建映射文件(因此您可以讓 Windows 查找與需要映射的每個 SID 關聯的人類可讀名稱)。

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