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
Tags permissions linux setuid