1 Evita mecanismo de swap-on/swap-off em arquivos executáveis (em desuso). 1 Controla a escrita em diretórios de uso geral.
1 Representado pela letra “t”. Setgid:
1 Usados em arquivos executáveis e diretórios. 1 Representado pela letra “s”.
Setuid:
1 Utilizados em arquivos executáveis. 1 Representado pela letra “s”.
Dissemos anteriormente que, além dos nove bits de permissão, outros três afetam a exe- cução de programas executáveis e diretórios, e que juntos eles formam os 12 bits de modo. Esses outros três bits, setuid (SUID), setgid (SGID) e sticky bit, são descritos a seguir.
Sticky Bit
O estabelecimento desse bit remonta aos tempos em que memória era um recurso caro e escasso em sistemas Linux, e acessos a unidades de disco eram lentas. Sistemas com pouca memória necessitavam de que alguns programas se mantivessem na memória continuamente.
Figura 1.9
Adm in is tr aç ão d e Si st em as L in ux
O sticky bit era importante nesse contexto. Ele garantia que um determinado processo permaneceria na memória principal, não tendo sua performance prejudicada por conta do esquema de swapping. Hoje, com o relativo baixo custo de memória e as unidades de disco cada vez mais velozes, o estabelecimento desse bit em arquivos executáveis caiu em desuso. Atualmente, o sticky bit é definido somente em diretórios e é utilizado para impedir que um usuário apague ou renomeie um arquivo, a menos que seja dono do diretório ou do arquivo. Desse modo, ter permissão de escrita e pesquisa em um diretório com sticky bit definido não é suficiente para remover ou renomear arquivos e diretórios de outros usuários. É dessa forma que o Linux evita que, em diretórios de uso público, como o “/tmp”, os usuários removam ou renomeiem arquivos de outros usuários. Essa regra só não é válida para o usuário root. O sticky bit quando definido substitui a letra “x” da permissão de execução dos “outros” pela letra “t”, caso a permissão de execução tenha sido definida. Caso contrário, a letra “T” é inserida no lugar do caractere “-”.
Setgid (SGID)
O bit SGID pode ser definido em arquivos executáveis e diretórios. Ele permite que um arquivo seja executado com as permissões do grupo dono do arquivo, independente do usuário que o tenha executado. Embora qualquer tipo de arquivo possa ter esse bit definido, muitas versões do Linux só o leva em conta quando são definidos em programas executá- veis ou em diretórios.
Quando o bit SGID é definido em um diretório, todos os arquivos criados nesse diretório pertencerão ao grupo que é dono do diretório, independente do grupo primário do usuário que os tenha criado. O SGID, quando definido, substitui a letra “x” da permissão de execução do grupo pela letra “s”, caso a permissão de execução tenha sido definida. Caso contrário, a letra “S” é inserida no lugar do caractere “-”.
Setuid (SUID)
O bit SUID só possui efeito em arquivos executáveis. Ele permite que um arquivo seja executado como se estivesse sendo executado pelo dono do arquivo, independente do usuário que o tenha executado. O arquivo executável passwd, usado para troca de senha, é um exemplo de arquivo que tem o bit SUID definido. Isso é necessário para que usuários comuns possam alterar suas senhas, já que somente o usuário root tem permissão de escrita no arquivo /etc/shadow, que armazena as senhas dos usuários do sistema. Embora qualquer tipo de arquivo possa ter esse bit definido, muitas versões do Linux só o leva em conta quando são definidos em programas executáveis.
O SUID, quando definido, substitui a letra “x” da permissão de execução do dono do arquivo pela letra “s”, caso a permissão de execução tenha sido definida. Caso contrário, a letra “S” é inserida no lugar do caractere “-”.
-rws-sr-t
t aqui indica que o programa é sticky s aqui indica que o programa é SGID s aqui indica que o programa é SUID
Figura 1.10
SUID, SGID e sticky bit.
Ca pí tu lo 1 - I nt ro du çã o a o S is te m a O pe ra ci on al L in ux
Mudando permissões
Os doze bits de permissão, referenciados anteriormente, podem ser modificados pelo dono do arquivo ou pelo administrador do sistema através do comando chmod. Os primeiros sis- temas Unix exigiam que os usuários entendessem de notação binária ou octal para utilizar esse comando. As versões mais recentes do sistema, entretanto, aceitam tanto a notação octal quanto uma sintaxe mais mnemônica. Entretanto, preferimos trabalhar com a notação octal, por ser mais conveniente para administradores de sistema.
O comando chmod recebe dois blocos de argumentos. O primeiro deles é um número octal, que representa as permissões a serem atribuídas, e o segundo bloco é composto de um ou mais nomes de arquivos, separados por espaço em branco, cujas permissões devem ser alteradas. Na forma normal:
1 Primeiro dígito octal: refere-se às permissões do dono do arquivo; 1 Segundo: refere-se às do grupo dono do arquivo;
1 Terceiro: refere-se às dos outros usuários.
Para estabelecer as permissões associadas aos bits setuid, setgid e sticky bit, é preciso utilizar quatro dígitos octais no lugar de três. Nesse caso, os três bits especiais são definidos pelo primeiro dígito. A tabela 1.2 ilustra as oito possíveis combinações para cada um dos três bits, em que “r”, “w” e “x” correspondem às permissões de leitura (Read), de escrita (Write) e de execução (eXecute) respectivamente.
Comando Função
chmod Modificar a permissão de arquivos e diretórios
Octal Binária Permissões
0 000 --- 1 001 --x 2 010 -w- 3 011 -wx 4 100 r-- 5 101 r-x 6 110 rw- 7 111 rwx
A tabela 1.3 ilustra as oito possíveis combinações usadas para definir ou não os bits especiais SUID, SGID e sticky bit.
Tabela 1.2
Mudando permissões de arquivos.
Adm in is tr aç ão d e Si st em as L in ux Comando Função
chmod Modificar a permissão de arquivos e diretórios
Octal Binária Descrição
0 000 SUID, SGID e sticky bit não definidos
1 001 Sticky bit definido
2 010 SGID definido
3 011 Sticky bit e SGID definidos
4 100 SUID definido
5 101 Sticky bit e SUID definidos
6 110 SGID e SUID definidos
7 111 Sticky bit, SGID e SUID definidos
A seguir, podemos ver um exemplo de execução do comando chmod. # chmod 0751 /home/aluno1/arquivo.txt
Esse comando atribui todas as permissões para o dono, ou seja, ele pode ler, escrever e exe- cutar o arquivo; atribui ao grupo permissão para apenas ler e executar o arquivo e atribui aos outros somente permissão para executá-lo. O primeiro número octal passado como parâmetro para o comando chmod é referente às permissões especiais; o segundo, terceiro e quarto são relativos às permissões aplicadas ao dono do arquivo, ao grupo e aos outros, respectivamente. É importante ressaltar que o primeiro número octal é opcional e, se não for definido, será considerado como tendo o valor 0.