setuid example da Wikipedia: 4700

3

Eu estava lendo sobre o setuid na Wikipedia . Um dos exemplos é o seguinte:

4700

SUID on an executable file owned by "root"

A user named "tails" attempts to execute the file. The file owner is "root," and the permissions of the owner are executable—so the file is executed as root.

Without SUID the user "tails" would not have been able to execute the file, as no permissions are allowed for group or others on the file. A default use of this can be seen with the /usr/bin/passwd binary file.

Eu não entendo isso. Como o usuário "tails" pode executar esse arquivo, pois ele não é o proprietário do arquivo, e as permissões de grupo e outras não estão disponíveis?

Eu tentei recriar esse cenário e, de fato:

$ su -c 'install -m 4700 /dev/null suidtest'
$ ls -l suidtest
-rws------ 1 root root 0 21 dec 07:48 suidtest*
$ ./suidtest
bash: ./suidtest: Permission denied

Eu só tenho esse trabalho com permissões de 4755 . Além disso, o uso padrão mencionado no exemplo da Wikipedia (o /usr/bin/passwd ) tem, de fato, 4755 permissões.

O exemplo está correto e estou faltando alguma coisa, ou isso é um erro?

    
por Stefan van den Akker 21.12.2015 / 08:10

1 resposta

3

Você está certo e o artigo da Wikipedia está errado. Veja abaixo um exemplo:

$ ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd
$ sudo cp /usr/bin/passwd /tmp/
$ cd /tmp
$ ls -l passwd
-rwxr-xr-x 1 root root 30768 Dec 21 07:43 passwd
$ sudo chmod 4700 passwd
$ ls -l passwd
-rws------ 1 root root 30768 Dec 21 07:43 passwd
$ ./passwd
bash: ./passwd: Permission denied
$ sudo chmod 4701 passwd
$ ./passwd 
Changing password for user vagrant.
Changing password for vagrant.
(current) UNIX password: 
$ 
    
por 21.12.2015 / 08:44