como mudar para outro usuário com senha no shell script

0

Eu fiz o login no ambiente UNIX com o user1, neste ambiente eu tenho um script de shell que contém alguma tarefa que precisa ser feita no caminho diferente com o usuário diferente, diga user2 porque o usuário1 não tem acesso a esse caminho.

Eu quero mudar para user2 do user1 no shell script para fazer essa tarefa, e depois de completar a tarefa eu quero mudar novamente para user1 do user2.

Por favor, sugira como posso alcançar este cenário.

Estou chamando o shell script com java, então se você tiver outra maneira, sugiro

    
por vijendra 16.12.2016 / 11:59

2 respostas

1

Você pode conseguir o que deseja com sudo : você pode permitir que o usuário2 execute o script que precisa como usuário1, permitindo somente executar esse script, preservando assim a segurança do seu sistema ( user2 não pode ser desonesto e usar um shell como user1). Você pode fazer isso por:

  1. sudo visudo (para editar o arquivo de configuração do sudo)
  2. Adicione isto ao final do arquivo: user2 ALL = (user1) NOPASSWD:/path/to/your/script.sh
  3. Salve e feche o arquivo.

Agora, se você abrir um shell como user2, poderá usar sudo -u user1 /path/to/your/script.sh para executá-lo como user1; você pode usar esse mesmo comando do java. A segurança é preservada, pois o usuário2 não pode executar um shell como user1: sudo -u user1 bash será negado.

No entanto , acho que uma solução cada vez mais limpa seria obtida apenas criando um grupo que user1 e user2 compartilhariam e usando esse grupo para gerenciar a permissão de execução do arquivo. Dependendo de suas necessidades, convém também considerar as ACLs ou o bit setuid (por exemplo, chmod 4700 /path/to/your/script.sh ) se mais usuários precisarem executar esse script como user1.

    
por 16.12.2016 / 12:58
0

Eu assumo que o usuário1 não possui acesso sudo sem senha, correto? Se isso acontecer, você pode usar o comando runuser.

runuser -l user2 -c 'whoami'

Você pode apenas usar o su / sudo se tiver a configuração de permissões do sudo.

su - user2 -c 'whoami'

No entanto, eu suponho que você não tem sudo sem senha e / ou você pode não ter a senha para user2. Você pode ser complicado gerando um par de chaves RSA para user1 e, em seguida, anexando a chave id_rsa.pub ao arquivo $ HOME / .ssh / authorized_keys do usuário2 para habilitar a Autenticação de chave pública RSA e usar o SSH para fazê-lo sem uma senha.

Como user1, execute o seguinte; ssh keygen Basta pressionar enter através dos prompts Em seguida, execute o seguinte para adicionar a chave automaticamente (você pode fazer isso manualmente para). Se você estiver usando este comando, precisará da senha do usuário2 somente na primeira vez.

ssh-copy-id -i $ HOME / .ssh / id_rsa.pub user2 @ hostname

Se isso funcionar, você deve ser capaz de fazer o login como user1 e, em seguida, executar ssh user2 @ localhost para efetuar login como usuário2 sem uma senha. Certifique-se de que / etc / ssh / sshd_config no servidor tenha a autenticação PublicKey habilitada.

Então, para executar remotamente o comando, você pode executar algo como:

ssh user2 @ localhost "comando-remoto1; comando-remoto2"

    
por 16.12.2016 / 12:23