Como um usuário novato do Linux, você aprenderá sobre as permissões e propriedade associadas ao arquivo e aos diretórios. Os sistemas operacionais do tipo Linux / Unix permitem que você defina uma combinação de permissões de nove bits para evitar que outros usuários acessem arquivos / diretórios desnecessários. Similar a estas são as permissões especiais para arquivos executáveis ​​conhecidos como set UID, set GID e sticky bits.

Compreender as permissões especiais pode ser um pouco complicado para aspirantes a administradores do Linux. Aqui você aprenderá um pouco sobre as permissões regulares de arquivo e explicará como elas diferem das permissões especiais. Também demonstramos a funcionalidade SetID, GetID e sticky bits com exemplos para uma compreensão abrangente.

Permissões regulares de arquivos do Linux

Linux usa o comando chmod para atribuir / alterar a leitura (r = 4), escrever (w = 2), e execute (x = 1) permissões em arquivos e pastas. Ou seja, os nove bits mencionados acima se aplicam às três categorias principais de grupos de permissão. Os três primeiros são para o usuário que possui o arquivo, o segundo conjunto é para o grupo atribuído ao arquivo / diretório e os três últimos representam todos os outros usuários.

Por exemplo, um arquivo normal terá todos os tipos de permissões para todas as categorias de usuários como -rwxrwxrwx. Enquanto - em substituição de letras representam a ausência dessa permissão. Agora chmod comando usa números e letras para alterar as permissões da seguinte forma:

arquivo sudo chmod 755 #for rwxr-xr-x 
arquivo sudo chmod 644 #for rw-r - r-- 
sudo chmod arquivo a-w #for r-xr-xr-x 
sudo chmod a + x arquivo #for --x - x - x

Permissões especiais de arquivo do Linux

O setuid bit representa a permissão em um arquivo executável que pode ser executado por outros usuários com a autorização do proprietário. Por exemplo, quando o usuário max executa o comando vi como o usuário John, você terá as permissões de leitura / gravação de John.

Para identificar arquivos com setuid, use o ls comandar e procurar o s bit no lugar do bit executável x, do seguinte modo.

Definir bit UID

O setuid bit representa a permissão em um arquivo executável que pode ser executado por outros usuários com a autorização do proprietário. Por exemplo, quando o usuário max executa o comando vi como o raiz, ele terá as permissões de leitura / gravação do raiz. Para identificar arquivos com setuid, use o ls comandar e procurar o s bit no lugar do bit de execução x, do seguinte modo:

ls -la / etc / passwd 
-rwsr-xr-x 1 root root 88464 Dec 14 12:46 passwd

Alguns outros exemplos são:

ls -la / bin / gpasswd
-rwsr-xr-x 1 root root 88464 14 de julho 15:08 gpasswd
ls -la / bin / su
-rwsr-xr-x 1 root 67816 21 de julho de 2020 su
ls -la / newgrp
-rwsr-xr-x 1 root root 44784 14 de julho 15:08 newgrp
ls -la / bin / sudo
-rwsr-xr-x 1 root root 166056 19 de janeiro de 2021 sudo

Para definir o bit setuid para arquivos executáveis, use o comando chmod da seguinte maneira:

chmod u + s / etc / passwd

Para remover a permissão para executar os arquivos de usuários ou proprietários não raiz:

chmod u-s / etc / passwd

Definir bit GID

Conforme discutido, o bit set uid controla o acesso ao arquivo para outros usuários, enquanto o bit setgid (GID) cria diretórios colaborativos. Isso significa que qualquer arquivo criado dentro desse diretório está acessível ao grupo do diretório. Conseqüentemente, permite que todos os membros do grupo executem arquivos executáveis ​​sem os privilégios do proprietário e os protege de outros usuários.

Siga estas etapas para criar um diretório colaborativo em seu sistema Linux:

Crie um grupo usando o groupadd comando com id de grupo 415 para colaboração:

groupadd -g 415 admins

Use o comando usermod para adicionar Johnpara o grupo para acesso / execução de arquivo.

usermod -aG admins john

Use o mkdir comando para criar um diretório:

mkdir / tmp / colaborative_dir

Use o chgrp comando para atribuir o diretório ao administradores grupo:

chgrp admins / tmp / colaborative_dir

Use o chmod comando para alterar a permissão do diretório para 2775. O bit 2 ativa o conjunto gid, 7 para atribuir rwx completo ao usuário e grupo, enquanto 5 (r-w) para os outros.

chmod 2775 / tmp / colaborative_dir

Por último, mude sua conta de usuário para John e criar um arquivo no diretório colaborativo para verificar as permissões do arquivo.

su - john
toque em /tmp/collaborative_dir/file.txt

O comando su pode apresentar um erro de autenticação. Neste caso, digite o sudo su comando para mudar para a raiz e executar novamente su - john para mudar a conta do usuário

Agora liste as permissões para verificar os bits GID definidos para o diretório e o arquivo recém-criado.

ls -ld / tmp / colaborative_dir /tmp/collaborative_dir/file.txt 

Em um cenário típico, um arquivo criado por john terá um grupo john atribuído a ele. Uma vez que você cria o arquivo dentro de um diretório de bits GID definido, ele atribui permissões para o administradores grupo, de forma que qualquer pessoa que pertença ao grupo, como o usuário chris, terá acesso a ele.Relacionado: Como criar novos arquivos no Linux usando o toque

Sticky Bits

Ao contrário dos bits SID e GID, os bits pegajosos diferem em funcionalidade, pois protegem os arquivos e diretórios contra renomeação e exclusão por outros usuários. A permissão de arquivo regular permite que qualquer usuário com acesso de gravação exclua ou renomeie o arquivo. Já com o sticky bit definido, isso não é possível, a menos que você seja o usuário root ou o proprietário do arquivo.

O cenário ideal para o uso de sticky bits é o diretório acessível a todos os usuários para a criação de arquivos. Por exemplo, use o ls -ld comando para verificar o \ tmp permissões de diretório, como segue:

Você pode notar que a parte pegajosa t substitui o bit de execução x. Siga o conjunto de instruções fornecido para criar um diretório de exclusão restrita:

Agora crie outro diretório no /tmp pasta:

mkdir / tmp / new_dir

Altere as permissões do arquivo para 1777 para definir o bit pegajoso (t) e acesso total ao diretório:

chmod 1777 / tmp / new_dir

Agora copie qualquer arquivo do /etc pasta para /tmp/new_dir e altere suas permissões para 666:

cp / etc / / tmp / new_dir
chmod 666 / tmp / new_dir / services

Liste o diretório e todo o seu conteúdo para visualizar as permissões:

ls -ld / tmp / new_dir / tmp / new_dir / services

Você pode notar o sticky bit em vez do bit de execução, o que significa que apenas o root ou o usuário john podem excluir o arquivo, pois o arquivo está dentro do diretório do sticky bit.

Compreendendo as permissões especiais de arquivo no Linux

O artigo demonstra como definir esses bits para melhorar a colaboração em arquivos e diretórios compartilhados e protegê-los contra acesso, execução e exclusão não autorizados. Mesmo que você não crie arquivos / diretórios com esses bits, entender as permissões especiais de arquivo é útil em muitas situações, especialmente na solução de problemas ou como administrador do sistema. Visto que o uso imprudente desses bits pode causar várias vulnerabilidades de segurança.

Como preservar as permissões de arquivo ao copiar arquivos no Linux

Quer reter as permissões de arquivo enquanto copia arquivos no Linux? Veja como fazer isso usando cp e rsync.

Leia a seguir

CompartilhadoTweetE-mail
Tópicos relacionados
  • Linux
  • Gerenciamento de arquivos
  • Linux
Sobre o autor
Rumaisa Niazi (3 artigos publicados)

Rumaisa é redatora freelance da MUO. Ela percorreu um longo caminho, de Matemática a entusiasta de Segurança da Informação, e está trabalhando como Analista de SOC. Seus interesses incluem ler e escrever sobre novas tecnologias, distribuições Linux e qualquer coisa relacionada à Segurança da Informação.

Mais de Rumaisa Niazi

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever