chmod

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

chmod (abreviação de change mode, em português: alterar modo) é um comando do Unix usado para alterar permissões de arquivos (ou ficheiros) e diretórios (directórios ou pastas). Sua sintaxe é a seguinte:

$ chmod [opções] modo[,modo] arquivo1 [arquivo2 ...]

O chmod atua basicamente sobre os níveis usuário, grupo e outros. Tanto pode usar letras como o modo octal para atribuir permissões.

Modo octal[editar | editar código-fonte]

Um octal é um número escrito sob a base 8, ou seja, usa 8 símbolos diferentes para ser representado, geralmente, os algarismos arábicos de 0 a 7. O chmod usa um número octal de 3 algarismos como parâmetro para realizar sua função.

A composição do número octal usado é feita analisando sua representação binária. Para representar cada algarismo de um número octal são necessários 3 algarismos binários. Logo o número octal de 3 algarismos usado pelo chmod será representado por um binário de 9. Cada grupo de 3 algarismos binários representa um dos níveis entre usuário (u), grupo (g) e outros (o), e cada um dos 3 algarismos ou bits de cada grupo representa um tipo de permissão entre leitura (r), do Inglês 'read', gravação (w), do Inglês 'write' e execução (x), do Inglês 'execute', onde um '1' indica permissão cedida e um '0', permissão negada.

Ex.:

$ chmod 750 arquivo.txt

No exemplo o número 750 está escrito na forma octal. Sua forma binária seria 111101000. O 7 é a forma octal do binário '111' e representa todas as permissões (leitura, escrita e execução) para o proprietário (user) do arquivo 'arquivo.txt'. O 5 é a forma octal do binário 101 e representa as permissões de leitura e execução para o grupo, e por fim, 0 representa a negação de todas as permissões para outros.

    Nível  u   g   o
Permissão rwx r-x ---
  Binário 111 101 000
    Octal  7   5   0
Para arquivos (-)
rwx 
000  0  (zero) permissão negada
001  1   permissão de execução
010  2   permissão de gravação
011  3   permissão de gravação e execução
100  4   permissão de leitura
101  5   permissão de leitura e execução
110  6   permissão de leitura e gravação
111  7   soma de todas as permissões
Para diretórios (d)
rwx
000  0  (zero) permissão negada
001  1   permissão para entrar no diretório
010  2   permissão para gravar dentro do diretório
011  3   permissão de entrar e gravar no diretório
100  4   permissão para listar o conteúdo do diretório
101  5   permissão de listar e entrar no diretório
110  6   permissão de listar e gravar no diretório
111  7   soma de todas as permissões

Há uma maneira muito fácil de se converter números binários para octais. Basta somar os valores relativos dos algarismos. Exemplo: sabendo se que os valores absolutos de cada algarismo em 111 são respectivamente 4, 2 e 1, se os somarmos chegaremos a 7. Já em 000, temos 000, e como soma, 0.

Usando letras[editar | editar código-fonte]

É possível e mais humano prescindir do modo octal. Quando a modificação se fizer sobre o grupo, por exemplo, faremos assim para adicionar a permissão de escrita:

$ chmod g+w arquivo.txt

Dessa forma o grupo a que pertence este arquivo passa a ter permissão de gravação no mesmo. É possível mudar várias permissões para o mesmo ficheiro. Por exemplo:

$ chmod o+rw envel.ficheiro

Atribui a outros, de uma vez, as permissões de leitura e escrita sobre o ficheiro envel.ficheiro. De forma semelhante é possível mudar permissões de uma só vez para diversas classes de utilizador:

$ chmod ugo-rwx envel.ficheiro

Retira todas as permissões, a todas as classes de utilizador, relativamente ao ficheiro envel.ficheiro.

Opções[editar | editar código-fonte]

Algumas opções extras estão disponíveis para o chmod se adicionarmos os seguintes parâmetros

-c, --changes             igual verbose, mas reporta apenas quando uma mudança é feita
    --no-preserve-root    não trata '/' especialmente (padrão)
    --preserve-root       falha ao operar recursivamente em '/'
-f, --silent, --quiet     suprimir a maior parte das mensagens de erro
-v, --verbose             mostrar um diagnóstico para cada arquivo processado
    --reference=ARQR      usa modo do arquivo ARQR em vez dos valores de MODO
-R, --recursive           muda arquivos e diretórios recursivamente
    --help                exibe esta ajuda e sai
    --version             mostra informação de versão e sai

As permissões em vigor podem ser conhecidas com o comando ls. Ex:

$ ls -l

Outros comandos relacionados com o chmod são chown, que muda o dono de arquivos e pastas (ficheiros), e chgrp, que muda o grupo a que pertence o ficheiro.

Ligações externas[editar | editar código-fonte]