Załóżmy, że mój umask to 0077.
Mam katalog, foo
w którym chcę mieć do niego specjalne uprawnienia. Wszystkie pliki, które tworzę, foo
powinny być czytelne dla świata, a wszystkie katalogi powinny być czytelne dla świata i wykonywalne.
Obecnie, jeśli utworzę plik, będzie to 0600, a katalog to 0700:
$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm 0 2012-01-12 16:15 file
Chcę, aby plik to 0644, a katalog 0755, niezależnie od mojego umask:
drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm 0 2012-01-12 16:15 file
Jak mogę to osiągnąć?
linux
permissions
access-control-list
umask
stickmangumby
źródło
źródło
Odpowiedzi:
Tak, acl's mogą to zrobić.
Upewnij się, że system plików jest podłączony przy użyciu acl. Aby to sprawdzić, wpisz
mount
. Powinieneś zobaczyć „acl” na liście innych uprawnień, np .:Jeśli nie jest zamontowany z acl, otwórz / etc / fstab i dodaj „acl” do listy opcji:
Teraz ponownie zainstaluj działający system plików, korzystając z nowych opcji:
Zainstaluj narzędzia acl. W Ubuntu / Debian jest to:
Twoimi nowymi przyjaciółmi są
setfacl
igetfacl
. Użyj,setfacl
aby zmienić domyślny acl dla katalogu:-d
ustawia wartość domyślną,-m
modyfikuje acl io:r
przyznaje „innym” prawo do czytania. Ustawienie domyślne w katalogu jest mniej więcej równoważne ustawieniu setgid w katalogu, ale zamiast nowo utworzonych plików dziedziczących grupę, dziedziczą acl. Razem setgid i acl mogą być potężne, ponieważ możesz udzielać domyślnych uprawnień grupie i uzyskiwać nowo utworzone pliki, aby należały do tej grupy, w celu uzyskania skutecznego umask opartego na grupie na katalog.Sprawdź swoją pracę:
ls -l
powinien teraz wyświetlać dodatkowe „+” wskazujące na obecność acl oprócz standardowych uprawnień do plików.Możesz uzyskać szczegółowe informacje na temat acl za pomocą
getfacl
.źródło
setfacl
igetfacl
zwracają oczekiwane dane wyjściowe, ale tylko katalogi (nie pliki) w katalogu nadrzędnym dziedziczą acl, a nawet wtedy moja umask ma pierwszeństwo przed domyślną (jeśli nie są czytelne dla całego świata,default:other::r--
nie pozwala innemu użytkownikowi dostęp do nich). Czy przegapiłem coś oczywistego?Możesz także wymusić umask dla katalogu, ustawiając właściwość maski ACL w następujący sposób:
źródło
Po prostu zainstaluj OnDir i skonfiguruj go odpowiednio do swoich potrzeb. Odpowiedziałem na podobny problem znajdujący się tutaj .
źródło