Eu tenho o script.sh que deve ser executado como usuário2. No entanto, esse script pode ser executado apenas em user1 no meu aplicativo.
Eu gostaria que o seguinte comando fosse executado:
su user2 -C script.sh
mas seja capaz de executar sem senha.
Também quero que isso seja muito restritivo, pois no user1 só é possível executar o script.sh no user2 e nada mais.
Eu tentei fazer isso com o arquivo sudoers e fiquei confuso sem parar depois de horas tentando.
Se alguém puder fornecer um exemplo explícito de como isso pode ser realizado (em vez de algo genérico como usar sudoers), isso seria muito apreciado.
Respostas:
Ligue
visudo
e adicione isto:Os caminhos do comando devem ser absolutos ! Então chame
sudo -u user2 /home/user2/bin/test.sh
de umauser1
concha. Feito.fonte
tente executar:
Isso executará o comando como nome de usuário, desde que você tenha permissões para sudo como esse usuário.
fonte
sudo su -c "Your command right here" -s /bin/sh otheruser
su username -c "command"
.screen
como outro usuário, isso pode ser útil - linuxquestions.org/questions/linux-software-2/…username
(ou na perguntauser2
) tiver uma senha, isso não permitirá ignorar a solicitação. a outra resposta: não é necessária senha, tanto user1 quanto user2.O comando acima está correto, mas no Red Hat, se o selinux estiver aplicando, não permitirá que o cron execute scripts como outro usuário. exemplo;
execl: couldn't exec /bin/sh execl: Permission denied
Eu tive que instalar o setroubleshoot e setools e execute o seguinte para permitir:
fonte