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.