Sudo Su login automatizado

6

Eu quero automatizar o processo de login com sudo su . Eu já vi muitas perguntas sobre isso, mas nenhuma delas está funcionando para mim.

Automatize o login com sudo e su

Aqui está o que eu tentei até agora

echo "mypassword" | sudo -S su - user
echo "mypassword\n" | sudo -S su - user
echo mypassword | sudo -S su - user
echo "mypassword" | sudo -S su user
echo mypassword | sudo -S su user

Estou apenas recebendo a resposta abaixo

-bash: line 1: mypassword: command not found

Minha versão do Bash

GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) 
Copyright (C) 2009 Free Software Foundation, Inc.

Como nota, minha senha contém caracteres especiais @

@ sudo
usage: sudo [-D level] -h | -K | -k | -V
usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid]
usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] file ...
    
por Reddy 17.07.2014 / 06:07

2 respostas

11

Não faça fazer isso! Isso deixará sua senha no histórico do seu shell!

Se você realmente tiver que fazer isso, o que eu recomendo é que você configure seu arquivo sudoers para permitir um login sem senha.

Para fazer isso, execute o comando sudo visudo e adicione uma linha como esta:

reddy ALL=NOPASSWD: /bin/su - *

(onde reddy seria seu nome de usuário).

Se você precisar conceder esse acesso a toda a equipe, crie um grupo (UNIX) com a equipe e substitua reddy por %team (o grupo de equipe).

(Além disso, um pouco fora do tópico: o comando echo já adiciona o \n que você precisava. Se você realmente quisesse o contrário (o que você não queria), o comando seria echo -n .)

    
por 17.07.2014 / 06:50
6

Concordo com Valmiky que você está indo pelo caminho errado, mas a linha de sudoers não é o que eu recomendaria. Com a sua linha, você está autorizado a sudo para qualquer outra pessoa, incluindo root sem senha. Isso efetivamente dá a você acesso total ao servidor, o que significa que a parte /bin/su da linha é redundante.

Se você só puder usar sudo para esse usuário em particular sem fornecer sua senha, a linha correta deve ser

%team ALL = (user) NOPASSWD: ALL

Agora, você pode executar qualquer coisa como esse usuário sem fornecer uma senha, por exemplo, qualquer coisa que exija sudo para root ainda exigirá uma senha.

Você pode agora no seu .bashrc do

 sudo -u user /bin/bash
    
por 17.07.2014 / 07:31