Por que o sudo bash é necessário?

3

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 fizesse $ sudo em vez de $ sudo bash ?

    
por David542 26.04.2012 / 21:01

6 respostas

7

Ele inicia um shell bash como um usuário com nível root . Você precisa porque normalmente usuários normais não podem acessar /home/

O perigo do que você está fazendo é que você está em um shell de root - você pode atrapalhar sua máquina com bastante facilidade.

    
por 26.04.2012 / 21:03
3

Você estaria muito melhor fazendo isso:

$ 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.

    
por 27.04.2012 / 06:35
1

O infame sudo é um acrônimo das sortes para Superuser Do.

Ele basicamente faz de um usuário normal um Super usuário por um tempo curto.

Em seu comando sudo bash, efetivamente você está dizendo Superuser fazer - > um shell Bourne (bash) Que abre um usuário root logado no shell.

Se você acabou de rodar o sudo, o sistema operacional não saberia o que fazer. Então, em geral, o sudo é seguido por um comando unix.

    
por 05.05.2012 / 18:06
0

sudo permite que os usuários executem programas com privilégios de segurança de outro usuário (normalmente o superusuário ou root).
bash inicia um novo shell bash.
Então, sudo bash inicia um novo shell bash com o privilégio de segurança do usuário root.

    
por 26.04.2012 / 21:07
0

sudo <shell> , se funcionar, revela uma má instalação do sudo e uma potencial fraqueza na segurança.

sudo não deve ser configurado para permitir comandos arbitrários como shell; a finalidade de sudo é permitir que usuários não-root autenticados executem determinados comandos como root, sem conhecer a senha raiz.

Se sudo bash for permitido para qualquer usuário, esse usuário é root simplesmente em virtude de saber sua própria senha.

Se um invasor obtiver a senha de qualquer uma das contas capazes de fazer sudo bash , o invasor terá raiz.

A maneira correta de fazer o equivalente a sudo bash (obter um shell de root) é su , seguida da senha de root, não da sua.

    
por 26.04.2012 / 21:43
0

Eu estou apostando sudo bash em vez de sudo ser especificado para

  • absolutamente assegure-se de que esteja chamando ./gitpull.sh do bash e não de outro shell, como tcsh , pdksh ou simples antigo sh . Tenho certeza de que a linha hashbang do script deve permitir que o script especifique o shell para executá-lo, mas talvez ele tenha sido omitido por algum motivo ou o redator de instruções não queira que você dependa disso.
  • Acredito que se você iniciar bash sem outros argumentos, ele não funcionará como um "shell de login" e talvez o script dependa disso.
  • uma força de hábito da pessoa que escreveu as instruções (talvez ele / ela trabalhe em um ambiente com vários shell).
  • talvez o escritor de instruções não seja muito hábil ou tenha maus hábitos de outros ambientes.

Também @nisdis está certo. O velho e simples sudo apenas imprime informações de uso. Mas por que não usar su ...

    
por 05.05.2012 / 18:21

Tags