Dal momento che le risposte sono difficili da capire (per me) e ci sono voluti alcuni pensieri per capirlo ( questo commento mi ha fatto capire), spero di dare una spiegazione migliore.
1. Cosa succede in fakeroot
Niente di più di quello che succede con il tuo stesso utente. Assolutamente niente di più. Se tu fakeroot
(che quando viene chiamato ti dà una nuova shell, come sudo
farebbe), fingi di fare cose per le quali avevi bisogno di autorizzazione, ed esci, non accadrebbe assolutamente nulla.
Se ci pensate, è una totale perdita di tempo. Perché dovresti fare cose che in realtà non accadranno? È da pazzi. Non avresti potuto semplicemente non fare nulla e non ci sarebbe stata alcuna differenza, dal momento che non ne esiste traccia.
Apetta un minuto...
2. La traccia di fakeroot
Ci potrebbe essere una traccia sinistra fakeroot
. Diamo un'occhiata ai comandi nella risposta di MortenSickel che è piuttosto carina e merita un voto:
$ fakeroot
# echo "Wow I have root access" > root.tst
# ls -l root.tst
-rw-rw-r-- 1 root root 23 Oct 25 12:13 root.tst
# ls -l /root
ls: cannot open directory /root: Permission denied
# exit
$ ls -l root.tst
-rw-rw-r-- 1 ubuntu ubuntu 23 Oct 25 12:13 root.tst
A prima vista, sembra che aver usato sia fakeroot
stata una totale perdita di tempo. Alla fine, se non avessi usato fakeroot
, avresti ottenuto la stessa cosa.
La cosa sottile qui è questa:
$ cat root.tst
Wow I have root access
Ciò significa che il contenuto del file ricorda ancora di essere un root. Si potrebbe dire che il mancato utilizzo fakeroot
avrebbe prodotto gli stessi risultati. Hai ragione, questo esempio è troppo semplice.
Facciamo un altro esempio:
$ fakeroot
# touch x
# touch y
# chown myuser:myuser x
# ls -l > listing
# exit
$ ls -l
total 4
-rw-rw-r-- 1 myuser myuser 152 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 y
$ cat listing
total 0
-rw-rw-r-- 1 root root 0 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 root root 0 Jan 7 21:39 y
Vediamo cosa è successo. Ho fatto finta di essere root
, che è totalmente inefficace, e creato x
e y
. Ho fatto finta x
di appartenere myuser
e y
di appartenere root
. In realtà appartengono entrambi myuser
(come possiamo vedere alla fine), ma ho solo fatto finta che fosse così.
Quindi ho creato un elenco e salvato la mia immaginazione in un file. Più tardi, quando guardo indietro al file, posso vedere da chi immaginavo che i file dovessero essere di proprietà. Ancora una volta, in realtà non sono di proprietà di persone che immaginavo, l'ho semplicemente immaginato.
3. Quindi ... Perché lo vuoi di nuovo?
Potresti dire che non ho davvero bisogno di fingere di essere root per creare quella lista. Avrei potuto semplicemente creare l'elenco, quindi modificarlo per riflettere la mia immaginazione. Hai ragione, non ne avevi bisogno fakeroot
. In effetti, sapendo che in fakeroot
realtà non fa nulla, non puoi aver acquisito alcuna abilità che non avevi prima.
Ma , e questo è fakeroot
tutto, modificare l'elenco potrebbe non essere banale. Come per un pacchetto che può essere installato sul tuo sistema, hai un tar
ed, gzip
ed, xz
ed, bzip2
ed o qualsiasi altro formato che tenga uniti i tuoi file e ricordi i loro permessi e proprietari. Puoi modificare facilmente il file compresso e modificare la proprietà di un file? Non ti conosco, ma non riesco a pensare a un modo.
Potrebbe esserci uno strumento creato che, una volta compresso tutto, modifica il file compresso e modifica a livello di codice le proprietà e le autorizzazioni? Sì, ci potrebbe. Quindi, potresti falsificare le proprietà prima di comprimere o modificarle dopo. Il popolo Debian ha deciso che il primo è più semplice.
4. Perché non usare solo sudo
?
Prima di tutto, non hai bisogno dei privilegi di root per compilare il software e non hai bisogno dei privilegi di root per comprimerli. Quindi, se non ne hai bisogno, dovresti essere davvero un utente di Windows per pensare anche a ottenere quell'autorizzazione. Ma a parte il sarcasmo, potresti non avere nemmeno la password di root.
Inoltre, supponiamo che tu abbia i permessi di root. E supponiamo che tu voglia fingere che un file dovrebbe avere accesso in lettura solo alla radice. Quindi sudo
, cambiando effettivamente il proprietario del file e le autorizzazioni root
, si esce dalla shell di root e si tenta di impacchettare tutto. Fallisci perché ora non puoi più leggere il file poiché non hai accesso root. Quindi devi sudo
comprimere e compilare il pacchetto come root. In effetti, devi fare tutto come root.
Questa è Bad TM .
Come packager, non hai bisogno delle autorizzazioni di root e non dovresti ottenerlo. Quando si installa un pacchetto, potrebbe essere necessario installare alcuni file ( A
) come root ed è qui che sono necessari i permessi di root. Tutto ciò che fakeroot
serve è renderlo possibile. Consente all'elenco dei packager A
di proprietà di root per l'archiviatore, in modo che quando il pacchetto viene decompresso dall'utente, l'archiviatore richiede l'autorizzazione di root e crea A
come di proprietà di root.
sudo
osu
perché è la propria macchina.fakeroot
ha due usi 1) fa credere ai programmi di credere che tu sia davvero un utente root, che alcuni software proprietari scritti male potrebbero richiedere anche se non necessari (di solito lo sviluppatore di Windows è diventato Linux) e 2) consente di emulare la modalità file e i cambiamenti di proprietà che non vorresti altrimenti sarebbe in grado di farlo, principalmente per creare untar
file con permessi e proprietà corretti, utile ad esempio durante il packaging del software.