executa um comando sudo, especificando a senha na mesma linha

2

Eu gostaria de fazer algo assim:

sudo -p password rm /a/file

Posso colocar a senha e o usuário na mesma linha?

Minha versão do Sudo é 1.8.9p5

    
por adamista 10.04.2016 / 17:43

2 respostas

9

sudo não tem uma opção para especificar a senha, mas você ainda pode fazer a autenticação na linha de comando, assim:

echo password | sudo -u root --stdin

ou apenas

echo password | sudo -S

consultando a página de manual do sudo :

-S, --stdin
Write the prompt to the standard error and read the password from the standard input instead of using the terminal device. The password must be followed by a newline character.

e

-u user, --user= user
Run the command as a user other than the default target user (usually root). The user may be either a user name or a numeric user ID (UID) prefixed with the ‘#’ character (e.g. #0 for UID 0). When running commands as a UID, many shells require that the ‘#’ be escaped with a backslash (‘\’). Some security policies may restrict UIDs to those listed in the password database. The sudoers policy allows UIDs that are not in the password database as long as the targetpw option is not set. Other security policies may not support this.

Mas o sudo está em desenvolvimento há muito tempo. Verifique a versão:

-V, --version
Print the sudo version string as well as the version string of the security policy plugin and any I/O plugins. If the invoking user is already root the -V option will display the arguments passed to configure when sudo was built and plugins may display more verbose information such as default options.

O suporte para opções longas foi adicionado em 2013 .

Além de autenticar, você precisa de algo para sudo para fazer , por exemplo, um comando. Costumo verificar se está funcionando apenas

sudo id

que deve mostrar o usuário root , por exemplo,

uid=0(root) gid=0(root) groups=0(root)
    
por 10.04.2016 / 17:49
1

Embora OP possa ter uma boa razão para querer fazer exatamente isso, geralmente é uma má idéia (a senha pode ser lida por ps, e assim por diante) e eu queria fornecer uma alternativa mais segura.

Uma solução melhor se você quiser executar algo com sudo sem colocar sua senha é permitir que seu usuário faça exatamente esse comando sem senha.

Abra o arquivo sudoers com sudo visudo e adicione a seguinte linha (obviamente substitua o nome de usuário no início e o comando no final):

alice ALL = NOPASSWD: /full/path/to/command

Isso é explicado mais aqui: link

    
por 11.04.2016 / 18:41

Tags