Os comandos SSH falham apesar das permissões visudo ALL

1

Configurando um servidor rails (Ubuntu 12.10) no DigitalOcean e eu quero que um usuário não root execute alguns comandos de implementação com acesso root prefixando sudo no comando e digitando uma senha. Eu pensei em editar visudo como abaixo, mas as permissões foram negadas. Estou faltando alguma coisa?

Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# User privilege specification
root    ALL=(ALL:ALL) ALL
nonrootuser ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Eu fiz nonrootuser como membro do grupo deployers caso eu tenha vários agentes de implantação no futuro. Esse grupo não é chamado em visudo, mas eu não sei se é relevante, então estou mencionando aqui.

Comandos como este falham na minha caixa dev (não no servidor). Eu esperaria que isso anexasse o conteúdo da minha chave pública da caixa dev ao arquivo authorized_keys do servidor no servidor após solicitar a senha nonrootuser. O resultado real é permissões negadas .

cat ~/.ssh/id_rsa.pub | ssh -p 12345 [email protected] 'cat >> ~/.ssh/authorized_keys'

Eu tentei reiniciar a caixa completamente, e ainda sem alterações. Eu também tentei sudo cat... no meu comando canalizado sem resultados.

    
por David Fox 12.03.2014 / 23:42

2 respostas

1
  1. /etc/sudoers não concede nenhum privilégio diretamente à conta do usuário. Apenas autoriza o usuário a executar vários comandos através da ferramenta sudo (que os executa sob a conta root). Portanto, sudo cat /etc/shadow funcionaria, mas cat /etc/shadow ainda não.

  2. Pipes e redirecionamentos são processados pelo shell antes de cada comando ser executado ; isto é, se você executar sudo cat > somefile , seu shell (que é executado sob sua própria conta) primeiro tenta abrir somefile para gravação; e - se for bem - só então executa sudo cat com o arquivo anexado ao seu stdout. Em outras palavras, sudo não se aplica a redirecionamentos, a menos que você os transmita de alguma forma como parte do comando, por exemplo, sudo sh -c "cat > somefile" .

por 13.03.2014 / 01:08
1

Para que seus usuários tenham acesso ao sudo, de acordo com sua configuração do sudo que você postou, eles precisariam ser membros do grupo admin ou sudo. Se você quiser conceder isso aos implementadores do grupo, copie a configuração do grupo sudo para uma nova linha e altere-a para os implementadores.

%deployers   ALL=(ALL:ALL) ALL
    
por 13.03.2014 / 01:14