Comando chmod - Alterar permissões pelo terminal - Linux
Índice:
- Permissões de arquivo do Linux
- Usando
chmod
- Método simbólico (texto)
- Método Numérico
- Usando um arquivo de referência
- Alterar recursivamente as permissões do arquivo
- Operando em links simbólicos
- Alterando permissões de arquivo em massa
- Conclusão
No Linux, o acesso aos arquivos é gerenciado através das permissões, atributos e propriedade do arquivo. Isso garante que apenas usuários e processos autorizados possam acessar arquivos e diretórios.
Este tutorial aborda como usar o comando
chmod
para alterar as permissões de acesso de arquivos e diretórios.
Permissões de arquivo do Linux
Antes de prosseguir, vamos explicar o modelo básico de permissões do Linux.
No Linux, cada arquivo é associado a um proprietário e um grupo e atribuído com direitos de acesso de permissão para três classes diferentes de usuários:
- O proprietário do arquivo. Os membros do grupo. Outros (todos os outros).
A propriedade do arquivo pode ser alterada usando os comandos
chown
e
chgrp
.
Existem três tipos de permissões de arquivo que se aplicam a cada classe:
- A permissão de leitura. A permissão de gravação. A permissão de execução.
Esse conceito permite especificar quais usuários têm permissão para ler, gravar ou executar o arquivo.
As permissões de arquivo podem ser visualizadas usando o comando
ls
:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type
O primeiro caractere mostra o tipo de arquivo. Pode ser um arquivo comum (
-
), diretório (
d
), um link simbólico (
l
) ou qualquer outro tipo especial de arquivo.
Os próximos nove caracteres representam as permissões de arquivo, três trigêmeos de três caracteres cada. O primeiro trigêmeo mostra as permissões de proprietário, o segundo grupo de permissões e o último trigêmeo mostra as permissões de todos os outros. As permissões podem ter um significado diferente, dependendo do tipo de arquivo.
No exemplo acima (
rw-r--r--
) significa que o proprietário do arquivo possui permissões de leitura e gravação (
rw-
), o grupo e outras pessoas têm apenas permissões de leitura (
r--
).
Cada um dos três trigêmeos de permissão pode ser construído com os seguintes caracteres e ter efeitos diferentes, dependendo se eles estão definidos para um arquivo ou diretório:
Efeito das permissões nos arquivos
Permissão | Personagem | Significado no arquivo |
---|---|---|
Ler |
-
|
O arquivo não está legível. Você não pode visualizar o conteúdo do arquivo. |
r
|
O arquivo está legível. | |
Escrever |
-
|
O arquivo não pode ser alterado ou modificado. |
w
|
O arquivo pode ser alterado ou modificado. | |
Executar |
-
|
O arquivo não pode ser executado. |
x
|
O arquivo pode ser executado. | |
s
|
Se encontrado no triplo do
user
ele define o bit
setuid
. Se encontrado no trio, ele define o bit
setgid
. Isso também significa que o sinalizador
x
está definido.
Quando os sinalizadores
|
|
S
|
Igual a
s
mas o sinalizador
x
não está definido. Esse sinalizador raramente é usado em arquivos. |
|
t
|
Se encontrado nos
others
trigêmeos, ele define a parte
sticky
.
Isso também significa que o sinalizador
|
|
T
|
O mesmo que
t
mas o sinalizador
x
não está definido. Esse sinalizador é inútil nos arquivos. |
Efeito das permissões nos diretórios (pastas)
No Linux, os Diretórios são tipos especiais de arquivos que contêm outros arquivos e diretórios.
Permissão | Personagem | Significado no Diretório |
---|---|---|
Ler |
-
|
O conteúdo do diretório não pode ser mostrado. |
r
|
O conteúdo do diretório pode ser mostrado.
(por exemplo, você pode listar arquivos dentro do diretório com
|
|
Escrever |
-
|
O conteúdo do diretório não pode ser alterado. |
w
|
O conteúdo do diretório pode ser alterado.
(por exemplo, você não pode criar novos arquivos, excluir arquivos… etc.) |
|
Executar |
-
|
O diretório não pode ser alterado para. |
x
|
O diretório pode ser navegado usando
cd
. |
|
s
|
Se encontrado no trigêmeo do
user
, ele define o bit
setuid
. Se encontrado no
group
trigêmeo, ele define o bit
setgid
. Isso também significa que o sinalizador
x
está definido. Quando o sinalizador
setgid
é definido em um diretório, os novos arquivos criados nele herdam o ID do grupo de diretórios (GID), em vez do ID do grupo primário do usuário que criou o arquivo.
|
|
S
|
Igual a
s
mas o sinalizador
x
não está definido. Esse sinalizador é inútil nos diretórios. |
|
t
|
Se encontrado nos
others
trigêmeos, ele define a parte
sticky
.
Isso também significa que o sinalizador
|
|
T
|
O mesmo que
t
mas o sinalizador
x
não está definido. Esse sinalizador é inútil nos diretórios. |
Usando
chmod
O comando
chmod
assume a seguinte forma geral:
chmod MODE FILE…
O comando
chmod
permite alterar as permissões em um arquivo usando um modo simbólico ou numérico ou um arquivo de referência. Explicaremos os modos com mais detalhes posteriormente. O comando pode aceitar um ou mais arquivos e / ou diretórios separados por espaço como argumentos.
Somente root, o proprietário ou o usuário do arquivo com privilégios de sudo podem alterar as permissões de um arquivo. Seja extremamente cuidadoso ao usar o
chmod
, especialmente ao alterar recursivamente as permissões.
Método simbólico (texto)
A sintaxe do comando
chmod
ao usar o modo simbólico tem o seguinte formato:
chmod perms… FILE…
O primeiro conjunto de sinalizadores (
), sinalizadores de usuários, define quais classes de usuários as permissões para o arquivo são alteradas.
-
u
- O proprietário do arquivo.g
- Os usuários que são membros do grupo.o
- Todos os outros usuários.a
- Todos os usuários, idênticos aougo
.
Se o sinalizador de usuários for omitido, o padrão é ae as permissões definidas por umask não serão afetadas.
O segundo conjunto de sinalizadores (
), os sinalizadores de operação, definem se as permissões devem ser removidas, adicionadas ou definidas:
-
-
Remove as permissões especificadas.+
Adiciona permissões especificadas.=
Altera as permissões atuais para as permissões especificadas. Se nenhuma permissão for especificada após o símbolo=
, todas as permissões da classe de usuário especificada serão removidas.
As permissões (
perms…
) podem ser definidas explicitamente usando zero ou uma ou mais das seguintes letras:
r
,
w
,
x
,
X
, se
t
. Use uma única letra do conjunto
u
,
g
e
o
ao copiar permissões de uma para outra classe de usuários.
Ao definir permissões para mais de uma classe de usuário (
), use vírgulas (sem espaços) para separar os modos simbólicos.
Abaixo estão alguns exemplos de como usar o comando
chmod
no modo simbólico:
-
Conceda aos membros do grupo permissão para ler o arquivo, mas não para gravá-lo e executá-lo:
chmod g=r filename
Remova a permissão de execução para todos os usuários:
chmod ax filename
Remova repulsivamente a permissão de gravação para outros usuários:
chmod -R ow dirname
Remova a permissão de leitura, gravação e execução para todos os usuários, exceto o proprietário do arquivo:
chmod og-rwx filename
A mesma coisa também pode ser realizada usando o seguinte formulário:
chmod og= filename
Conceda permissão de leitura, gravação e execução ao proprietário do arquivo, permissões de leitura ao grupo do arquivo e nenhuma permissão para todos os outros usuários:
chmod u=rwx, g=r, o= filename
Adicione as permissões de proprietário do arquivo às permissões que os membros do grupo do arquivo têm:
chmod g+u filename
Adicione um bit adesivo a um determinado diretório:
chmod o+t dirname
Método Numérico
A sintaxe do comando
chmod
ao usar o método numérico tem o seguinte formato:
chmod NUMBER FILE…
Ao usar o modo numérico, você pode definir as permissões para todas as três classes de usuários (proprietário, grupo e todas as outras) ao mesmo tempo.
O número pode ser um número de 3 ou 4 dígitos.
Quando o número de 3 dígitos é usado, o primeiro dígito representa as permissões do proprietário do arquivo, o segundo do grupo do arquivo e o último todos os outros usuários.
Cada permissão de gravação, leitura e execução tem o seguinte valor numérico:
-
r
(leitura) = 4w
(gravação) = 2x
(execução) = 1 sem permissões = 0
O número de permissões de uma classe de usuário específica é representado pela soma dos valores das permissões para esse grupo.
Para descobrir as permissões do arquivo no modo numérico, basta calcular os totais para todas as classes de usuários. Por exemplo, para conceder permissões de leitura, gravação e execução ao proprietário do arquivo, permissões de leitura e execução ao grupo do arquivo e apenas permissões de leitura para todos os outros usuários, você faria o seguinte:
- Se a resposta ajudou de alguma forma, por favor, marque como resposta, caso a sua dúvida não tenha sido solucionada, por favor, poste novamente.
Usando o método acima, chegamos ao número
754
, que representa as permissões desejadas.
Para configurar os sinalizadores
setuid
,
setgid
e
sticky bit
, use o número de quatro dígitos.
Quando o número de 4 dígitos é usado, o primeiro dígito tem o seguinte significado:
- setuid = 4setgid = 2sticky = 1 sem alterações = 0
Os próximos três dígitos têm o mesmo significado que ao usar um número de 3 dígitos.
Se o primeiro dígito for 0, ele poderá ser omitido e o modo poderá ser representado com 3 dígitos. O modo numérico
0755
é o mesmo que
755
.
Para calcular o modo numérico, você também pode usar outro método (método binário), mas é um pouco mais complicado. Saber como calcular o modo numérico usando 4, 2 e 1 é suficiente para a maioria dos usuários.
Você pode verificar as permissões do arquivo na notação numérica usando o comando
stat
:
stat -c "%a" filename
644
Aqui estão alguns exemplos de como usar o comando
chmod
no modo numérico:
-
Conceda ao proprietário do arquivo permissões de leitura e gravação e apenas permissões de leitura para membros do grupo e todos os outros usuários:
chmod 644 dirname
Dê ao proprietário do arquivo permissões de leitura, gravação e execução, permissões de leitura e execução para membros do grupo e nenhuma permissão para todos os outros usuários:
chmod 750 dirname
Conceda permissões de leitura, gravação e execução e um pouco persistente a um determinado diretório:
chmod 1777 dirname
Defina recursivamente permissões de leitura, gravação e execução para o proprietário do arquivo e nenhuma permissão para todos os outros usuários em um determinado diretório:
chmod -R 700 dirname
Usando um arquivo de referência
A opção
--reference=ref_file
permite definir as permissões do arquivo como iguais às do arquivo de referência especificado (
ref_file
).
chmod --reference=REF_FILE FILE
Por exemplo, o comando a seguir atribuirá as permissões do
file1
ao
file2
Alterar recursivamente as permissões do arquivo
Para operar recursivamente em todos os arquivos e diretórios no diretório especificado, use a opção
-R
(
--recursive
):
chmod -R MODE DIRECTORY
Por exemplo, para alterar as permissões de todos os arquivos e subdiretórios no diretório
/var/www
para
755
você usaria:
Operando em links simbólicos
Links simbólicos sempre têm
777
permissões.
Por padrão, ao alterar as permissões do link simbólico, o
chmod
altera as permissões no arquivo para o qual o link está apontando.
chmod 755 symlink
Provavelmente, em vez de alterar a propriedade do destino, você receberá um erro "não é possível acessar o 'link simbólico': permissão negada".
O erro ocorre porque, por padrão, na maioria das distribuições Linux, os links simbólicos estão protegidos e você não pode operar nos arquivos de destino. Esta opção é especificada em
/proc/sys/fs/protected_symlinks
.
1
significa ativado e
0
desativado. É recomendável não desativar a proteção de link simbólico.
Alterando permissões de arquivo em massa
Às vezes, há situações em que você precisaria alterar em massa as permissões de arquivos e diretórios.
O cenário mais comum é alterar recursivamente as permissões do arquivo do site para
644
e as permissões do diretório para
755
.
Usando o método numérico:
find /var/www/my_website -type d -exec chmod 755 {} ;
find /var/www/my_website -type f -exec chmod 644 {} ;
Usando o método simbólico:
find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ;
find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;
O comando
find
procurará arquivos e diretórios em
/var/www/my_website
e passará cada arquivo e diretório encontrado para o comando
chmod
para definir as permissões.
Conclusão
O comando
chmod
altera as permissões do arquivo. As permissões podem ser definidas usando o modo simbólico ou numérico.
Para saber mais sobre o
chmod
visite a página de manual do chmod.
Não é possível alterar permissões de arquivo ou pasta no Windows
Se você não puder ou não conseguir alterar permissões de arquivo ou pasta no Windows 10/8 / 7 / Vista, leia este post para solucionar e superar esse problema.
Permissões do Time Machine para remover erros de Acesso ao arquivo negados
Permissões O Time Machine permite remover o Acesso negado ao arquivo ou o acesso É negado mensagem de erro quando você abre arquivo, pasta ou chave do Registro no Windows
Como alterar recursivamente as permissões do arquivo no linux
O Linux é um sistema multiusuário e o acesso aos arquivos é controlado pelas permissões, atributos e propriedade do arquivo. Neste artigo, explicaremos como alterar recursivamente as permissões de arquivos e diretórios.