chmod


seclinux.gif
chmod é um utilitário de linha de comando de sistemas *nix que altera as permissões de cada arquivo fornecido de acordo com o modo, que pode ser uma representação simbólica das mudanças a fazer, ou um número octal que representa o padrão de bits para as novas permissões.

O que isso significa? Para se mudar as permissões de um arquivo, pode-se utilizar dois modos: "ugoa" ou octal.


Switchs (Opções)


-v, --verbose
Descreve detalhadamente toda processo ocorrido em cada arquivo/diretório.

-c, --changes
Semelhante a opção -v descreve com detalhes o processo para cada arquivo/diretório, porém somente as permissões que estão sendo alteradas.

-f, --silent, --quiet
Oculta mensagens de erro para o arquivo/diretório cujas permissões não podem ser modificadas.

(fonte: http://focalinux.cipsga.org.br/guia/inic_interm/index.html Apostila GNU Linux Intermediário V 5.60)

--reference=rarquivo
(Novo no Utilitários de Arquivo GNU 4.0) Altera as permissões do arquivo para as mesmas do rarquivo.


(fonte: http://200.204.198.164/zago/pt_BR/man1/chmod.html )

-R, --recursive
Muda as permissões das hierarquias de arquivos que têm raiz nos arquivos/diretório. Pois desde recursivamente através de qualquer diretório especificado. Ou seja, não muda somente os próprios arquivos do diretório.

-H
Quando a opção -R também é especificada, as ligações simbólicas na linha de comando são seguidas. Porém não são seguidas as ligações simbólicas que estão na travessia da árvore.

-L
Quando a opção -R também é especificada, todas as ligações simbólicas são seguidas.

-P
Quando a opção -R também é especificada, nenhuma ligação simbólica é seguida.


(fonte:http://www.alanbueno.net/openbsd/pt_BR.ISO8859-1/man/html1/chmod.html)

UGOA


chmod [ugoa][+-=][rwxugost] arquivo

No modo “ugoa” usa-se a combinação das letras u g o e a no comando chmod, que define quais são os usuários que terão as permissões alteradas:

  • U = User, usuário dono do arquivo;
  • G = Group, usuários que pertencem ao mesmo grupo do dono do arquivo;
  • O = Others, usuários que não pertencem ao mesmo grupo do dono do arquivo;
  • A = All, Todos os usuários do sistema.
Quando o usuário não define de quem estão sendo alteradas as permissões, o sistema interpreta que você está se referindo à todos, letras a.
No comando chmod, utiliza-se de um operador que mostra o tipo de modificação que será feita nas permissões da classe de usuário :

  • o + (mais) indica a adição das permissões que serão declaradas às existentes;
  • o (menos) indica a remoção de permissões informadas;
  • o = (igual) indica a redefinição das permissões, desconsiderando as anteriores.
Após a classe de usuario e o tipo de modificação vem permissão a ser imposta, que é definida pela combinação das letras r w x s t, cada letra representando uma ação:
  • r = leitura.
  • w = gravação.
  • x = execução (para arquivos) ou autorização de acesso (para diretórios).
  • u = as mesmas permissões do dono do arquivo, já existentes.
  • g = as mesmas permissões do grupo, já existentes.
  • o = as mesmas permissões dos outros usuários que não pertencem ao grupo do dono do arquivo, já existentes.
  • s = permissão especial de execução de um arquivo ou de acesso a um diretório.
    • A pessoa com permissão especial de executar o arquivo , o fará com as permissões de dono do arquivo (diretório). Essa permissão é conhecida como SUID. Por exemplo, se o root possui um programa SUID, esse programa executará com privilégios de root, mesmo que tenha sido inicializado por um usuário comum.
    • Caso esta permissão seja dada ao grupo do arquivo (diretório), a pessoa (com autorização) que executar o arquivo (acessar o diretório), o fará com se fosse membro do grupo a qual pertence o arquivo (diretório). Este tipo de permissão é conhecido como SGID.
  • t = permissão especial de execução de um arquivo ou de acesso a um diretório para o resto dos usuários do sistema. Este tipo de permissão é conhecida como sticky bit.
    • Caso esta permissão seja dada a um diretório, o usuário pode criar,alterar e apagar apenas os seus próprios arquivos que estão neste diretório. Por exemplo, o diretório /usr/temp, usado para armazenar arquivos temporários dos usuários do sistema, possui esta permissão.

(fonte:http://www.uniriotec.br/~morganna/guia/chmod.html)



OCTAL



O modo octal é numérico, utilizando-se da soma dos números 4, 2 e 1. A omissão é considerada zero.

Modo_octal.JPG
Relação do modo ugoa e o octal (fonte:http://www.uniriotec.br/~morganna/guia/chmod.html)


Exemplo:


$ chmod 644 meutexto.txt
Isso me dá permissão de leitura e escrita ( 6), dá ao grupo direito de somente ler meu arquivo ( o 1º "4"), e a outros, a mesma permissão ( o 2º "4").

Mas, porquê 6? Veja a figura acima: qual nº corresponde a Gravação (ou escrita)? O 2. E qual corresponde a Leitura? O 4. A soma dos dois direitos? Bingo! Por isso foi escrito acima:
o sistema octal UTILIZA-SE DA SOMA DOS NÚMEROS 4, 2 e 1 !!!


(fonte: http://focalinux.cipsga.org.br/guia/inic_interm/index.html Apostila GNU Linux Intermediário V 5.60)

Exemplos:



$ chmod 700 wiki.doc

Neste exemplo o arquivo wiki.doc esta configurado para que o ‘user’ ( usuário / dono do arquivo) possa fazer o que quiser com o arquivo e negando ao grupo(group) e aos outros(other’s) qualquer tipo de permissão, neste caso esta sendo utilizado o modo octal que sera visto logo a seguir.
imagem.JPG










Desta maneira o agrupo no qual o arquivo esta presente recebe permição para escrever ou sobrescrever o arquivo wiki.doc.

Exemplo de como retirar as permissões.

1.JPG

Neste caso as permissões do UGO(user(usuário), group(grupo) e other(outros)) estão sendo revogadas.

(fonte:http://www.vivaolinux.com.br/dica/Chmod-+-dicas/)



Cuidado!


Ao usar o chmod em links, tenha sempre em mente que ele modificará O ARQUIVO DESTINO! Eu listo meu arquivo:

ls-de-ln-0.png


Veja que ele NÃO tem todas as possíveis permissões. Mas se eu listar seu link:


ls-de-ln-1.png


Percebeu? Além do fato do comando ls me mostrar que é um link, os direitos mostrados sobre o link NÃO correspondem ao arquivo-destino. Então, o que acontece se eu fizer isso:


ls-de-ln-2.png


Depois de dar o comando "chmod 000 lnk-menudefs.hook" (esse comando diz ao chmod: tire TODAS as permissões do arquivo, leitura, escrita e execução, INCLUSIVE para o dono!!!!), fiz a listagem e... nada mudou! Mas veja o que aconteceu com o arquivo-destino do link:


ls-de-ln-3.png