Os comandos mostrados aqui são utilizados para mudar o dono ou grupo do dono de um arquivo ou ainda as suas permissões. Vimos as diferentes permissões que um arquivo pode ter na Capítulo 1, Conceitos Básicos de Sistemas UNIX®.
A sintaxe do comando chown (CHange OWNer) é mostrada a seguir:
chown [opções] <usuário[:grupo]> <arquivo|diretório> [arquivo|diretório...]
As opções do comando chown incluem:
-R
: Operação Recursiva. Utilizado
para mudar o dono de todos os arquivos e subdiretórios em um dado
diretório.
-v
: modo verborrágico.
Mostra todas as ações executadas pelo comando chown; informa
quais arquivos tiveram sua posse mudada como resultado do comando e
quais arquivos não foram modificados.
-c
: semelhante à opção
-v
, porém, informa somente os arquivos que foram
modificados.
chown nobody
/shared/book.tex: muda o dono do arquivo
/shared/book.tex
para o usuário
nobody
.
chown -Rc
usuario1:music *.mid concerts/: muda a posse de todos os
arquivos no diretório corrente cujos nomes terminem com
.mid
e de todos os arquivos e subdiretórios no diretório
concerts/
para o usuário
usuario1
e grupo
music
, informando somente quais arquivos foram
afetados pelo comando.
O comando chgrp (CHange GRouP) permite que você modifique o grupo do dono do arquivo (ou arquivos); sua sintaxe é bem parecida com a sintaxe do comando chown:
chgrp [opções] <grupo> <arquivo|diretório> [arquivo|diretório...]
As opções para esse comando
são as mesmas do comando chown, e ele é utilizado de uma maneira
muito similar. Dessa forma, o comando chgrp disk
/dev/hd* muda o grupo de todos os arquivos no
diretório /dev
cujos nomes começem com
hd
para o grupo disk
.
O comando chmod (CHange MODe) tem uma sintaxe bem própria. Sua sintaxe geral é:
chmod [opções] <modo a ser modificado> <arquivo|diretório> [arquivo|diretório...]
Porém, o que distingue ele dos demais são as diferentes formas que o modo a ser modificado pode tomar. O modo pode ser especificado de duas maneiras:
Em formato octal. As permissões do dono,
correspondem aos dígitos com o formato
<x>00
, onde
<x>
corresponde à permissão atribuída: 4 para
permissão de leitura, 2 para permissão de escrita e 1 para permissão
de execução. De maneira similar, as permissões do grupo tem o formato
<x>0
e as permissões para
“outros” usuários tem o formato <x>
.
Então, tudo o que você têm a fazer é somar as permissões atribuídas
para obter o modo correto. Assim sendo, as permissões
rwxr-xr--
correspondem a 400+200+100 (permissões do
dono, rwx
) +40+10 (permissões do grupo,
r-x
) +4 (permissões para outros,
r--
) = 754; desta maneira, as permissões são
expressas em termos absolutos. Isso quer dizer que as permissões
anteriores são substituídas incondicionalmente;
com expressões. Nesta forma, as permissões
são expressas por uma seqüência de expressões separadas por
vírgulas. Sendo assim, uma expressão tem a seguinte forma:
[categoria]<+|-|=><permissões>
.
A categoria pode ser uma ou mais das seguintes:
Se nenhuma categoria for
especificada, as mudanças serão aplicadas a todas as categorias. Um
+
atribui a permissão, um
-
remove a permissão e um
=
atribui a permissão exatamente como foi passada
na linha de comando. Finalmente, a permissão é uma ou mais das seguintes:
As principais opções são similares às opções dos comandos chown e chgrp:
chmod -R o-w
/shared/docs: remove recursivamente a permissão de escrita
para outros
em todos os arquivos e subdiretórios no
diretório /shared/docs/
.
chmod -R og-w,o-x
private/: recursivamente, remove a permissão de escrita para
grupo
e outros
em todo o
diretório private/
. Remove também a permissão de
execução para outros
no diretório
private/
.
chmod -c 644
misc/arquivo*: muda as permissões de todos os arquivos no
diretório misc/
cujos nomes começem com
arquivo
para rw-r--r--
(i.e. permissão de leitura para todos e permissão de escrita somente
para o dono do arquivo), e indica somente os arquivos afetados pela
execução do comando.