Nessuno ha ancora un ✓, quindi ho messo insieme una risposta che ha tutto ciò a cui potevo pensare.
1 Quando si esegue un eseguibile, a volte il sistema operativo negherà l'autorizzazione a. Ad esempio, eseguendo make install con il prefisso che è un percorso di sistema sarà necessario sudo, mentre con il prefisso che è un percorso non di sistema non verrà richiesto sudo. In che modo il sistema operativo decide che l'esecuzione di un eseguibile richiederebbe più privilegi di un utente, anche prima che il programma faccia qualcosa?
No, non viene eseguito all'avvio di un eseguibile. Viene eseguito quando l'eseguibile cerca di fare qualcosa.
L'OS controllerà le autorizzazioni e le capacità del file system (queste non sono coperte dalle autorizzazioni del file system e includono riduzione di buon livello, mknode, alcune cose di rete di basso livello, interruzione dei processi di altri, riavvio, tempo impostato ecc.). Se non si dispone delle autorizzazioni, non è possibile farlo. Il root ha un set completo di funzionalità, incluso CAP_DAC_OVERRIDE (ignora l'autorizzazione del file).
2 A volte, l'esecuzione di un programma non verrà negata l'autorizzazione, ma il programma sarà in grado di fare più cose se viene eseguito con sudo. Ad esempio, quando si esegue du su una directory di sistema, solo con sudo sarà in grado di accedere ad alcune directory. Perché il sistema operativo non nega l'autorizzazione a eseguire un programma del genere o si preferisce la notifica amichevole prima di poter eseguire il programma?
Il sistema operativo non può sapere cosa farà il programma. Quindi spetta al programma controllare i permessi prima che inizi e decidere cosa fare. Non deve farlo però.
Nota: su Android c'è un manifest, in questo l'applicazione dichiara quali privilegi può usare. Il sistema operativo ucciderà qualsiasi applicazione che tenta di utilizzare un privilegio che non dichiara e il sistema operativo non garantisce sempre che un privilegio possa essere onorato. ad es. l'accesso alla rete potrebbe non essere disponibile.
2 È vero che ogni volta che sudo funziona, anche su funzionerà, e ogni volta che su funzionerà anche sudo? o con su, un utente può fare di più che con sudo? Come decide il sistema operativo quando sudo funziona e quando è necessario su?
sudo
e su
fare all'incirca il samething. Alcune differenze sono la gestione delle variabili di ambiente e altri problemi di sicurezza. Tuttavia, entrambi sono strumenti che ti consentono di diventare un altro utente ed entrambi hanno un utente predefinito root.
su
era lo strumento originale, ti richiede di inserire la password dell'utente / gruppo in cui stai cambiando.
sudo
è più recente e richiede, per impostazione predefinita, di inserire la propria password, ma può essere configurata per accettare la password dell'utente / gruppo a cui si sta passando o nessuna password. Permette anche molta configurazione, di quali comandi funzionerà, per chi e come si autenticherà con questo programma per questo utente su questa macchina. C'è anche sudoedit
questo è parte di sudo
e può essere usato per consentire la modifica come un altro utente ed evitare il problema di sicurezza del sub-shell fuori da un editor (chiamando exec dall'editor per eseguire un processo arbitrario con privilegi di escalation).