Como o sticky bit funciona?

125

SUID

O sticky bit aplicado a programas executáveis, sinalizando ao sistema para manter uma imagem do programa na memória após a execução do programa.

Mas eu não sei o que é armazenado na memória. E como eu posso vê-los, neste caso.

    
por fluke-ng 14.06.2013 / 14:19

4 respostas

169

Esta é provavelmente uma das minhas coisas mais irritantes que as pessoas estragam o tempo todo. O bit SUID / GUID e o sticky-bit são duas coisas completamente diferentes.

Se você fizer um man chmod , poderá ler sobre o SUID e os bits adesivos. A página do manual está disponível aqui também.

plano de fundo

trecho

The letters rwxXst select file mode bits for the affected users: read (r), write (w), execute (or search for directories) (x), execute/search only if the file is a directory or already has execute permission for some user (X), set user or group ID on execution (s), restricted deletion flag or sticky bit (t).

SUID / GUID

O que a página de manual acima está tentando dizer é que a posição que o bit x assume no rwxrwxrwx para o usuário octal (primeiro grupo de rwx) e o grupo octal (segundo grupo de rwx) pode ter um estado adicional onde o x se torna um s. Quando isso ocorre, este arquivo quando executado (se for um programa e não apenas um shell script) será executado com as permissões do proprietário ou do grupo do arquivo.

Portanto, se o arquivo pertencer à raiz e o bit SUID estiver ativado, o programa será executado como raiz. Mesmo se você executá-lo como um usuário regular. O mesmo se aplica ao bit GUID.

trecho

SETUID AND SETGID BITS

chmod clears the set-group-ID bit of a regular file if the file's group ID does not match the user's effective group ID or one of the user's supplementary group IDs, unless the user has appropriate privileges. Additional restrictions may cause the set-user-ID and set-group-ID bits of MODE or RFILE to be ignored. This behavior depends on the policy and functionality of the underlying chmod system call. When in doubt, check the underlying system behavior.

chmod preserves a directory's set-user-ID and set-group-ID bits unless you explicitly specify otherwise. You can set or clear the bits with symbolic modes like u+s and g-s, and you can set (but not clear) the bits with a numeric mode.

Exemplos de SUID / GUID

não há suid / guid - apenas os bits rwxr-xr-x são definidos.

$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan  9 01:01 b.pl

suid & bit executável do usuário ativado (s minúsculo) - os bits rwsr-x-r-x são definidos.

$ chmod u+s b.pl 
$ ls -lt b.pl 
-rwsr-xr-x 1 root root 179 Jan  9 01:01 b.pl

suid ativado & bit executável desativado (letra maiúscula S) - os bits rwSr-xr-x estão definidos.

$ chmod u-x b.pl
$ ls -lt b.pl 
-rwSr-xr-x 1 root root 179 Jan  9 01:01 b.pl

guid & o bit executável do grupo ativado (s minúsculo) - os bits rwxr-sr-x são definidos.

$ chmod g+s b.pl
$  ls -lt b.pl 
-rwxr-sr-x 1 root root 179 Jan  9 01:01 b.pl

guid ativado & bit executável desativado (letra maiúscula S) - os bits rwxr-Sr-x são definidos.

$ chmod g-x b.pl
$  ls -lt b.pl 
-rwxr-Sr-x 1 root root 179 Jan  9 01:01 b.pl

bit pegajoso

Por outro lado, o bit pegajoso é indicado como t , como no diretório /tmp :

$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp

Esse bit deve sempre ter sido chamado de "bit de exclusão restrita", pois é o que realmente denota. Quando esse bit de modo está habilitado, ele cria um diretório para que os usuários possam excluir apenas arquivos & diretórios dentro dele que eles são os proprietários de.

trecho

RESTRICTED DELETION FLAG OR STICKY BIT

The restricted deletion flag or sticky bit is a single bit, whose interpretation depends on the file type. For directories, it
prevents unprivileged users from removing or renaming a file in the directory unless they own the file or the directory; this is called the restricted deletion flag for the directory, and is commonly found on world-writable directories like /tmp. For regular files on some older systems, the bit saves the program's text image on the swap device so it will load more quickly when run; this is called the sticky bit.

    
por 14.06.2013 / 14:58
8

"The sticky bit applied to executable programs flagging the system to keep an image of the program in memory after the program finished running."

Acho que é uma informação bastante obsoleta, hoje em dia os Unixes mais modernos ignoram isso. No Linux, o bit pegajoso é relevante apenas para diretórios. Consulte aqui e o bastante informativo artigo da Wikipedia .

De qualquer forma, naquele comportamento antigo a imagem (apenas o "código", não os dados) era mantida apenas na memória virtual - normalmente trocada, não na memória real, de modo a executá-la mais rapidamente da próxima vez.

    
por 14.06.2013 / 14:34
3

What are sticky bits ?

Um bit pegajoso é um bit de permissão que é definido em um diretório que permite que apenas o proprietário do arquivo dentro desse diretório ou o usuário raiz exclua ou renomeie o arquivo. Nenhum outro usuário tem os privilégios necessários para excluir o arquivo criado por outro usuário.

Esta é uma medida de segurança para evitar a exclusão de pastas críticas e seu conteúdo (subdiretórios e arquivos), embora outros usuários tenham permissões totais.

    
por 19.04.2015 / 16:56
0

Aqui está um bom tutorial com exemplos e explicações. A chave para entender isso é o sistema octal envolvido. Linux Sticky Bits Tutorial com exemplos trabalhados .

    
por 05.08.2017 / 18:01