Como as respostas são difíceis de entender (para mim) e foram necessárias algumas considerações para entender ( esse comentário me fez entender), vou dar uma explicação esperançosamente melhor.
1. O que acontece no fakeroot
Nada além do que acontece com seu próprio usuário. Absolutamente nada mais. Se você fakeroot
(que quando chamado lhe der um novo shell, como sudo
faria), fingir fazer coisas pelas quais você precisava de permissão e sair, absolutamente nada aconteceria.
Se você pensar bem, é uma total perda de tempo. Por que você faria coisas que realmente não vão acontecer? É insano. Você poderia simplesmente não ter feito nada disso e não haveria diferença, pois não há vestígios.
Espere um minuto...
2. O traço de fakeroot
Não poderia ser um traço deixado de fakeroot
. Vejamos os comandos na resposta de MortenSickel, que são bastante agradáveis e merecem uma votação:
$ 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
À primeira vista, parece que o uso fakeroot
foi uma total perda de tempo. No final, se você não tivesse usado fakeroot
, teria a mesma coisa.
A coisa sutil aqui é esta:
$ cat root.tst
Wow I have root access
O que significa que o conteúdo do arquivo ainda se lembra de ser uma raiz. Você pode dizer que não usar fakeroot
teria produzido os mesmos resultados. Você está certo, este exemplo é muito simples.
Vamos dar outro exemplo:
$ 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
Vamos ver o que aconteceu. Eu fingi ser root
, o que é totalmente ineficaz, e criei x
e y
. Eu fingi x
pertencer myuser
e y
pertencer a root
. Eles realmente pertencem a myuser
(como podemos ver no final), mas eu apenas fingi que era assim.
Então eu criei uma lista e salvei minha imaginação em um arquivo. Mais tarde, quando olho para o arquivo, vejo quem imaginei que os arquivos deveriam pertencer. Novamente, eles não são de propriedade de pessoas que imaginei, simplesmente imaginei isso.
3. Então ... Por que você quer isso de novo?
Você pode dizer que eu realmente não precisava fingir ser root para criar essa listagem. Eu poderia simplesmente criar a listagem e editá-la para refletir minha imaginação. Você está certo, você não precisava fakeroot
disso. De fato, sabendo que fakeroot
realmente não faz nada, você não pode ter adquirido nenhuma habilidade que não possuía antes.
Mas , e é disso que fakeroot
se trata, editar a listagem pode não ser trivial. Como acontece com um pacote que pode ser instalado no seu sistema, você tem um tar
ed, gzip
ed, xz
ed, bzip2
ed ou qualquer outro formato que mantenha seus arquivos juntos e lembre-se de suas permissões e proprietários. Você pode modificar facilmente o arquivo compactado e editar a propriedade de um arquivo? Não sei você, mas não consigo pensar em uma maneira.
Poderia haver uma ferramenta criada que, depois que tudo é compactado, modifica o arquivo compactado e edita programaticamente as propriedades e permissões? Sim, poderia. Portanto, você pode falsificar as propriedades antes da compactação ou alterá-las depois. O pessoal do Debian decidiu que o primeiro é mais fácil.
4. Por que não usar sudo
?
Primeiro de tudo, você não precisa de privilégios de root para criar software e não precisa de privilégios de root para compactá-los. Portanto, se você não precisar, seria realmente um usuário do Windows para conseguir obter essa permissão. Mas sarcasmo à parte, você pode até não ter senha de root.
Além disso, digamos que você tenha permissões de root. E digamos que você queira fingir que um arquivo deve ter acesso de leitura apenas à raiz. Então sudo
, você realmente muda o proprietário e as permissões do arquivo para root
, sai do shell raiz e tenta empacotar tudo. Você falhou porque agora não pode mais ler o arquivo, pois não possui acesso root. Então você precisa sudo
compactar e compilar o pacote como root. Efetivamente, você precisa fazer tudo como raiz.
Esta é a TM ruim .
Como empacotador, você não precisa de permissões de root e não deve obtê-lo. Quando você instala um pacote, pode ser necessário instalar algum arquivo ( A
) como root e é aí que você precisa de permissões de root. Tudo o que fakeroot
faz é tornar isso possível. Ele permite que o empacotador liste A
como pertencente à raiz do arquivador, de modo que, quando o pacote é descompactado pelo usuário, o arquivador exige permissão de raiz e cria A
como pertencente à raiz.
sudo
ousu
porque é sua máquina.fakeroot
tem dois usos 1) engana os programas a acreditar que você é realmente usuário root, o que algum software proprietário mal escrito pode exigir, mesmo que não seja necessário (geralmente o desenvolvedor do Windows usa o Linux) e 2) permite emular o modo de arquivo e as alterações de propriedade que você não faria ' caso contrário, será capaz de fazer, principalmente para criar umtar
arquivo com permissões e propriedade corretas, útil, por exemplo, ao empacotar software.