Jestem stosunkowo nowy w stosunku do pojęć wymienionych w pytaniu, a czytanie o nich z różnych źródeł tylko je bardziej zagmatwa. Oto co rozumiałem do tej pory:
Gdy otrzymujemy uprawnienia do pliku, wyglądają one następująco:
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
Zakładamy, że użytkownik user2
należący do grupy users
próbuje wykonać polecenie file.bin
. Jeśli bit setuid nie został ustawiony, oznaczałoby to, że zarówno RUID, jak i EUID file.bin
były równe UID user2
. Ale ponieważ setuid bit jest ustawiony, oznacza to, że RUID jest teraz równa UID user2
, natomiast EUID jest UID właściciela pliku user1
.
Moje pytania to:
- Jaka jest różnica między właścicielem pliku a
root
? Czyroot
ma takie same uprawnienia jak właściciel? A może potrzebujemy osobnego wpisu na liście uprawnieńroot
? - Różnica między RUID a EUID?
- W moim rozumieniu RUID i EUID są stosowane tylko do procesów. Jeśli tak, to dlaczego mają wartość identyfikatora użytkownika?
- Jeśli RUID jest użytkownikiem, który tworzy proces, a EUID jest użytkownikiem, który aktualnie uruchamia proces, to pierwsze zdanie pierwszej odpowiedzi w tym pytaniu nie ma dla mnie żadnego sensu.
- Czy dobrze zrozumiałem, co robi bit setuid?
setuid
ustawiony bit.root
) można ustawić euid i RUID do dowolnych wartości (na przykładlogin
,su
isudo
programy zrobić). Zasadniczo, gdy uprzywilejowany proces zmieni swoje UID na wartości niezerowe, nie jest już uprzywilejowany i nie może zostaćroot
ponownie. Zobacz strony man setuid (2) , seteuid (2) i setreuid (2) .setfsuid()
jest obecnie niepotrzebny i należy go unikać w nowych aplikacjach”