chmod

De LinuxPédia
Ir para: navegação, pesquisa

O comando chmod é utilizado para mudar as permissões de um arquivo ou pasta. É recomendado que para executar esse arquivo tenhamos conhecimento sobre permissões de acesso

Sintaxe

chmod com permissões por Símbolos

chmod [opções] ['u ; g; o; a] [=; +; -] [w ; r; x'; s; t] [arquivo/diretório]

Opções

-c, --changes Mostra saída como --verbose, mas só quando uma mudança for feita.
-f, --silent, --quiet o Modo quiet não mostra a maioria das saídas de erro.
-v, --verbose O modo Verbose Mostra uma mensagem referente a cada arquivo processado.
--no-preserve-root Não trata o diretório root / de maneira especial. Esse é o padrão do comando.
--preserve-root Não opera recursivamente em /
--reference=arquivo-referencia Muda as permissões desse arquivo para ficarem iguais ao arquivo de referencia arquivo-referencia.
-R, --recursive Muda permissões de arquivos e diretórios recursivamente.
--help Mostra a mensagem de ajuda.

ugoa (segundo campo)

As letras u; g; o; a definem quais os usuários que estão tendo suas permissões de acesso alteradas:

  • u → O dono do arquivo (user)
  • g → Os usuários membro do mesmo grupo do arquivo (group)
  • o → Usuários não membros do grupo do arquivo (others)
  • a → Todos usuários do sistema (all)

Operadores + ; - ; =

  • O operador + faz adição das permissões informadas as permissões já existentes no arquivo ou diretório
  • O operador faz a subtração das permissões especificadas
  • O operador = faz a definição das permissões (determina as permissões a partir de agora)

permissões r; w; x; s; t

  • r → Leitura
  • w → Gravação
  • x → execução

Permissões especiais

  • s → Permissão especial de execução de um arquivo ou de acesso a um diretório. (Faz com que o arquivo execute com privilégios de root mesmo que tenha sido executado por usuário comum).
  • t → Permissão especial de acesso. No caso de um diretório o usuário poderá alterar e apagar só os arquivos que for dono. No caso de um arquivo, o arquivo pode ser compartilhado entra vários usuários do sistema.

chmod com permissões por octal

chmod [opções] [Octal] [arquivo/diretório]

funciona com as mesmas opções e determina a permissão de um arquivo em modelo octal (primeiro número para o dono do arquivo, segundo para o grupo o qual o arquivo pertence e o terceiro para outros)

Permissoes em octal:

rwx
000 = --- = 0 = nenhuma permissão
001 = --x = 1 = somente permissão de execução
010 = -w- = 2 = somente permissão de escrita
011 = -wx = 3 = somente permissões de escrita e execução
100 = r-- = 4 = somente permissão de leitura
101 = r-x = 5 = somente permissões de leitura e execução
110 = rw- = 6 = somente permissões de leitura e escrita
111 = rwx = 7 = permissões de leitura, escrita e execução (acesso total)

Permissões especiais

  • 1000 = Salva imagem do texto no dispositivo de troca (faz com que a chamada do programa de novo seja mais rápida)
  • 2000 = Ajusta o bit setgid na execução (Faz o mesmo que o setuid para executáveis e para pastas faz com que todos os arquivos criados em uma pasta determinada sejam do grupo do diretório)
  • 4000 = Ajusta o bit setuid na execução (Faz com que o programa seja executado sempre como o dono do arquivo)

Exemplos de chmod com as permissões rwx

Exemplos (permissões rwx):

Determinar u=rwx; g=r; o=r

#chmod 744 arquivo.txt

Determina Permissão total para o dono do arquivo.txt Permissão de somente leitura para os outros do grupo do arquivo Permissão de somente leitura para os outros


Determina a permissão para leitura e escrita para todos

# Chmod 666 arquivo.txt

determina a permissão do arquivo.txt para leitura e escrita para todos

chmod a=rw arquivo.txt

Determina permissão total para todos na pasta e em todo conteúdo da pasta recursivamente(opção -R)

chmod -R 777 pasta/

Exemplos permissões especiais

Retira a permissão para que qualquer um que tente acessar esse arquivo o faça como se fosse o dono do arquivo.

chmod u+s arquivo.txt


Adiciona a permissão para que qualquer um que tente acessar esse arquivo o faça como se fosse o dono do arquivo

chmod u-s arquivo.txt

aplicando o bit suid em um arquivo executável (adiciona suid as permissões existentes)

#chmod u+s arquivo.sh

Aplicando o bit suid em formato octal

chmod 4750 programa.sh

(suid habilitado + rwx para o dono do arquivo, rx para o grupo e nenhuma permissão para outros)

Aplicando o bit SGID em um diretório executável (adiciona sgid às permissões existentes)

chmod g+s /home/trab

Aplicando sgid em octal

#chmod 2750 /home/trab

(sgid habilitado + rwx para o dono do arquivo, rx para o grupo e nenhuma permissão para outros)

Aplicando o bit sticky em simbólico (adiciona sticky as permissões existentes)

#chmod o +t arquivo.sh

Aplicando o sticky em octal

#chmod 1750 arquivo.sh

Permissões diferentes para arquivos e pastas

O chmod não diferencia pastas e arquivos. Para isso o find é uma opção prática.

Permissão para pastas

Neste exemplo aplica-se as permissões 755 somente às pastas em /var/www/.

find /var/www/* -print -type d -exec chmod 755 {} \;

Permissão para arquivos

Neste exemplo aplica-se as permissões 644 somente aos arquivos em /var/www/.

find /var/www/* -print -type f -exec chmod 644 {} \;

Permissão para arquivos PHP

Neste exemplo aplica-se as permissões 644 somente aos arquivos PHP no diretório corrente e descendentes.

find . -type f -name '*.php' -exec chmod 644 {} \;

Fontes

Wikipedia chmod Acessado em 20/2/2015

viva o Linux chmod Acessado em 20/2/2015

Computerhope chmod Acessado em 20/2/2015

Uniriotec.br chmod Acessado em 20/2/2015

viva o Linux chmod + dicas Acessado em 20/2/2015

How to chmod 755 all directories but no file (recursively)?