Eu tenho 2 usuários. test1
que eu criei /sbin/nologin
e não tem senha. test2
que tem sudo
privilégio e tem senha.
Eu tenho este script: /data/tempWork/fazitst
que deve ser executado em test2
. agora eu quero executar este script com, test1
mas eu quero que ele seja executado em test2
.
Eu tentei isso como test1
:
/bin/su -c "/data/tempWork/fazitst " - test2
mas não funcionou. eu estava executando este comando de um aplicativo, pois não posso usar ssh
, não posso depurar isso corretamente. não há registro. Eu tentei este comando com root e funcionou.
mas eu acho que requer senha. então como posso executar meu script com test1
under test2
sem senha?
É exatamente
sudo
para isso que foi projetado.Primeiro, alguém com acesso root precisará fazer uma linha de configuração como esta para
/etc/sudoers
(ou/etc/sudoers.d/*
, se suportado pela versão do seu SO):Isso autorizará user
test1
(emALL
hosts usando uma cópia dessesudoers
arquivo) a executar como usertest2
, sem uma solicitação de senha, o comando/data/tempWork/fazitst
com qualquer parâmetro de linha de comando (ou nenhum).Então, o usuário
test1
pode executá-lo com:Se a
$HOME
variável de ambiente precisar apontar para o diretório inicial do usuáriotest2
durante a execução do comando, você pode ou não precisar adicionar a-H
opção aosudo
comando, dependendo da configuração padrão dasudo
versão do seu SO. Nesse caso, o comando para o usuáriotest1
executar seria:Se for importante que o ambiente seja definido exatamente como ao executar
su - test2
, a-i
opção desudo
é necessária: