Eu estava lendo o seguinte código:
$ sudo bash
# cd /home/
# ./gitpull.sh
Por que preciso da primeira linha, o que ela faz exatamente? E se eu simplesmente fizesse $ sudo
em vez de $ sudo bash
?
Responder1
Ele inicia um shell bash como um root
usuário de nível. Você precisa disso porque normalmente usuários normais não conseguem acessar/home/
O perigo do que você está fazendo é que você está em um shell root - você pode bagunçar sua máquina com bastante facilidade.
Responder2
Você ficaria muito melhor fazendo:
$ sudo sh -c 'cd /home; ./gitpull.sh'
Porque os comandos invocados como root serão registrados. Invocar um shell diretamente através do sudo evita todos os benefícios de segurança do sudo e deve ser evitado.
Responder3
sudo <shell>
, se funcionar, revela uma instalação deficiente do sudo e uma potencial fraqueza de segurança.
sudo
não deve ser configurado para permitir comandos arbitrários como shell; o objetivo sudo
é permitir que usuários não-root autenticados executem determinados comandos como root, sem saber a senha do root.
Se sudo bash
for permitido a qualquer usuário, esse usuário será root simplesmente por saber sua própria senha.
Se um invasor obtiver a senha de qualquer uma das contas que são capazes de fazer isso sudo bash
, o invasor terá root.
A maneira correta de fazer o equivalente a sudo bash
(obter um shell de root) é su
, seguido de fornecer a senha de root, não a sua.
Responder4
sudo
permite que os usuários executem programas com os privilégios de segurança de outro usuário (normalmente o superusuário ou root).
bash
inicia um novo shell bash.
Portanto, sudo bash
inicia um novo shell bash com o privilégio de segurança do usuário root.