Unix / Linux - Modos de permissão de arquivo / acesso
Neste capítulo, discutiremos em detalhes sobre permissão de arquivo e modos de acesso no Unix. A propriedade de arquivos é um componente importante do Unix que fornece um método seguro para armazenar arquivos. Cada arquivo no Unix tem os seguintes atributos -
Owner permissions - As permissões do proprietário determinam quais ações o proprietário do arquivo pode executar no arquivo.
Group permissions - As permissões do grupo determinam quais ações um usuário, que é membro do grupo ao qual um arquivo pertence, pode executar no arquivo.
Other (world) permissions - As permissões para outros indicam qual ação todos os outros usuários podem executar no arquivo.
Os indicadores de permissão
Enquanto estiver usando ls -l comando, ele exibe várias informações relacionadas à permissão de arquivo da seguinte forma -
$ls -l /home/amrood
-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile
drwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir
Aqui, a primeira coluna representa diferentes modos de acesso, ou seja, a permissão associada a um arquivo ou diretório.
As permissões são divididas em grupos de três, e cada posição no grupo denota uma permissão específica, nesta ordem: ler (r), escrever (w), executar (x) -
Os primeiros três caracteres (2-4) representam as permissões do proprietário do arquivo. Por exemplo,-rwxr-xr-- representa que o proprietário tem permissão de leitura (r), gravação (w) e execução (x).
O segundo grupo de três caracteres (5-7) consiste nas permissões para o grupo ao qual o arquivo pertence. Por exemplo,-rwxr-xr-- representa que o grupo tem permissão de leitura (r) e execução (x), mas nenhuma permissão de gravação.
O último grupo de três caracteres (8-10) representa as permissões para todos os outros. Por exemplo,-rwxr-xr-- representa que existe read (r) apenas permissão.
Modos de acesso a arquivos
As permissões de um arquivo são a primeira linha de defesa na segurança de um sistema Unix. Os blocos de construção básicos das permissões Unix são osread, write, e execute permissões, que foram descritas abaixo -
Ler
Concede a capacidade de ler, ou seja, ver o conteúdo do arquivo.
Escreva
Concede a capacidade de modificar ou remover o conteúdo do arquivo.
Executar
O usuário com permissões de execução pode executar um arquivo como um programa.
Modos de acesso ao diretório
Os modos de acesso ao diretório são listados e organizados da mesma maneira que qualquer outro arquivo. Existem algumas diferenças que precisam ser mencionadas -
Ler
O acesso a um diretório significa que o usuário pode ler o conteúdo. O usuário pode olhar para ofilenames dentro do diretório.
Escreva
Acesso significa que o usuário pode adicionar ou excluir arquivos do diretório.
Executar
Executar um diretório realmente não faz sentido, então pense nisso como uma permissão de desvio.
Um usuário deve ter execute Acesso ao bin diretório para executar o ls ou o cd comando.
Alterando Permissões
Para alterar as permissões de arquivo ou diretório, use o chmodcomando (modo de mudança). Existem duas maneiras de usar chmod - o modo simbólico e o modo absoluto.
Usando chmod no modo simbólico
A maneira mais fácil para um iniciante modificar as permissões de arquivo ou diretório é usar o modo simbólico. Com as permissões simbólicas, você pode adicionar, excluir ou especificar o conjunto de permissões que deseja usando os operadores na tabela a seguir.
Sr. Não. | Operador Chmod e descrição |
---|---|
1 | + Adiciona as permissões designadas a um arquivo ou diretório. |
2 | - Remove a (s) permissão (s) designada (s) de um arquivo ou diretório. |
3 | = Define a (s) permissão (s) designada (s). |
Aqui está um exemplo usando testfile. Corridals -1 no testfile mostra que as permissões do arquivo são as seguintes -
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Então cada exemplo chmod comando da tabela anterior é executado no arquivo de teste, seguido por ls –l, para que você possa ver as alterações de permissão -
$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Veja como você pode combinar esses comandos em uma única linha -
$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Usando chmod com permissões absolutas
A segunda maneira de modificar as permissões com o comando chmod é usar um número para especificar cada conjunto de permissões para o arquivo.
Cada permissão recebe um valor, como mostra a tabela a seguir, e o total de cada conjunto de permissões fornece um número para esse conjunto.
Número | Octal Permission Representation | Ref |
---|---|---|
0 | Sem permissão | --- |
1 | Permissão de execução | --x |
2 | Permissão de escrita | -W- |
3 | Permissão de execução e gravação: 1 (executar) + 2 (gravar) = 3 | -wx |
4 | Permissão de leitura | r-- |
5 | Permissão de leitura e execução: 4 (leitura) + 1 (execução) = 5 | rx |
6 | Permissão de leitura e gravação: 4 (leitura) + 2 (gravação) = 6 | rw- |
7 | Todas as permissões: 4 (leitura) + 2 (gravação) + 1 (execução) = 7 | rwx |
Aqui está um exemplo usando o testfile. Corridals -1 no testfile mostra que as permissões do arquivo são as seguintes -
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Então cada exemplo chmod comando da tabela anterior é executado no arquivo de teste, seguido por ls –l, para que você possa ver as alterações de permissão -
$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 043 testfile
$ls -l testfile
----r---wx 1 amrood users 1024 Nov 2 00:10 testfile
Alteração de proprietários e grupos
Ao criar uma conta no Unix, ele atribui um owner ID e um group IDpara cada usuário. Todas as permissões mencionadas acima também são atribuídas com base no Proprietário e nos Grupos.
Dois comandos estão disponíveis para alterar o proprietário e o grupo de arquivos -
chown - o chown comando significa "change owner" e é usado para alterar o proprietário de um arquivo.
chgrp - o chgrp comando significa "change group" e é usado para alterar o grupo de um arquivo.
Mudança de propriedade
o chowncomando altera a propriedade de um arquivo. A sintaxe básica é a seguinte -
$ chown user filelist
O valor do usuário pode ser o name of a user no sistema ou no user id (uid) de um usuário no sistema.
O exemplo a seguir ajudará você a entender o conceito -
$ chown amrood testfile
$
Altera o proprietário do arquivo fornecido para o usuário amrood.
NOTE - O superusuário, root, tem a capacidade irrestrita de alterar a propriedade de qualquer arquivo, mas os usuários normais podem alterar a propriedade apenas dos arquivos que possuem.
Alteração da propriedade do grupo
o chgrpcomando altera a propriedade de grupo de um arquivo. A sintaxe básica é a seguinte -
$ chgrp group filelist
O valor do grupo pode ser o name of a group no sistema ou the group ID (GID) de um grupo no sistema.
O exemplo a seguir ajuda a entender o conceito -
$ chgrp special testfile
$
Altera o grupo do arquivo fornecido para special grupo.
Permissão de arquivo SUID e SGID
Freqüentemente, quando um comando é executado, ele deve ser executado com privilégios especiais para realizar sua tarefa.
Por exemplo, quando você altera sua senha com o passwd comando, sua nova senha é armazenada no arquivo /etc/shadow.
Como um usuário regular, você não tem read ou writeacesso a este arquivo por razões de segurança, mas quando você altera sua senha, você precisa ter permissão de gravação para este arquivo. Isso significa que opasswd programa tem que lhe dar permissões adicionais para que você possa escrever no arquivo /etc/shadow.
Permissões adicionais são dadas a programas por meio de um mecanismo conhecido como Set User ID (SUID) e Set Group ID (SGID) bits.
Ao executar um programa com o bit SUID habilitado, você herda as permissões do proprietário desse programa. Os programas que não têm o conjunto de bits SUID são executados com as permissões do usuário que iniciou o programa.
Este também é o caso do SGID. Normalmente, os programas são executados com suas permissões de grupo, mas em vez disso, seu grupo será alterado apenas para este programa para o proprietário do grupo do programa.
Os bits SUID e SGID aparecerão como a letra "s"se a permissão estiver disponível. O SUID"s" bit estará localizado nos bits de permissão onde os proprietários execute permissão normalmente reside.
Por exemplo, o comando -
$ ls -l /usr/bin/passwd
-r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd*
$
Mostra que o bit SUID está definido e que o comando pertence à raiz. Uma letra maiúsculaS na posição de execução em vez de uma minúscula s indica que o bit de execução não está definido.
Se o sticky bit estiver ativado no diretório, os arquivos só poderão ser removidos se você for um dos seguintes usuários -
- O dono do diretório fixo
- O proprietário do arquivo sendo removido
- O superusuário, root
Para definir os bits SUID e SGID para qualquer diretório, tente o seguinte comando -
$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname
$