Comportamento estranho para setuid e setgid

1

Estou fazendo um pequeno experimento com bits de privilégios especiais, como segue:

[root@localhost~]# useradd user1
[root@localhost~]# cp /bin/touch /home/
[root@localhost~]# chown user1:user1 /home/touch
[root@localhost~]# chmod u+s,g+s /home/touch
[root@localhost~]# ls -l /home/touch
-rwsr-sr-x 1 user1 user1 52656 Jun 26 14:17 /home/touch
[root@localhost~]# chmod o+w /usr/local/etc/
[root@localhost~]# ls -ld /usr/local/etc
drwxr-xrwx.2 root root 4096 Jun 26 14:14 /usr/local/etc/
[root@localhost~]# /home/touch /usr/local/etc/root.1
/home/touch: cannot touch '/usr/local/etc/root.1': Permission denied

Como o bit suid e o bit sgid estão definidos para o executável /home/touch , eu esperava que quando o root executasse o comando /home/touch /usr/local/etc/root.1 , o user:group efetivo fosse user1:user1 , que deveria ter acesso de gravação a% diretório co_de% (consulte /usr/local/etc ).

Mas o resultado me intrigou. Na verdade, qualquer pessoa que pertença ao grupo o=rwx falhará como o root, mas outros usuários podem executar o comando acima com sucesso.

Somente depois que eu mudei o modo de diretório por root , os usuários pertencentes ao grupo chmod g+w /usr/local/etc podem executar o comando sem erro de permissão.

Não deve o usuário efetivo: o grupo para quem está executando root seja /home/touch ? O que há de errado com o grupo raiz? Eu senti falta de alguma coisa?

Eu fiz o experimento no RHEL 6.4 de 64 bits

    
por yuanlinios 26.06.2014 / 17:07

0 respostas