Dlaczego pliki w moim katalogu domowym są tworzone do zapisu na całym świecie pomimo bardziej restrykcyjnego umasku?


10

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?


3
Na jakim typie systemu plików znajduje się katalog domowy?
mattdm,

4
A jak tworzysz testfilei testdir?
mattdm

3
@mattdm, miałeś rację, nalegając: to XFS. Zapomniałem, że mamy osobne tomy dla / home, / var i kilku innych. Chociaż często używam XFS i nie widziałem tego zachowania. Jak można to powiązać?
rsuarez

2
acl może zastąpić umask lokalnie. Czy to możliwe, że twoje katalogi są montowane przy pomocy acl?
Faheem Mitha

3
Hmm, najwyraźniej xfs zawsze ma włączone acl. więc może się nie wyświetlać w twoim / etc / fstab. Spróbuj uruchomić getfacl na swoich partycjach / katalogach.
Faheem Mitha

Odpowiedzi:


3

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:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Ilekroć robiłem „test mkdir” lub „plik testowy dotyku”, pojawiały się uprawnienia 777. Zrobiłem to:

setfacl -m d:u::rwx /srv/backups

Pozostawienie ACL w ten sposób:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

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:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

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 :-)


Odpowiedź na własne pytanie jest całkowicie do przyjęcia .
Keith Thompson,

0

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


Przepraszam za opóźnienie. Testowałem przy użyciu „dotykowego pliku testowego”, a także „mkdir testdir”, z podobnymi wynikami. umask wydaje się być ustawiony na „0000”, ponieważ są one tworzone z uprawnieniami 777.
rsuarez

0

Spróbuj a getfacl .w katalogu, w którym tworzysz plik testowy, aby sprawdzić, czy domyślny plik ACL wpływa na uprawnienia.


1
Nie, brak domyślnej listy ACL. Wydaje się, że jest w jakiś sposób związany z XFS, ponieważ dzieje się tak tylko w woluminach XFS. Ale i tak dzięki.
rsuarez,

-1

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.