Czy ktoś może mi wyjaśnić, jak umask
wpływa na domyślną maskę nowo utworzonych plików, jeśli ACL są aktywowane? Czy jest na to jakaś dokumentacja?
Przykład:
$ mkdir test_dir && cd test_dir
$ setfacl -m d:someuser:rwx -m u:someuser:rwx . # give access to some user
$ getfacl .
# file: .
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx
group::---
mask::rwx
other::---
default:user::rwx
default:user:someuser:rwx
default:group::---
default:mask::rwx
default:other::---
$ umask # show my umask
077
$ echo "main(){}" > x.c # minimal C program
$ make x # build it
cc x.c -o x
$ getfacl x
# file: x
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx #effective:rw-
group::---
mask::rw-
other::---
Oczekiwałbym mask:rwx
. Właściwie po ustawieniu umask
np. 027
Dostaję oczekiwane zachowanie.
linux
permissions
posix
acl
Jofel
źródło
źródło
mask::rw-
. Ale to nie jest twoje pytanie, prawda?mask::rw-
amask::rwx
która nie była domyślną maską katalogu.Odpowiedzi:
Znalazłem ten przykład, zatytułowany: ACL i MASK w systemie Linux . W tym artykule pokazano następujące przykłady, które moim zdaniem pomagają zrozumieć, w jaki sposób listy ACL i
umask
interakcja między nimi.tło
Gdy plik jest tworzony w systemie Linux,
0666
stosowane są uprawnienia domyślne, a podczas tworzenia katalogu - uprawnienia domyślne0777
.przykład 1 - plik
Załóżmy, że ustawiliśmy nasz umask na 077 i dotknij pliku. Możemy użyć,
strace
aby zobaczyć, co się właściwie dzieje, gdy to robimy:W tym przykładzie widzimy, że wywołanie systemowe
open()
jest wykonywane z uprawnieniami 0666, jednak gdyumask 077
jest ono następnie stosowane przez jądro, następujące uprawnienia są usuwane (---rwxrwx
) i zostajemy zrw-------
aka 0600.przykład - katalog 2
Tę samą koncepcję można zastosować do katalogów, z tą różnicą, że zamiast domyślnych uprawnień 0666, są to 0777.
Tym razem używamy
mkdir
polecenia. Następniemkdir
polecenie wywołało wywołanie systemowemkdir()
. W powyższym przykładzie widzimy, żemkdir
poleceniemkdir()
wywołało wywołanie systemowe z domyślnymi uprawnieniami0777
(rwxrwxrwx
). Tym razem z zestawem022
następujących uprawnień są usuwane (----w--w-
), więc pozostaje nam 0755 (rwxr-xr-x
) podczas tworzenia katalogów.przykład 3 (Stosowanie domyślnej listy ACL)
Teraz utwórzmy katalog i pokażmy, co się stanie, gdy zostanie do niego zastosowana domyślna lista ACL wraz z plikiem w niej zawartym.
Teraz utwórzmy plik
aclfile
:Teraz uzyskaj uprawnienia do nowo utworzonego pliku:
Zwróć uwagę na maskę
mask::rw-
. Dlaczego nie jestmask::rwx
tak, jak podczas tworzenia katalogu?Sprawdź
luvly
plik dziennika, aby zobaczyć, jakie domyślne uprawnienia zostały użyte do utworzenia pliku:To jest trochę mylące. Gdy maska jest ustawiona na
rwx
czas tworzenia katalogu, można oczekiwać takiego samego zachowania podczas tworzenia pliku, ale to nie działa w ten sposób. Jest tak, ponieważ jądro wywołujeopen()
funkcję z domyślnymi uprawnieniami0666
.Podsumowując
chmod
.Bibliografia
źródło
chmod("file",0760)
->mask:rw
,chmod("file",0770)
->mask:rwx
). Może powinienem zacząć nowe pytanie na ten temat ...ze względów bezpieczeństwa system operacyjny Linux nie pozwala na automatyczne tworzenie pliku z bitem wykonania. Ma to na celu zapobieganie cyberatakom pisania programów do takich plików i wykonywania ich, jeśli uzyskają dostęp do twojego serwera. To tylko środek ostrożności. Na zawsze będziesz musiał ręcznie ustawić bit wykonania dla plików po utworzeniu ich za pomocą narzędzia chmod
źródło