Sono relativamente nuovo ai concetti menzionati nella domanda e leggerli da fonti diverse li rende solo più confusi. Quindi questo è quello che ho capito finora:
Quando ci vengono fornite le autorizzazioni per un file, hanno il seguente aspetto:
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
Assumiamo che un utente user2
chi è nel gruppo users
tenta di eseguire file.bin
. Se il bit setuid non fosse impostato, ciò significherebbe che sia il RUID che l'EUID di file.bin
erano uguali all'UID di user2
. Ma poiché il bit setuid è impostato, ciò significa che il RUID è ora uguale all'UID di user2
, mentre EUID è l'UID del proprietario del file, user1
.
Le mie domande sono:
- Qual è la differenza tra il proprietario del file e
root
? Faroot
hanno gli stessi permessi del proprietario? Oppure avremmo bisogno di una voce separata nell'elenco dei permessi perroot
? - Differenza tra RUID e EUID?
- A quanto ho capito, RUID e EUID vengono applicati solo ai processi. Se è così, perché hanno il valore di ID utente?
- Se RUID è l'utente che crea il processo e EUID è l'utente che sta attualmente eseguendo il processo, la prima frase della prima risposta in questa domanda non ha alcun senso per me.
- Ho capito bene cosa fa il bit setuid?
Risposta accettata:
Ecco le risposte:
-
root
è sempre pieno accesso a file e directory. Anche il proprietario del file di solito li ha, ma questo non è sempre vero. Ad esempio:-r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin
user1
è il proprietario; tuttavia possono solo leggere ed esegui , maroot
ha ancora pieno accesso (rwx ) al file. -
RUID è l'ID utente reale e non cambia mai (quasi). Se
user2
accede al sistema, la shell viene quindi avviata con il suo ID reale impostato suuser2
. Tutti i processi avviati dalla shell erediteranno il vero IDuser2
come loro vero ID.EUID è l'ID utente effettivo , cambia per i processi (non per l'utente) eseguiti dall'utente che hanno impostato il setuid bit .
Se
user2
eseguefile.bin
, il RUID saràuser2
e l'EUID del processo avviato saràuser1
.
Usiamo il caso di passwd
:
-rwsr-xr-x 1 root root 45396 may 25 2012 /usr/bin/passwd
-
Quando
user2
vuole cambiare la propria password , eseguono/usr/bin/passwd
. -
Il RUID sarà
user2
ma l'EUID di quel processo saràroot
. -
user2
può usarepasswd
per cambiare solo la propria password perché internamentepasswd
controlla il RUID e, se non èroot
, le sue azioni saranno limitate alla password dell'utente reale. -
È necessario che l'EUID diventi
root
nel caso dipasswd
perché il processo deve scrivere a/etc/passwd
e/o/etc/shadow
.