Quando você usa sudo
, você executa um programa como o superusuário (root), para que os arquivos criados sejam criados como o superusuário.
Quando eu executo '# sudo touch newfile' minha expectativa era de que o arquivo seria de minha propriedade, não de root, já que meu entendimento do sudo é que ele está dando privilégios de root ao usuário, mas na verdade não muda o usuário.
Eu tenho um mal-entendido fundamental sobre o que é o sudo?
O que mipadi disse, que você pode demonstrar comparando a saída desses dois comandos 'whoami' ("quem sou eu?"):
$ sudo whoami
$ whoami
sudo
(o nome vem do su "do" ou super usuário "do") permite que você execute o comando como root. Não dá ao seu usuário privilégios diferentes. Portanto, quando você executar #sudo touch newfile
é o usuário root que executou o comando touch newfile
e é por isso que o newfile é de propriedade do usuário root.
Mais informações na página do Sudo .
Você pode pensar no 'su' no sudo como "alternar usuário". Se você não disser qual usuário executar como, o padrão será root
, o superusuário, também associado ao su.
sudo -u yourself touch newfile
se você deseja que o arquivo seja de propriedade de yourself
.
Sua suposição de que sudo
não altera o ID do usuário está correta na perspectiva do restante de sua sessão. Pense nisso como su
+ touch newfile
+ exit
. Então, em seu shell você "permanece", mas sudo
executa seu comando em um novo processo com outro ID do usuário efetivo.