Zdałem sobie sprawę, że uprawnienia do nowych plików i katalogów zachowują się nieco dziwnie. Po pierwsze, umask wydaje poprawną odpowiedź:
$ umask
0002
Oznacza to pełny dostęp dla mojego użytkownika i mojej grupy, brak dostępu do zapisu dla reszty świata, brak suid. Ale jeśli utworzę plik w moim $ HOME, wygląda to tak:
$ ls -l testfile
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile
tzn. dając wszystkim dostęp do zapisu. To samo dzieje się z katalogami:
$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir
Myślę, że to to samo, co posiadanie umask 0000, a nie 0002. Przeszukałem wszystkie pliki / etc w poszukiwaniu jakiegoś przypadku umask, który zmienia domyślną 0002 lub 0022, ale nie znalazłem. Jest to domyślna instalacja CentOS 5.5. Jakaś wskazówka, dlaczego tak się dzieje?
testfile
itestdir
?Odpowiedzi:
Nie wiem, czy odpowiedź na moje pytanie jest właściwa. Redaktorzy, proszę o poradę, jeśli tak nie jest. Z góry dziękuję.
Myślę, że rozwiązałem tę tajemnicę: problemem był brak domyślnej listy ACL w woluminach XFS. Oto wpis ACL dla / srv / backups, jednego z katalogów, których to dotyczy:
Ilekroć robiłem „test mkdir” lub „plik testowy dotyku”, pojawiały się uprawnienia 777. Zrobiłem to:
Pozostawienie ACL w ten sposób:
Wcześniej (podobno) nie było ACL, ale teraz jest. Widzę znak „+” dołączony do uprawnień, gdy wykonuję „ls -l”. I magicznie, teraz „test mkdir” i „plik testowy dotyku” działają z oczekiwanymi uprawnieniami:
Nie wiem, dlaczego tak się dzieje. Myślę, że XFS nie lubi nie mieć domyślnej listy ACL i zachowuje się dziwnie, kiedy to się dzieje. Widziałem też, że dzieje się to tylko w CentOS, a nie w Debian / Ubuntu. Może jest to związane z wersją XFS w jądrze lub coś w tym rodzaju. Brak pomysłu.
W każdym razie to rozwiązuje sprawę. Wielkie dzięki za wszystkie sugestie :-)
źródło
Wywołanie creat może jawnie określać uprawnienia, które mają pierwszeństwo przed umask.
Nie odpowiedziałeś, jak tworzysz
testfile,testdir
.Utwórz plik, używając
touch testfile
, a następnie wyświetl i opublikuj uprawnieniaźródło
Spróbuj a
getfacl .
w katalogu, w którym tworzysz plik testowy, aby sprawdzić, czy domyślny plik ACL wpływa na uprawnienia.źródło
Po prostu poszukaj zmiennej USERGROUPS_ENAB na /etc/login.defs
Ich komentarz, aby go wyłączyć # USERGROUPS_ENAB tak
Jeśli chcesz również zmienić umask bieżącego użytkownika, najpierw zapoznaj się z poprzednią procedurą i wykonaj następujące czynności.
przykład dla 027
echo "umask 027" >> ~ / .bashrc && pkill -KILL -u twoja_nazwa_użytkownika_tutaj
echo "umask 027" >> ~ / .bashrc to polecenie ustawi domyślną wartość umask dla twojego profilu
to zmusi cię do wylogowania
po ponownym zalogowaniu
po prostu uruchom komendę umask ponownie i sprawdź, czy zadziała
źródło