Como especificar o grupo com chmod?

29

Fui solicitado a adicionar permissões group-wrx a um diretório na pasta base de outro usuário.

Eu acredito que o que devo fazer é executar chmod 771 -R directoryname no diretório pai. O que eu não consigo encontrar em nenhum lugar nos tubos é como especificar qual grupo eu quero conceder essas permissões. Eu estou pessoalmente em vários grupos, e em um monte eu não sei como root.

Caso seja importante, o sistema está executando o Red Hat 5.4.

    
por joe_young 30.09.2011 / 19:42

2 respostas

31

A chamada do sistema chmod() e por extensão o programa chmod não afeta o grupo de um arquivo ou diretório (ou outro tipo de arquivo: bloco especial, caractere especial, soquete, ... symlink é algo de um caso especial). Assim, o grupo ao qual a permissão é dada será o grupo ao qual o arquivo ou diretório pertence.

Para adicionar permissões de rwx ao grupo, você deve usar:

chmod -R g+rwx DirectoryName

No entanto, isso adiciona as permissões a todos os arquivos, bem como a todos os diretórios, e nem todos os arquivos devem ser executáveis. Pessoalmente, eu ficaria muito infeliz se alguém fornecesse permissão de escrita em grupo em todos (ou em quaisquer) dos meus diretórios, mas isso é outra história.

Para afetar apenas os diretórios, use find :

find DirectoryName -type d -exec chmod g+rwx {} +

(A notação + é POSIX 2008; nem todos os sistemas Unix suportam, embora o Linux o faça.)

    
por 30.09.2011 / 19:58
9

Cada arquivo em um sistema de arquivos ext possui:

  1. Um usuário proprietário
  2. Um grupo de proprietários
  3. Permissões para este usuário, este grupo e todos os outros.

Se você estiver definindo permissões de grupo rwx em um arquivo, somente o grupo de proprietários desse arquivo poderá ler / gravar / executar. Você pode, no entanto, alterar usuário e proprietário com:

chown username file1 file2 ...
chown -R username somedir
chgrp groupname file1 file2 ....
chgrp -R groupname somedir
chown username:groupname file1 file2 ...

Existem implementações diferentes para privilégios de sistema de arquivos estendidos, isto é, ACLs (Access Control Lists) no Mac OS X, mas como eu não sou especialista em Linux, provavelmente você deve perguntar em Falha do servidor para isso.

    
por 30.09.2011 / 19:51