EDITAR: issoSticky bit habilitado O script não pode gravar em um arquivo raizparece ser um problema semelhante
EDITAR:Como posso usar SetUID em um script de shell para executar como usuário não root?é muito semelhante também.
Eu tenho um script, vamos chamá-lo de read.sh. Eu tenho um arquivo, vamos chamá-lo de secreto.
# cd /home/normie
# echo "some stuff" > secret
# echo "#!/bin/bash" > read.sh
# echo "cat secret" >> read.sh
# chmod 600 secret
# chmod 4755 read.sh
# su normie
$ ./read.sh
<<Error about not having access to secret>>
Perdi algo? Achei que o bit SUID fazia o script rodar como proprietário. Quando executo o seguinte
# echo "touch newfile" > sumfile.sh
# chmod 4755 sumfile.sh
# su normie
$ ./sumfile.sh
$ ls -alh
<<newfile shows as owned by root>>
O que está acontecendo aqui e como faço para que funcione da maneira que desejo? Do jeito que eu quero, quero que usuários regulares executem um script específico com acesso root total. (Eu pensei que era isso que o suid fazia)
Responder1
Instale o sudoapt install sudo
Torne os usuários relevantes parte de algum grupogroupadd group && usermod -g group user
Adicione o seguinte ao /etc/sudoers%group (ALL)=(root:root) NOPASSWD:/path/to/script.sh
Adicione um alias a .bashrcalias ALIAS='sudo /path/to/script.sh'" >> ~user/.bashrc
Todos os membros do grupo agora podem executar o script em questão como root.
Resposta descaradamente roubada deComo posso usar SetUID em um script de shell para executar como usuário não root?(usuário9517)