suid bit
está desativado para scripts na maioria das distribuições linux e unix porque abre várias falhas de segurança.
No entanto, comandos nativos e executáveis binários podem ser usados com suid bit
.
Como experiência de brincar com o bit suid, tentei escrever um script para executar apt-get update
a partir de um script bash e, em seguida, definir o bit suid nele para que eu pudesse executar ~/update
ou algo assim.
apt-get update
poderia ser qualquer coisa aqui - algum programa que escuta em um soquete privilegiado, ou grava em /
ou qualquer outra coisa que tenha que ser executada como root. Por favor, não use apt-get update
aqui.
A primeira tentativa é esta, que não funcionou, falhando com can't get lock, are you root?
. O motivo parece ser Setuid bit parece não ter efeito sobre o bash .
#!/bin/bash
apt-get update
Então, pensei em tentar ignorar o shell, mas isso também não funcionou, pelo mesmo motivo.
#!/usr/bin/perl
system("apt-get", "update").
Eu tenho as permissões corretas (afaik) - sudo chmod 4755 ~/update
.
Eu entendi mal o setuid ou estou apenas sentindo falta de algo simples?
suid bit
está desativado para scripts na maioria das distribuições linux e unix porque abre várias falhas de segurança.
No entanto, comandos nativos e executáveis binários podem ser usados com suid bit
.
para que isso funcione, tente
cp /bin/bash /bin/mybash
chmod 4755 /bin/mybash
e use /bin/mybash
como shebang ( #!/bin/mybash
na primeira linha) para o seu script.
você deve evitar isso nos sistemas de produção.