É mais seguro fazer:
$ sudo dnf update
[insira a senha do usuário]
ou
$ su - [enter root password] # dnf update
Sempre presumi que eles eram exatamente a mesma coisa, porque o sudo utiliza setuid-root, então o processo executado como o primeiro argumento do sudo é executado com o ID efetivo do sudo, que é root.
Acho que minha pergunta é:O sudo eventualmente descarta seu ID efetivo para o usuário normal? Então, nesse caso, o número 1 acima seria uma aposta mais segura, porque se o programa com o qual o sudo está sendo executado for comprometido por um invasor, então há uma chance de o invasor não estar executando como root, porque o privilégio já foi eliminado?
Responder1
Este primeiro comando (provavelmente) exigirá sua senha correta, será executado dnf update
como root e sairá:
$ sudo dnf update [enter user password]
Este segundo comando exigirá a senha do root e então iniciará um shell de root. Nesse shell você executa dnf update
:
$ su - [enter root password] # dnf update
Você não está realmente comparando iguais. Você pode comparar esses dois comandos, ambos iniciando um shell root no qual você executa (pelo menos) o comandodnf update
sudo -s
dnf update
su -
dnf update
Ou você pode comparar esses dois comandos, ambos iniciando uma instância com privilégios de root dnf update
e depois voltando para o shell do chamador
sudo dnf update
su root -c 'dnf update'
O que acho que você está realmente perguntando é se é melhor invocar um único comando com privilégios de root ou iniciar um shell com privilégios de root para executar um ou mais comandos.
- Se a
dnf
funcionalidade ou seus downloads estiverem comprometidos de alguma forma, não importa como ele é executado, o problema é que ele é executado - Se você está falando em comprometer o seu sistema, então tudo se resume à segurança da senha do usuário (
sudo
) versus a senha do root (su
) - Se você está considerando se pode confiar no user , então realmente não importa se você obtém um shell root no qual executa vários comandos ou um shell root para executar um comando por vez; o problema é que os comandos podem ser executados como root
Pessoalmente eu misturo e combino meu uso dependendo da necessidade. Eu raramente uso su
, mas uso sudo {command....}
para sessões rápidas ou sudo -s
para uma sessão curta onde preciso executar vários comandos (por exemplo, ferramentas de gerenciamento de pacotes Debian, apt-get update
seguidas por apt-get upgrade
).
Responder2
Sim, sudo
elimina privilégios quando o processo filho termina. Nesse caso dnf
. Onde as su
descarta privilégios quando o processo filho termina. Neste caso, um shell interativo. Portanto, o sudo
exemplo elimina o privilégio mais cedo.
sudo
também tem outras vantagens não abordadas aqui. (ex. o sudoers
arquivo, pode ser usado para dar mais controle sobre o que cada usuário pode ou não fazer).