Jestem na Macu. Chcę to zrobić, aby wszystkie nowe pliki / foldery tworzone w określonym folderze miały takie same uprawnienia (nie grupowe, o które już zadbano) jak uprawnienia do katalogu nadrzędnego. W Linuksie zwykle używałbym setfacl, ale wygląda na to, że chmod na Macu może zrobić to, czego szukam. Przeczytałem stronę podręcznika dla chmod, ale wciąż nie mogę wymyślić, jak poprawnie sformatować polecenie, aby uzyskać to, czego chcę.
23
Odpowiedzi:
Najpierw trochę tła wyjaśniającego, co się dzieje: Pliki w OS X mogą mieć dwa zupełnie różne rodzaje ustawień uprawnień: POSIX i ACL.
Pliki zawsze (cóż, prawie zawsze) mają zastosowane uprawnienia POSIX, składające się z właściciela, grupy i innych (z pewną kombinacją odczytu, zapisu i wykonania dla każdego z nich). Nie ma sposobu na kontrolowanie dziedziczenia uprawnień POSIX: nowe elementy są zawsze własnością każdego użytkownika, który je utworzył, przypisanie grupy jest dziedziczone z folderu, w którym się znajdują, a dostęp jest określany przez umask (który prawie zawsze: właściciel otrzymuje pełny dostęp, grupa i inni tylko do odczytu + uruchom foldery). Więc uprawnienia POSIX nie będą działać dla tego, co próbujesz zrobić.
Pliki mogą mieć również zastosowaną listę kontroli dostępu (ACL). Jest to lista wpisów kontroli dostępu (ACE), z których każdy dotyczy użytkownika lub grupy, określa typy dostępu (bardzo szczegółowo), czy są one dozwolone, czy odmówione, oraz czy ACE należy również skopiować do elementy utworzone w folderze. Ten ostatni kawałek jest tą częścią, która sprawia, że jest to dla ciebie przydatne; musisz utworzyć pozycję ACE w folderze, który określa żądaną grupę, typy żądanego dostępu i pełne dziedziczenie.
chmod w OS X może manipulować ACE za pomocą opcji uprawnień + a, -a itp. Jeśli rozumiem, czego chcesz, możesz użyć tego (z podaniem nazwy grupy i ścieżki folderu), aby utworzyć ACE:
Zauważ, że dziedziczenie nie jest „aktywne”, tzn. Nie dotyczy elementów utworzonych przed przypisaniem ACE i nie dotyczy elementów utworzonych gdzieś indziej, a następnie przeniesionych do folderu. Możesz zastosować go do istniejącej zawartości za pomocą -R (
chmod -R +a ...
). Nie znam sposobu (oprócz narzędzi administratora serwera Apple), aby wymusić dziedziczenie elementów przeniesionych do folderu.źródło
ls -l
pokazuje tylko uprawnienia POSIX (chociaż „+” po uprawnieniach wskazuje, że istnieje ACL). Służyls -le
do wyświetlania list ACL.chmod +a ...
komendę, potem stworzył abc.txt w folderze. Plik został przełączony na innego użytkownika i edytuj za pomocą TextEdit. Plik jest oznaczony jako Zablokowany i nie można go edytować.Spróbuj dodać
-R
do polecenia @ Gordon, tak:-R
Wola opcja (jak wspomniano tutaj ):Zmiana hierarchii plików wydaje się być tym, czego szukasz (dla nowych plików, katalogów itp.).
Możesz również sprawdzić ten post Apple.SE , który dotyczy sytuacji nieco podobnej do twojej (z wyjątkiem odnoszącej się do wspólnego katalogu), która wymagała
sudo
przyczepienia na froncie.źródło
To (-R) nie jest tym, co większość ludzi stara się robić; przez większość czasu woleliby zmienić listę ACL w najwyższym katalogu i zrobić coś magicznego, aby zmusić wszystkie zawarte obiekty do dziedziczenia flag zgodnie z listą ACL podaną w katalogu głównym tego poddrzewa. Jest to o wiele bardziej eleganckie, ponieważ listy ACL obiektów będą sortować te odziedziczone pozycje ACE zgodnie z zasadami.
I tak, musiałem napisać skrypt Pythona, aby to zrobić, nie znalazłem też niczego odpowiedniego.
źródło
chmod + ai, i = dziedzicz reguły acl
źródło
Na komputerze Mac spróbuj użyć PathFindera , aby łatwo ustawić ACL i POSIX. Jeśli hostujesz WordPress na serwerze Mac, musisz także ustawić
define('FS_METHOD', 'direct');
plik wp-config.php, aby instalowanie wtyczek i uaktualnień nie wymagało podania szczegółów FTP.Zasadniczo zachowujesz domyślne uprawnienia POSIX i dodajesz użytkownika _www (nie grupę) do ACL, a następnie kliknij Propaguj uprawnienia w oknie ACL.
źródło