SUID, SGID, Sticky bit

Há casos em que as permissões de acesso a ficheiros/directorias são de 4 dígitos em vez de só 3, como por exemplo, em vez de 770 temos 4770. Neste casos é porque estamos a usar mais permissões para além das habituais (user, group, others), estamos também a usar SUID, SGID e o sticky bit.

Para verificarmos as permissões em modo numérico:
$ stat -c "%a %n" *

SUID (Set User ID)

O SUID quando aplicado faz com que o programa corra com o ID do dono e não com o ID do utilizador que o está a executar.
Esta permissão de acesso aparece no campo do User e é utilizado em ficheiros executáveis e não tem efeito em directorias.

Aplica-se o SUID num ficheiro utilizando,
$ chmod u+s ficheirinho

Para verificarmos as permissões,
$ ls –la ficheirinho
-rwsrw-r– 1 joana joana 0 Jun 30 15:56 ficheirinho

Caso o SUID esteja aplicado mas o ficheiro não é executável, em vez de s (minúsculo) aparece S (maiúsculo).
$ ls -la ficheirinho
-rwSrw-r– 1 joana joana 0 Jun 30 15:56 ficheirinho

SGID (Set Group ID)

Quando o SGID é aplicado, os novos ficheiros criados dentro de uma directoria assumem o mesmo ID do grupo da directoria, é bastante útil para partilhar uma directoria com vários utilizadores. Esta permissão funciona só em directorias, não tem efeito em ficheiros e quando aplicado aparece no campo do grupo.

Aplica-se o SGID numa directoria utilizando:
$ ls –la /home/joana/directoria_linda
drwxrwxr-x 2 joana joana 4096 Jun 30 15:59 directoria_linda

$ chmod g+s /home/joana/directoria_linda
$ ls –la /home/joana/directoria_linda
drwxrwsr-x 2 joana joana 4096 Jun 30 15:59 directoria_linda

Para retirar-se o SGID,
$ chmod g-s /home/directoria_linda

Caso o SGID esteja aplicado mas a directoria não é executável (permissão que permite entrar na directoria), em vez de s (minúsculo) será S (maiúsculo).
$ ls –la directoria
drwxrwSr– 2 joana joana 4096 Jun 30 16:01 directoria_linda

Sticky bit

O sticky bit coloca o programa no swap depois de terminar, desta forma a próxima vez que o programa correr é mais rápido. Esta permissão também não deixa apagar ou renomear ficheiros excepto o dono, mesmo se um utilizador tiver permissões de escrita não ira conseguir apagá-lo, só alterá-lo. Esta permissão de acesso aparece no campo dos Outros.

Aplica-se o sticky bit utilizando:
$ ls –la celso_aprende.sh
-rwxrwxr-x 1 joana joana 0 Jun 30 16:08 celso_aprende.sh
$ chmod o+t celso_aprende.sh
$ ls –la celso_aprende.sh
-rwxrwxr-t 1 joana joana 0 Jun 30 16:08 celso_aprende.sh

Caso um ficheiro ou directoria não tenha permissões para se executar em vez de t aparece um T.
$ chmod a-x celso_aprende.sh
$ ls -la celso_aprende.sh
-rw-rw-r-T 1 joana joana 0 Jun 30 15:13 celso_aprende.sh