Tente exec ./sbash com -p.
sh:~# cp /bin/bash /bin/ape
sh:~# chmod +s /bin/ape
sh:~**$** /bin/ape -p
ape-3.2#
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.
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.
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
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.)
Como outros já mencionaram, isso ocorre por design.
Tente usar scripts sudo em vez de setuid.