Komenda „chmod g + s”


45

Witaj Chcę zrozumieć rolę chmod g+spolecenia w Uniksie.

Chciałbym również wiedzieć, co robi w tym szczególnym kontekście:

cd /home/canard;
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

Rozumiem wszystkie role poleceń z wyjątkiem chmod g+si chcę poznać różnice między plikami uni deuxwynikające z tej serii poleceń.

Odpowiedzi:


61
chmod g+s .;

To polecenie ustawia identyfikator grupy (setgid) w bieżącym katalogu zapisany jako ..

Oznacza to, że wszystkie nowe pliki i podkatalogi utworzone w bieżącym katalogu dziedziczą identyfikator grupy katalogu, a nie identyfikator grupy podstawowej użytkownika, który utworzył plik. Zostanie to również przekazane do nowych podkatalogów utworzonych w bieżącym katalogu.

g+s wpływa na identyfikator grupy pliku, ale nie wpływa na identyfikator właściciela.

Pamiętaj, że dotyczy to tylko nowo utworzonych plików. Na pliki przeniesione ( mv) do katalogu nie ma wpływu ustawienie setgid. Pliki, które są kopiowane, cp -prównież pozostają nienaruszone.

Przykład

touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

W takim przypadku deuxbędzie należeć do grupy, canardale unbędzie należeć do grupy tworzącego użytkownika, cokolwiek to jest.

Drobna uwaga na temat używania średników w poleceniach powłoki

W przeciwieństwie do club perl, po poleceniu powłoki musi następować średnik tylko wtedy, gdy po nim znajduje się kolejne polecenie powłoki w tym samym wierszu poleceń. Dlatego rozważ następujący wiersz poleceń:

chgrp canard .; chmod g+s .;

Ostatni średnik jest zbyteczny i można go usunąć:

chgrp canard .; chmod g+s .

Ponadto, jeśli umieścilibyśmy te dwa polecenia w osobnych wierszach, wówczas pozostały średnik nie jest potrzebny:

chgrp canard .
chmod g+s .

1
Pliki, które są kopiowane (np. Przez cp) są w rzeczywistości nowo utworzone. Jeśli nie dziedziczą uprawnień grupowych, program kopiujący gra w gry, takie jak kopiowanie do pliku tymczasowego, a następnie przenoszenie go do katalogu docelowego.
Kaz

1
@Kaz Dobra uwaga. Zaktualizowałem odpowiedź, aby wyjaśnić, że to ona cp -pzastępuje ustawienie setgid.
John1024,

Ale czy cp -pzastępuje ustawienie setgid? Na każdej istniejącej implementacji Uniksa? POSIX mówi, że nie jest określone, czy niepowodzenie kopiowania identyfikatora użytkownika lub grupy w cp -p powoduje wyświetlenie komunikatu diagnostycznego! Jednak bity S_SUID i S_SGID muszą zostać wyczyszczone w tej sytuacji (tj. Jeśli plik jest setuid bob, ale własność boba nie może zostać skopiowana, aby plik był własnością janet, nie rób go setuid janet.)
Kaz

„czy cp -pprzesłania ustawienie setgid?” Zgodnie ze specyfikacją POSIX, właśnie to powinno robić. Robi to na wszystkich systemach Unix, z których korzystałem. Przytoczyłeś część specyfikacji dotyczącą tego, co zrobić, aby zabezpieczyć bezpieczeństwo w przypadku, gdy nie można powielić identyfikatora grupy . Nigdy nie spotkałem się z taką sytuacją „nie mogę”, prawda?
John1024,

7

Możesz zmienić uprawnienia do pliku za pomocą komendy chmod. W Uniksie uprawnienia do plików, które określają, kto może mieć różne typy dostępu do pliku, są określone zarówno przez klasy dostępu, jak i typy dostępu. Klasy dostępu to grupy użytkowników, a każdej z nich można przypisać określone typy dostępu

Unix / Linux ma użytkowników i grupy użytkowników, którym można przypisać dostęp do plików

opcje g + s są następujące:

g - uprawnienia, które mają na to inni użytkownicy w grupie plików

s - ustaw identyfikator użytkownika lub grupy podczas wykonywania

oto przykładowe użycie:

chmod =rwx,g+s filename

(zezwól wszystkim na czytanie, zapisywanie i uruchamianie określonego pliku oraz włączanie ustawionego identyfikatora grupy)

Aby ustawić / zmodyfikować uprawnienia do pliku, musisz użyć programu chmod. Oczywiście tylko właściciel pliku może używać chmod do zmiany uprawnień do pliku. chmod ma następującą składnię: chmod [opcje] pliki trybów Część „mode” określa nowe uprawnienia do plików, które następują jako argumenty. Tryb określa, które uprawnienia użytkownika należy zmienić, a następnie jakie typy dostępu należy zmienić. Powiedzmy na przykład: chmod ax socktest.pl

Oznacza to, że bit wykonania powinien zostać wyczyszczony (-) dla wszystkich użytkowników. (właściciel, grupa i reszta świata) Uprawnienia zaczynają się od litery określającej, których użytkowników powinna dotyczyć zmiana, może to być dowolna z następujących sytuacji:

u the owner user
g the owner group
o others (neither u, nor g)
a all users

Po tym następuje instrukcja zmiany, która składa się z + (ustawiony bit) lub - (czysty bit) i litery odpowiadającej bitowi, który powinien zostać zmieniony. Zobaczmy kilka przykładów:

$ ls -l socktest.pl 
-rwxr-xr-x   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod a-x socktest.pl 
$ ls -l socktest.pl 
-rw-r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod g+w socktest.pl 
$ ls -l socktest.pl 
-rw-rw-r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod ug+x socktest.pl 
$ ls -l socktest.pl 
-rwxrwxr--   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod ug-wx socktest.pl 
$ ls -l socktest.pl 
-r--r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

Dziwne liczby ... Mogłeś kiedyś spotkać coś takiego jak chmod 755 i oczywiście będziesz się zastanawiać, co to jest. Chodzi o to, że możesz zmienić cały wzorzec uprawnień do pliku za jednym razem, używając jednej liczby jak ta w tym przykładzie. Każdy tryb ma odpowiedni numer kodu i jak zobaczymy, istnieje bardzo prosty sposób, aby dowiedzieć się, który numer odpowiada dowolnemu trybowi. Każda z trzech cyfr numeru trybu odpowiada jednej z trzech trójek uprawnień. (u, g oraz o) Każdy bit zezwolenia w triplecie odpowiada wartości: 4 dla r, 2 dla w, 1 dla x. Jeśli bit zezwolenia ma wartość dodaną do numeru trypletu uprawnień. Jeśli jest wyczyszczone, nic nie dodajesz. (Niektórzy z was mogą to zauważyć,

Triplet dla ciebie: rwx => 4 + 2 + 1 = 7

Triplet dla g: r-x => 4 + 0 + 1 = 5

Triplet dla o: r-x => 4 + 0 + 1 = 5

Który robi : 755

Tak więc 755 to zwięzły sposób powiedzenia „Nie mam nic przeciwko, aby inni ludzie przeczytali lub uruchomili ten plik, ale tylko ja powinienem móc go zmodyfikować”, a 777 oznacza „każdy ma pełny dostęp do tego pliku”

doskonałe referencje


0

Wynik polecenia ls będzie zależeć od umask.

g + s ustawi sgid na plik. Sprawdź tutaj, aby uzyskać bardziej szczegółowe informacje na temat SUID SGID

więc jeśli twój umask wynosi na przykład 022, wynikiem będzie coś takiego:

-rw-r--r--    1 romeo    canard     0 Jan 31 20:58 deux
-rw-r-Sr--    1 romeo    UsersGrp   0 Jan 31 20:58 un

0

W Linuksie jedna z domyślnych opcji montowania dla ext? fs to 'nogrpid | sysvgroups ”. Tak więc pierwszy dotyk un tworzy plik o identyfikatorze grupy równym fsgid procesu tworzenia, gdzie fsgid = egid.

chmod g + s., powoduje, że kolejne tworzenie pliku / katalogu dziedziczy identyfikator grupy z folderu nadrzędnego, a jeśli utworzoną rzeczą jest katalog, to także dostaje g + s jako swój element nadrzędny.

Tutaj dotknij deux, tworzy deux z grupową kartą.

Semantyka zmienia się, jeśli opcja montowania to „grpid | bsdgroups ”, w takim przypadku tworzenie nowego pliku / katalogu dziedziczy identyfikator grupy z folderu nadrzędnego, nawet bez ustawiania g + s dla samego rodzica.

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.