Por que o bit suid não tem efeito em um script shell ou perl? [duplicado]

0

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?

    
por Squidly 17.03.2015 / 15:49

2 respostas

1

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 .

    
por 17.03.2015 / 15:53
0

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.

    
por 17.03.2015 / 16:10