W jaki sposób uprawnienia do plików są stosowane do nowo tworzonych plików?


12

Mam katalog z ustawionymi następującymi uprawnieniami:

drwxr-s---. user group folder

Na pulpicie uzyskuję dostęp do tego folderu i klikam prawym przyciskiem myszy, aby utworzyć nowe wywołanie pliku foo.txt. Następnie za pomocą terminala utworzyłem inny plik za pomocą polecenia $ touch bar.txt.

Kiedy sprawdzam uprawnienia do tych plików, mam:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

Oczekiwałem -rw-r-----. user group. Jak powstały dodatkowe uprawnienia do zapisu dla grupy i uprawnienia do odczytu dla innych?

Odpowiedzi:


16

setguid

W pracy działają 2 siły. Pierwszym z nich jest setgid bit, który jest włączony na folderze folder.

drwxr-s---. user group folder

To jest sw zestawie znaków na początku tej linii. Są one pogrupowane w następujący sposób:

d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users

Te r-sśrodki, że wszelkie pliki lub katalogi utworzone wewnątrz tego folderu będą miały grupę automatycznie ustawiona na grupy group.

To, co spowodowało pliki foo.txti bar.txtbyć tworzone w taki sposób:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

uprawnienia i umask

Uprawnienia, które widzisz, to inna sprawa. Są one regulowane przez ustawienia dla twojego umask. Możesz zobaczyć, co umaskjest ustawione za pomocą polecenia umask:

$ umask
0002

UWAGA: te bity są również nazywane bitami „trybu”.

Jest to maska, więc wyłączy wszelkie bity związane z włączonymi uprawnieniami. W tym przykładzie jedyne, czego chcę, to uprawnienia do zapisu dla innych.

0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits

Reprezentacja „bitów” w tym poleceniu ma postać dziesiętną. Zatem 2 równa się 010 w postaci binarnej, która jest bitem zapisu. 4 (100) oznacza, że ​​chcesz wyłączyć czytanie. 7 (111) oznacza, że ​​chcesz odczytać / zapisać / wykonać wszystkie wyłączone. Budowanie stąd:

$ umask 007

Wyłącza bity do odczytu / zapisu / wykonywania dla innych użytkowników.

A co z twoimi plikami?

Cóż, umaskrządzi uprawnieniami, które zostaną ustawione, gdy zostanie utworzony nowy plik. Gdybyśmy mieli następujący umaskzestaw:

$ umask 007

I zaczęliśmy dotykać nowych plików, zobaczymy, jak zostały utworzone w następujący sposób:

$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile2.txt

Jeśli zmieniliśmy to na coś innego, powiedz to:

$ umask 037
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

Nie wpłynie to jednak na pliki, które już utworzyliśmy. Spójrz tutaj:

$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

Więc co się dzieje z przeglądarką plików?

To, umaskco nazwałam „miękkim” ustawieniem. Nie jest absolutnie absolutne i może być dość łatwo omijane w Uniksie na wiele sposobów. Wiele narzędzi przyjmuje przełączniki, które pozwalają określić uprawnienia w ramach ich działania.

Weźmy mkdirna przykład:

$ umask
0037

$ mkdir -m 777 somedir1
$

$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov  3 22:44 somedir1

Za pomocą -mprzełącznika możemy zastąpić umask. touchPolecenie nie mają tej możliwości, więc trzeba ruszyć. Zobacz poniższe pytania i odpowiedzi U&L: Czy można tworzyć pliki z uprawnieniami ustawionymi w wierszu poleceń? tylko dla takich metod.

Inaczej? Po prostu zastąp umask. Przeglądarka plików najprawdopodobniej to robi lub po prostu całkowicie ignoruje umaski kładzie plik przy użyciu wszelkich uprawnień, jakie skonfigurował.


Myślałem, że umask ma usuwać uprawnienia, a nie dodawać. A może coś mi brakuje?
Przepełnienie pytania,

@QuestionOverflow - maskujesz kontroluje, jakie uprawnienia są dozwolone podczas tworzenia plików i katalogów. Stąd jego nazwa. Maskuje bity przed użyciem podczas procesu tworzenia.
slm

Mój umask czyta 0002. Jeśli umask ustawia uprawnienia zamiast usuwać uprawnienia, wówczas bit wykonywania zostanie ustawiony zarówno dla użytkownika, jak i grupy touch, ale tak nie jest.
Pytanie Przepełnienie

@QuestionOverflow - to ograniczenie touchpolecenia. Zobacz link, który zawarłem
slm

Aby wyjaśnić kilka punktów na podstawie komentarzy: 1) uprawnienia nowego pliku są zawsze określane przez umask + program użyty do utworzenia pliku, 2) uprawnienia nigdy nie są dziedziczone z katalogu nadrzędnego.
Pytanie Przepełnienie
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.