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 pegajosos. A página do manual também está disponível aqui .
fundo
excerto
As letras rwxXst selecionam bits do modo de arquivo para os usuários afetados: leitura (r), gravação (w), execução (ou pesquisa de diretórios) (x), execução / pesquisa somente se o arquivo for um diretório ou já tiver permissão de execução para alguns usuários. usuário (X), defina o ID do usuário ou grupo nas execuções , sinalizador de exclusão restrito ou
bit adesivo (t) .
SUID / GUID
O que a página de manual acima está tentando dizer é que a posição que o x ocupa na rwxrwxrwx para o usuário octal (1º grupo de rwx) e o grupo octal (2º grupo de rwx) pode assumir um estado adicional em que x se torna um s. Quando isso ocorre, esse arquivo, quando executado (se for um programa e não apenas um script de shell), 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 comum. O mesmo se aplica ao bit GUID.
excerto
Bits SETUID E SETGID
O chmod limpa o bit set-group-ID de um arquivo regular se o ID do grupo do arquivo não corresponder ao ID do grupo efetivo do usuário ou a um dos IDs de grupo suplementares do usuário, a menos que o usuário tenha privilégios apropriados. Restrições adicionais podem fazer com que os bits set-user-ID e set-group-ID do MODE ou RFILE sejam ignorados. Esse comportamento depende da diretiva e da funcionalidade da chamada do sistema chmod subjacente. Em caso de dúvida, verifique o comportamento do sistema subjacente.
O chmod preserva os bits set-user-ID e set-group-ID de um diretório, a menos que você especifique explicitamente o contrário. Você pode definir ou limpar os bits com modos simbólicos como u + se eg, e pode definir (mas não limpar) os bits com um modo numérico.
Exemplos SUID / GUID
no suid / guid - apenas os bits rwxr-xr-x estão definidos.
$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl
bit executável do suid e do usuário ativado (letras minúsculas) - os bits rwsr-xrx estão definidos.
$ chmod u+s b.pl
$ ls -lt b.pl
-rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl
bit ativado por suid e executável desativado (S maiúsculo) - 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
bit executável do guid & group ativado (letras minúsculas) - os bits rwxr-sr-x estão definidos.
$ chmod g+s b.pl
$ ls -lt b.pl
-rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl
bit guid ativado e executável desativado (S maiúsculo) - os bits rwxr-Sr-x estão definidos.
$ chmod g-x b.pl
$ ls -lt b.pl
-rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl
pedaço pegajoso
O bit adesivo, por outro lado, é indicado como t
, como no /tmp
diretório:
$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp
Esse bit deveria sempre ser chamado de "bit de exclusão restrito", pois é isso que ele realmente conota. Quando esse bit de modo está ativado, ele cria um diretório para que os usuários possam excluir apenas arquivos e diretórios dentro dos quais são proprietários.
excerto
BANDEIRA DE EXCLUSÃO RESTRITA OU BOCADO PEGAJOSO
O sinalizador de exclusão restrita ou bit adesivo é um bit único, cuja interpretação depende do tipo de arquivo. Para diretórios,
impede que usuários sem privilégios removam ou renomeiem um arquivo no diretório, a menos que sejam proprietários do arquivo ou diretório; isso é chamado de sinalizador de exclusão restrita para o diretório e é comumente encontrado em diretórios graváveis em todo o mundo como / tmp. Para arquivos regulares em alguns sistemas mais antigos, o bit salva a imagem de texto do programa no dispositivo de troca, para que seja carregado mais rapidamente quando executado; isso é chamado de bit pegajoso.