Tudo o que precisa fazer é executar um script específico como um usuário específico que tem o nologin/false
shell indicado no /etc/passwd
.
Eu executaria o script como root e isso deveria ser executado como outro usuário. Corrida:
~# su -c "/bin/touch /tmp/test" testuser
funcionaria, mas preciso de um shell válido para o testuser. Eu sei que posso desativar a senha passwd -d testuser
e deixar o shell /bin/bash
dessa maneira para garantir um pouco, mas preciso ter o nologin/false
shell.
Basicamente, o que eu preciso é o que crontab
faz quando configuramos os trabalhos para serem executados como um usuário específico, independentemente deste ter nologin/false
shell.
ps Encontrei este segmento Executando um comando como um usuário nologin , mas não tenho idéia de como executar concatenate
o comando su -s /bin/sh $user
para o script.
root:root -rwsr-x---
?su -s /bin/bash -c 'exec /path/to/your/script &' test
runuser
, gostaria de salientar que osu -s SHELL
parâmetro torna o comando runuser praticamente inútil :) Obrigado Jan!Você pode fazer isso
sudo -u
se tiver instalado:fonte
sudo -u apache whoami
?sudo -u
provavelmente não é uma boa idéia para executar comandos como um usuário nologin, porque expõeSUDO_USER
o ambiente que é o real que chama o comando. Talvez eu esteja apenas pensando demais.Fornecendo o script como o argumento a ser executado em / bin / sh:
fonte
apercebi-me agora :
su -s "/ bin / bash" -c "/ bin / touch / tmp / testuser" testuser
talvez haja uma maneira melhor ?!
fonte
na verdade, a melhor maneira de fazer isso é via runuser
veja a página de manual para detalhes
esta ferramenta é usada para lidar com a situação, como o desenvolvedor disse em seu bolg
Sempre que um serviço está sendo executado como root e deseja alterar o UID usando o shell, ele deve usar runuser.
http://danwalsh.livejournal.com/55588.html
eu postei esta resposta em muitos palácios, perdoe-me se você achar isso irritante
fonte
Use sudo -u para especificar o usuário. Também use o sinalizador -i para definir também variáveis de ambiente do usuário de destino.
fonte
This account is currently not available.
Use o comando su com os comandos shell -s e -c. Como mostrado abaixo
fonte