(Ubuntu) setuid bash não funciona

3

Aqui está o código:

(root:)

# mkdir /test
# cp /bin/bash /test/sbash
# chmod a+s /test/sbash

(user1:)

$ cd /test
$ ./sbash
$ mkdir trycreate
mkdir: cannot create directory 'trycreate': Permission denied

E os scripts bash com o conjunto de bits setuid não funcionam.

A propósito, meu script setuid perl funciona:

test.pl: (com setuid bit set, owner = root)

#!/usr/bin/perl
mkdir('/test/tryperlcreate') or die 'failed'; 

execute test.pl pelo user1 irá criar o diretório de propriedade de root.

    
por Xiè Jìléi 13.12.2009 / 14:18

5 respostas

3

Tente exec ./sbash com -p.

sh:~# cp /bin/bash /bin/ape
sh:~# chmod +s /bin/ape
sh:~**$** /bin/ape -p
ape-3.2#
    
por 17.09.2010 / 13:34
6

Você não pode criar scripts SUID. Felizmente.

Você pode estar interessado no programa "wrapper" da SUID aqui: link

Eu também devo adicionar, por favor, por favor, por favor, certifique-se de que você realmente precisa fazer isso antes de fazê-lo. Os binários SUID podem ser um grande buraco no seu sistema.

    
por 13.12.2009 / 14:32
4

Eu já pude repassar o que já foi feito até a morte, mas essa é uma ótima leitura.

Basicamente, scripts de shell setuid não funcionam por padrão

link

    
por 13.12.2009 / 14:54
1

Isso ocorre por design, tanto no Ubuntu quanto em muitos outros sistemas modernos * nix. Enquanto um setuid é sempre uma potencial vulnerabilidade de segurança, isso é extra quando lidamos com scripts de shell.

(O problema clássico é fazer alguém brincar com o que é considerado argumento separado modificando a variável de ambiente IFS.)

    
por 13.12.2009 / 14:37
1

Como outros já mencionaram, isso ocorre por design.

Tente usar scripts sudo em vez de setuid.

    
por 13.12.2009 / 18:20

Tags