[FUG-BR] usuario logando com su

Paulo Pires pappires em gmail.com
Qua Jan 19 12:20:53 BRST 2005


On Wed, 19 Jan 2005 10:42:21 -0200, louis louis <louislula em hotmail.com> wrote:
> Olá celso,
> 
> funcionou, mas me diz o que é que esse +s faz? habilita o usuario q está no
> grupo do wheel??? pois quando dou um ls -l /sbin/reboot, antes de dar o
> comando chmod +s ele me retornava:
> 
> -r-xr-xr-x  4 root  wheel  227484 Oct  9  2002 /sbin/reboot
> 
> depois que eu rodei o comando:
> 
> -r-sr-sr-x  4 root  wheel  227484 Oct  9  2002 /sbin/reboot
> 
> O x saiu e entrou o s! O que significa isso?

A saída do ls -l mostra na primeira coluna as permissões do arquivo,
utilizando dez caracteres, que são divididos em 4 grupos.  O primeiro
grupo contém apenas o primeiro caráter, que indica o tipo de arquivo
(exemplo: hífen para arquivo comum, "d" para diretório e "l" para link
simbólico).

Os outros três grupos são formados pelos caracteres cada, em
sequência, da esquerda para a direita.  O primeiro grupo se refere às
permissões que o arquivo tem com relação ao usuário ao qual o arquivo
pertence (indicado na terceira coluna; no caso, "root").  O segundo
grupo indica as permissões do arquivo em relação ao grupo a que
pertence (quarta coluna; "wheel").  O último grupo indica as
permissões que todos os outros usuários, diferentes do próprio dono
("root") e não pertencentes ao grupo ("wheel") têm sobre o arquivo.

Dentro de cada grupo de caracteres, cada caráter corresponde a um
aspecto de interação com o arquivo.  O caráter mais à esquerda é
sempre "r" ou "-", com "r" indicando que o arquivo pode ser lido
(read), e "-" indicando que o bit de leitura está desligado, e o
arquivo não pode ser lido.  O segundo caráter pode ser "w" ou "-",
indicando se o arquivo pode sofrer ou não acessos de escrita (write). 
O terceiro caráter é geralmente "x" ou "-", indicando se o arquivo é
executável (ou, no caso de diretórios, se é possível ou não entrar no
diretório).  Assim, "-r-xr-xr-x" para a entrada "reboot" indicia que
"reboot" é um arquivo comum, legível e executável por seu dono, por
seu grupo e todos os demais usuários.

Infelizmente, o ls -l utiliza grupos de três caracteres, como se fosse
para mostrar três valores binários, mas há, na verdade, quatro bits
por agrupamento de usuário/grupo/outros.  Como estes outros três bits
afetam apenas arquivos executáveis, os autores do ls preferiram usar
representações especiais nas colunas de exibição do bit de execução,
ao invés de gastarem outras três colunas, que ficariam a maior parte
do tempo com "-".  Dois desses bits têm o caráter de "set identity", e
são associados ao usuário e ao grupo a que pertence o arquivo
executável, sendo, portanto, respectivamente chamados de
"set-user-identity" (ou setuid) e "set-group-identity" (ou setgid),
signficando, respectivamente, que tal executável, quando executado por
qualquer usuário, executará como se tivesse sido executado por seu
dono e/ou alguém do grupo a que pertence.

O ls -l indica que um programa é setuid (e/ou setgid) colocando "s" em
lugar de "x" na hora de mostrar as permissões relativas ao usuário
(e/ou grupo) a que o arquivo pertence.  Algumas vezes, pode aparecer
"S", ao invés de "s", o que significa que o bit de set-id está ligado,
mas o bit de execução está desligado.

O terceiro desses bits especiais é atualmente válido apenas para
diretórios como o /tmp do sistema, onde qualquer um pode gravar
arquivos, mas só o dono de um arquivo dentro desse diretório pode
remover tal arquivo.  Isto é indicado pelo ls -l ao exibir tais
diretórios com um "t", em lugar de "x", no agrupamento relativo a
outros usuários (últimos três caracteres na primeira coluna do ls -l).
 Se aparecer "T" nessa posição, isso significa que o bit "sticky" está
ligado, mas o bit de execução está desligado.

O "chmod +s /sbin/reboot", que você executou, significa, literalmente,
"mude (CHange) o modo (MODe) de /sbin/reboot, ligando ("+") todos os
bits de Set-identity".  Foi o que ocorreu, de fato, pois o ls -l
passou a mostrar "-r-sr-sr-x", o que significa:

    - o arquivo é um arquivo comum ("-" na primeira posição);

    - no que diz respeito ao dono do arquivo (posições 2 a 4), o
arquivo pode ser lido, não pode ser escrito, pode ser executado por
seu dono e, quando executado (por qualquer um), vai assumir a
identidade do usuário que está no arquivo;

    - no que diz respeito ao grupo a que o arquivo pertence (posições
5 a 7), o arquivo pode ser lido, não pode ser gravado, pode ser
executado por qualquer membro do grupo e, quando executado (por quem
quer que seja), vai assumir a identidade do grupo a que pertence;

    - no que diz respeito a todos os (outros) usuários do sistema
(posições 8 a 10), o arquivo pode ser lido, não pode ser escrito e
pode ser executado.

Ou seja, qualquer usuário da máquina pode fazer com que ela reboote.

Compare isto com as do programa shutdown.

% ls -l /sbin/shutdown
-r-sr-x---  1 root  operator  168672 Sep 25  2003 /sbin/shutdown

O shutdown, que é uma interface melhorada aos comandos reboot, halt e
poweroff, pode ser lido e executado pelo seu dono (root) ou qualquer
membro do grupo operator.  Outros usuários não podem lê-lo nem
executá-lo (veja que as posições 8 a 10 estão todas com "-").  Quando
executado, o programa vai assumir o caráter de root (setuid) sem mudar
o caráter do grupo (até porque seria inútil, pois quem já tem caráter
de root já pode assumir a identidade de usuário e grupo que quiser).

Leia mais sobre permissões em chmod(1) e chmod(2).
-- 
Um abraço.
        Paulo A. P. Pires

... Qui habet aurem audiat quid Spiritus dicat ecclesiis.

_______________________________________________________________
Para enviar um novo email para a lista: freebsd em fug.com.br
Sair da Lista: http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/




Mais detalhes sobre a lista de discussão freebsd