Qual deles é mais seguro? sudo atualização dnf OU su - ; atualização dnf

Qual deles é mais seguro? sudo atualização dnf OU su - ; atualização dnf

É mais seguro fazer:

  1. $ sudo dnf update[insira a senha do usuário]

ou

  1. $ 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 updatecomo 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 updatee 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 dnffuncionalidade 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 -spara uma sessão curta onde preciso executar vários comandos (por exemplo, ferramentas de gerenciamento de pacotes Debian, apt-get updateseguidas por apt-get upgrade).

Responder2

Sim, sudoelimina privilégios quando o processo filho termina. Nesse caso dnf. Onde as sudescarta privilégios quando o processo filho termina. Neste caso, um shell interativo. Portanto, o sudoexemplo elimina o privilégio mais cedo.

sudotambém tem outras vantagens não abordadas aqui. (ex. o sudoersarquivo, pode ser usado para dar mais controle sobre o que cada usuário pode ou não fazer).

informação relacionada