我在Mac上。我要這樣做,以便在特定文件夾中創建的任何新文件/文件夾都具有與父目錄相同的權限(不是組,已經處理過)。在Linux上,我通常會使用setfacl,但看起來在Mac上的chmod也許可以滿足我的需求。我已經閱讀了chmod的手冊頁,但仍然無法弄清楚如何正確格式化命令以獲取所需的內容。
我在Mac上。我要這樣做,以便在特定文件夾中創建的任何新文件/文件夾都具有與父目錄相同的權限(不是組,已經處理過)。在Linux上,我通常會使用setfacl,但看起來在Mac上的chmod也許可以滿足我的需求。我已經閱讀了chmod的手冊頁,但仍然無法弄清楚如何正確格式化命令以獲取所需的內容。
首先,有一點背景知識來說明發生了什麼:OS X中的文件可以應用兩種截然不同的權限設置:POSIX和ACL。
總是文件(嗯,幾乎總是)應用了POSIX權限,該權限由所有者,組和其他人組成(每個人的讀寫,執行都結合在一起)。無法控制POSIX權限的繼承:新項目始終由創建它們的任何用戶擁有,組分配是從它們所在的文件夾繼承的,而訪問權限則由umask決定(幾乎總是這樣:擁有者擁有完全訪問權限,而組和其他則具有隻讀權限+對文件夾執行)。因此,POSIX權限對您要執行的操作無效。
文件還可以應用訪問控制列表(ACL)。這是訪問控制項(ACE)的列表,每個訪問控制項都適用於用戶或組,詳細說明訪問類型,允許或拒絕訪問以及是否還應將ACE複製到在文件夾內創建的項目。最後一點是對您有用的部分;您需要在指定所需組,所需訪問類型以及完全繼承的文件夾上創建一個ACE。
在OS X上的chmod可以使用+ a,-a等操作ACE。權限選項。如果我了解您的要求,則可以使用此名稱(替換組名和文件夾路徑)來創建ACE:
chmod + a“ group:examplegroup允許列表,add_file,搜索,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit“ / path / to / folder
請注意,繼承不是“實時的”,即,它不適用於分配ACE之前創建的項目,也不適用於在其他位置創建的項目,然後移入了文件夾。您可以使用-R( chmod -R + a ...
)將其應用於現有內容。我不知道有一種方法(除Apple的服務器管理工具外)強制繼承到移入文件夾的項目。
嘗試在@gordon的命令中添加 -R
,例如:
chmod -R + a“ group:_www允許列表,添加文件,搜索,添加子目錄, delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit“在戶外
-R
選項將(如此處):
遞歸:更改植根於文件的文件層次結構的模式,而不僅僅是文件本身。
更改文件層次結構似乎是您正在尋找的內容(用於新文件,目錄等)。
您還可以查看此 Apple.SE帖子,其中涉及的情況與您的情況有些相似(與共享目錄有關的除外),這需要在前面加上 sudo
。
這個(-R)不是大多數人想要做的;大多數情況下,他們希望更改最頂層目錄上的ACL,並執行一些魔術操作,以強制所有包含的對像根據它們在該子樹的根目錄上指定的ACL來繼承標誌。這更加優雅,因為對像上的ACL會根據策略對這些繼承的ACE進行排序。
是的,我不得不編寫一個python腳本來執行此操作,我也沒有找到合適的方法。
在Mac上,嘗試使用 PathFinder,可以輕鬆設置ACL和POSIX。如果要在Mac Server上託管WordPress,則還需要在wp-config.php中設置 define('FS_METHOD','direct');
,以便安裝插件和升級。不會要求您提供FTP詳細信息。
因此,基本上,您保留默認的POSIX權限,並將用戶_www(而非組)添加到ACL,然後在“ ACL”窗口中單擊“傳播權限”。
chmod + ai,我=繼承ACL規則