Bity SUID (Set User ID) oraz SGID (Set Group ID) w kontekście uprawnień do plików w systemie Linux

Bity SUID oraz SGID są jednymi z bitów specjalnych należących do pola bitowego opisującego uprawnienia do pliku lub folderu w systemie Linux. Są to 2 z 3 bitów specjalnych. Tym trzecim jest sticky bit opisany tutaj:


http://programowanie.opole.pl/archives/1880

Bity SUID oraz SGID mają zastosowanie tylko dla plików, a dokładniej dla plików wykonywalnych – skryptów lub programów. Aby zrozumieć, czym są te bity, należy przypomnieć sobie jedną rzecz.

Gdy jakiś użytkownik uruchamia skrypt lub program w systemie Linux, to owy program ma w trakcie uruchomienia tylko takie uprawnienia, jak użytkownik, który go uruchomił. Czasami jednak potrzebujemy, aby sprawy miały się inaczej. Przykładowo… Root stworzył skrypt, który modyfikuje jakieś ważne pliki, które również należą do niego. Ale skrypt ma być uruchamiany przez użytkowników, gdyż został napisany właśnie dla nich. Normalnie tego by się nie dało zrobić, bez przypisanie dodatkowych uprawnień do tych użytkowników, ale jest na to rada.

Tu właśnie pojawia się SUID i SGID. Bit SUID ustawiony dla pliku wykonywalnego oznacza, że ten plik podczas wykonywania ma takie uprawnienia, jak jego właściciel (a nie osoba, która go uruchomiła). Jeżeli właścicielem skryptu jest przykładowo root, to podczas wykonywania tego skryptu, ma on uprawnienia takie jak root, mimo że sam użytkownik takich praw nie ma.

Bardzo podobny do tego jest bit SGID. Różnica polega na tym, że skrypt (program) otrzymuje podczas uruchomienia uprawnienia takie, jak grupa, do której należy właściciel danego skryptu.