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? Faroothanno 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.binuser1è il proprietario; tuttavia possono solo leggere ed esegui , marootha ancora pieno accesso (rwx ) al file. -
RUID è l'ID utente reale e non cambia mai (quasi). Se
user2accede al sistema, la shell viene quindi avviata con il suo ID reale impostato suuser2. Tutti i processi avviati dalla shell erediteranno il vero IDuser2come 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
user2eseguefile.bin, il RUID saràuser2e 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
user2vuole cambiare la propria password , eseguono/usr/bin/passwd. -
Il RUID sarà
user2ma l'EUID di quel processo saràroot. -
user2può usarepasswdper cambiare solo la propria password perché internamentepasswdcontrolla il RUID e, se non èroot, le sue azioni saranno limitate alla password dell'utente reale. -
È necessario che l'EUID diventi
rootnel caso dipasswdperché il processo deve scrivere a/etc/passwde/o/etc/shadow.