Estou tentando fornecer acesso limitado a determinadas funcionalidades usando links, scripts bash e SUID. O script SUID não é executado com acesso root

Estou tentando fornecer acesso limitado a determinadas funcionalidades usando links, scripts bash e SUID. O script SUID não é executado com acesso root

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)

informação relacionada