Muitas vezes, ao executar o Linux, os utilizadores raramente pensam sobre a quem pertence um ficheiro. No entanto, quando se trata de executar um servidor, a situação muda. Para aumentar a segurança, o servidor tem o seu próprio utilizador. Não é incomum que os servidores usem o mesmo grupo, como www-data
. A seguir, vamos ver como esta função funciona com ficheiros e diretórios. Vamos prestar especial atenção às ligações simbólicas, uma vez que podem causar problemas quando se utilizam definições inseguras.
O padrão de permissões de ficheiros veio do Unix para o Linux. Assim, cada objeto tem um utilizador
, um grupo
e, além disso, descreve os direitos deoutros
utilizadores(outros
). As permissões consistem em três itens: ler, escrever, executar. O comando umask
é utilizado para alterar as permissões, mas os comandos chown
são utilizados para alterar diretamente o proprietário e o grupo. O comando ls
pode ser utilizado para ver as permissões actuais.
Visão geral do comando chgrp
:
$ chgrp [options] new_group file_name
Lista de opções comuns para o comando chgrp
:
-h
- trabalha diretamente com as próprias ligações simbólicas;--dereference
- trabalha com ficheiros, não com as próprias ligações simbólicas. Usado por padrão;-R
- processamento recursivo de um diretório com todo o seu conteúdo;-H
- segue a ligação simbólica e altera os atributos do ficheiro/diretório. Usado em conjunto com o parâmetro -R
;-L
- segue a ligação simbólica e continua o processamento recursivo. Usado em conjunto com o parâmetro -R
;-P
- ao encontrar um link simbólico, processa apenas ele. Usado junto com o parâmetro -R
, é o valor padrão;--reference=nome_do_arquivo
- usa o grupo de amostra;-c
- a saída só é alterada durante o processamento;-v
- produz informações sobre cada objeto processado.O exemplo mais simples de utilização do comando chgrp
. O seguinte altera todo o objeto www-data
para o ficheiro
na pasta atual:
$ sudo chgrp www-data file.txt
E este aqui altera o grupo para www-data
para a pasta pasta
:
$ sudo chgrp www-data folder
O comando funciona de uma forma muito previsível, alterando o grupo. Os objectos na pasta permanecem inalterados. Se as ligações simbólicas forem tratadas, os seus atributos permanecem inalterados, mas o objeto recebe um novo grupo. Este comportamento é semelhante ao tratamento do parâmetro --dereference
.
Por exemplo, estes comandos aplicados a ligações simbólicas funcionarão como mostrado na imagem de ecrã:
$ sudo chgrp www-data sym_file.txt
Vamos dar uma olhada em como o parâmetro -h
que altera os atributos de um link simbólico funcionaria:
$ sudo chgrp -h www-data sym_file
O grupo foi definido não apenas para o diretório, mas também para todos os arquivos dentro dele. Note que o comportamento mudou, agora ao processar uma ligação simbólica os atributos são definidos para a própria ligação, não para o objeto.
Para ver a diferença entre os parâmetros -H
e -L
, vamos dar uma olhada em mais alguns exemplos. Lembre-se de que eles devem ser usados junto com -R:
$ sudo chgrp -RH www-data folder
Usando -H
o comportamento ao processar links simbólicos mudou, eles agora são tratados como se as funções fossem executadas separadamente. Os atributos das referências não se alteram, os atributos dos próprios objectos sim, e o processamento recursivo pára quando se muda para um diretório.
$ sudo chgrp -RL www-data folder
Ele executa uma função - altera o grupo de ficheiros e diretórios.
Ao processar ligações simbólicas, deve ser extremamente cuidadoso para não danificar o sistema.