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.
-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.
chmod [ugoa][+-=][rwxugost] arquivo
No modo “ugoa” usa-se a combinação das letras u g o e ano 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.
O modo octal é numérico, utilizando-se da soma dos números 4, 2 e 1. A omissão é considerada zero.
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 !!!
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.
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.
Neste caso as permissões do UGO(user(usuário), group(grupo) e other(outros)) estão sendo revogadas.
Ao usar o chmod em links, tenha sempre em mente que ele modificará O ARQUIVO DESTINO! Eu listo meu arquivo:
Veja que ele NÃO tem todas as possíveis permissões. Mas se eu listar seu link:
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:
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:
chmod
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:(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.
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.
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.
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:
Veja que ele NÃO tem todas as possíveis permissões. Mas se eu listar seu link:
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:
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: