組內的使用者無法在安裝為 NTFS 的本地磁碟上進行 chmod
我有一個本地 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 關聯的人類可讀名稱)。