2. Tratando Atributos de Arquivo

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®.

2.1. chown, chgrp: Mudam o Dono ou o Grupo de Um ou Mais Arquivos

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.

Alguns Exemplos:

  • 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.

2.2. chmod: Mudando as Permissões de Arquivos e Diretórios

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:

  1. 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;

  2. 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:

    • u (Usuário, permissões para o dono);

    • g (Grupo, permissões para o grupo do dono);

    • o (Outros, permissões para os “outros”).

    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:

    • r (Leitura);

    • w (Escrita) ou;

    • x (eXecução).

As principais opções são similares às opções dos comandos chown e chgrp:

  • -R: muda as permissões recursivamente.

  • -v: modo verborrágico. Mostra as ações tomadas na execução para cada arquivo.

  • -c: semelhante à opção -v, porém mostra somente os arquivos afetados pelo comando.

Exemplos:

  • 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.