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 s
w 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.txt
i bar.txt
być 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 umask
jest 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óż, umask
rządzi uprawnieniami, które zostaną ustawione, gdy zostanie utworzony nowy plik. Gdybyśmy mieli następujący umask
zestaw:
$ 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, umask
co 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 mkdir
na przykład:
$ umask
0037
$ mkdir -m 777 somedir1
$
$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov 3 22:44 somedir1
Za pomocą -m
przełącznika możemy zastąpić umask
. touch
Polecenie 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 umask
i kładzie plik przy użyciu wszelkich uprawnień, jakie skonfigurował.