Co oznacza GID?


14

Co tak naprawdę oznacza GID?

Poszukałem go w Google i tak powiedział linux.about.com :

Grupowy numer identyfikacyjny procesu. Prawidłowe numery grup podano w /etc/grouppolu GID /etc/passwdpliku. Po uruchomieniu procesu jego GID jest ustawiany na GID swojego procesu nadrzędnego.

  • Ale co to znaczy?

Uprawnienia, które mam dla mojego folderu, są obecnie na 0755

Rozumiem, że jeśli ustawię UID dla właściciela, to będzie 4755

A jeśli ustawię GID grupy, będzie 2755

Jeśli ustawię Sticky Bit dla innych, będzie 1755

  • Czy ważne jest nawet ustawienie tych uprawnień?

Odpowiedzi:


27

Każdy proces w uniksopodobnego systemu, podobnie jak każdego pliku, ma właściciela (użytkownik, albo prawdziwe albo system „pseudo-user”, takich jak daemon, bin, manitp) i właściciel grupy. Właścicielem grupy plików użytkownika jest zazwyczaj grupa podstawowa tego użytkownika, i w podobny sposób wszelkie uruchamiane procesy są zazwyczaj własnością identyfikatora użytkownika i identyfikatora grupy podstawowej.

Czasami jednak konieczne jest posiadanie podwyższonych uprawnień do uruchamiania niektórych poleceń, ale nie jest pożądane nadawanie pełnych uprawnień administracyjnych. Na przykład passwdpolecenie potrzebuje dostępu do pliku haseł ukrytych w systemie, aby móc zaktualizować hasło. Oczywiście nie chcesz nadawać każdemu użytkownikowi uprawnień roota, aby mogli zresetować swoje hasło - niewątpliwie doprowadziłoby to do chaosu! Zamiast tego musi istnieć inny sposób tymczasowego przyznania podwyższonych uprawnień użytkownikom do wykonywania określonych zadań. Do tego służą bity SETUID i SETGID. Jest to sposób na poinformowanie jądra, aby tymczasowo podniosło uprawnienia użytkownika na czas wykonywania zaznaczonego polecenia. Plik binarny SETUID będzie wykonywany z uprawnieniami właściciela pliku wykonywalnego (zwykleroot), a plik binarny SETGID zostanie wykonany z uprawnieniami grupy właściciela grupy pliku wykonywalnego. W przypadku passwdkomendy, która należy do rootSETUID, i pozwala ona zwykłym użytkownikom bezpośrednio wpływać na zawartość pliku haseł, w kontrolowany i przewidywalny sposób, poprzez wykonywanie z uprawnieniami administratora. Istnieje wiele innych SETUIDpoleceń na systemach UNIX-like ( chsh, screen, ping, su, itp), z których wszystkie wymagają podwyższonymi uprawnieniami działać poprawnie. Istnieje również kilka SETGIDprogramów, w których jądro tymczasowo zmienia GID procesu, aby umożliwić dostęp do plików logów itp. sendmailJest takim narzędziem.

sticky bitSerwuje nieco inny cel. Jego najczęstszym zastosowaniem jest zapewnienie, że tylko konto użytkownika, które utworzyło plik, może go usunąć. Pomyśl o /tmpkatalogu. Ma bardzo liberalne uprawnienia, które pozwalają każdemu tworzyć tam pliki. To jest dobre i pozwala procesy użytkowników do tworzenia plików tymczasowych ( screen, sshitp, przechowywać informacje w stan /tmp). Aby chronić pliki tymczasowe użytkownika, /tmpma ustawiony bit lepki, dzięki czemu tylko ja mogę usunąć moje pliki, a tylko Ty możesz usunąć swoje. Oczywiście root może zrobić wszystko, ale musimy mieć nadzieję, że sysadmin nie będzie szalony!

W przypadku normalnych plików (tj. Plików niewykonywalnych) ustawianie bitów SETUID / SETGID nie ma większego sensu. SETGID w katalogach w niektórych systemach kontroluje domyślnego właściciela grupy dla nowych plików utworzonych w tym katalogu.


2
Ach, super, dzięki za to. A zatem Sticky Bit jest jak osobiste uprawnienie (użytkownika)? Ta odpowiedź była dobrze sformułowana i zrozumiała.
Kevdog777

1
Dziękuję Ci! Lepki bit zapewnia niewielką ochronę plików w katalogu z liberalnymi uprawnieniami. Nie jest tak naprawdę specyficzny dla danego użytkownika, ponieważ taki sam poziom ochrony jest zapewniony dla wszystkich plików, bez względu na to, kto jest właścicielem. Jest to sposób na umożliwienie każdemu tworzenia plików i upewnienie się, że tylko właściciel może je zniszczyć.
D_Bye

+1, D_bye, czy możesz podać przykład setgid bit set on directory. Dzięki
Ankit

1
@Ankit W systemie Solaris (i prawie na pewno inni - używam tylko * BSD i Solaris), jeśli bit setgid jest ustawiony w katalogu, wszelkie nowe pliki utworzone w tym katalogu będą miały tego samego właściciela grupy, co sam katalog, i nie odziedziczy podstawowej grupy (użytkownika uruchamiającego) proces tworzenia.
D_Bye

3

Myślę, że masz na myśli bit „SGID” pliku, który nie jest taki sam jak jego GID.

Oto typowy plik na moim komputerze (wyjście ls -l):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

Jeśli spojrzysz na pierwsze 10 symboli,

(a) -: To tylko zwykły stary plik (w przeciwieństwie do katalogu, dowiązania symbolicznego, potoku itp.)

(b) rw-: właściciel może odczytać i zapisać ten plik, ale go nie wykonać. Właścicielem jest „bristol”, jak widać później w linii.

(c) r--: Członkowie grupy, do której należy ten plik (w tym przykładzie „użytkownicy”) inni niż właściciel mogą czytać, ale nie mogą zapisywać ani wykonywać tego pliku.

(d) ---: Nikt inny nie może w ogóle uzyskać dostępu do tego pliku (oprócz root oczywiście).

Pole GID to pole, które informuje, do której grupy należy ten plik - w tym przypadku „użytkownicy”.

Pole, które prawdopodobnie miałeś na myśli, na podstawie twojego opisu, to bit SGID, a oto lepsze wyjaśnienie, niż mógłbym wymyślić:

http://www.codecoffee.com/tipsforlinux/articles/028.html

Wersja krótka to: jeśli plik wykonywalny ma ustawiony bit SGID, to każdy, kto nie jest w grupie, ale może wykonać ten plik, tymczasowo zyskuje prawa tej grupy podczas działania programu.

Na przykład, jeśli masz „bufor” grupy, który może odczytywać i zapisywać pliki w katalogu buforu wydruku, nie chcesz, aby tylko ktoś bałaganił ten katalog, ale chcesz, aby mogli drukować pliki, możesz zrobić niektóre programy drukujące lub skrypty mają grupę „bufor” i ustawiają bit SGID, a kiedy ktoś uruchomi ten program, program może teraz zapisywać do katalogu bufora, a osoba uruchamiająca go nie uzyska pełnego dostępu.


To dobrze, dziękuję za to. Rozumiem część dotyczącą uprawnień (część abbbcccddd) - ale to do cholery :)
Kevdog777,

Właśnie widziałem moje uprawnienia do folderu tmp drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. Co oznacza abbbcccddt(litera „t”)? - Rozumiem, że „d = katalog”, „rwx = odczyt, zapis, wykonanie”; ale nigdy przedtem nie widziałem litery „t”. Czy to specjalne zezwolenie na folder tmp?
Kevdog777

Małe t to „plik wykonywalny (x) i lepki zestaw bitów”. Powyżej wyjaśniono, dlaczego jest to zwykle na / tmp.
Bristol

3

GID jest, jak już odkryłeś, numerem identyfikacyjnym grupy. Jest to po prostu wygodny sposób dla systemu operacyjnego na wyrażenie grupy (użytkownika) związanej z czymś (procesem, plikiem itp.); zamiast potencjalnie długiego identyfikatora ciągu można go wyrazić jako liczbę o stałym rozmiarze.

W wartości uprawnień do pliku składającej się z czterech cyfr ósemkowych (na przykład 0755) trzecia cyfra określa uprawnienia grupy do pliku. Jeśli pominiesz pierwszą cyfrę, to druga cyfra określa uprawnienia grupy. Zauważ, że pod tym względem pliki i katalogi są traktowane tak samo, ale dokładne znaczenie każdego bitu uprawnień jest nieco nieintuicyjne w przypadku katalogów.

Te dwie koncepcje są powiązane, ale służą bardzo różnym celom.

Co do twojego pytania „czy w ogóle jest ważne, aby ustawić te uprawnienia?”; zawsze są one ustawione na coś , ale ponieważ w większości przypadków początkowa cyfra to 0 („nic specjalnego”), zwykle bywa pomijana ze względu na zwięzłość. To, czy musisz podać jakąś inną wartość, zależy całkowicie od wzorca użytkowania danego pliku lub katalogu.

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.