Como especificar um grupo com chmod?

34

Me pediram para adicionar permissões de grupo-wrx a um diretório na pasta inicial de outro usuário.

Acredito que o que devo fazer é executar chmod 771 -R directorynameno diretório pai. O que não consigo encontrar em nenhum lugar nos tubos é como especificar a qual grupo quero conceder essas permissões. Pessoalmente, estou em vários grupos e em um grupo que não conheço como raiz.

Caso isso importe, o sistema está executando o Redhat 5.4.

joe_young
fonte

Respostas:

37

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

Para adicionar rwxpermissões de grupo , você deve usar:

chmod -R g+rwx DirectoryName

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

Para afetar apenas diretórios, use find:

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

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

Jonathan Leffler
fonte
1
Se você usar + X (X maiúsculo), apenas adicionará permissão de execução (ou 'pesquisa') se o arquivo for um diretório ou já tiver permissão de execução para algum usuário. linux.die.net/man/1/chmod
Dave
@ Dave: também chmod +Xé suportado no BSD (Mac OS X). O exame cuidadoso do POSIX chmodindica, +Xafinal, que é um recurso do POSIX: O símbolo de permissão X deve representar a parte de execução / pesquisa dos bits do modo de arquivo, se o arquivo for um diretório ou se os bits atuais (não modificados) do modo de arquivo tiverem pelo menos um dos o conjunto de bits de execução (S_IXUSR, S_IXGRP ou S_IXOTH). Será ignorado se o arquivo não for um diretório e nenhum dos bits de execução estiver definido nos bits atuais do modo de arquivo. Observe a justificativa abaixo.
Jonathan Leffler
12

Todo 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 proprietário desse arquivo poderá lê-lo / gravá-lo / executá-lo. No entanto, você pode 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 estendidos de sistema de arquivos, ou seja, ACLs (Access Control Lists) no Mac OS X, mas como eu não sou especialista em Linux, você provavelmente deve solicitar isso em Server Fault .

Marian Theisen
fonte
"Então, se você estiver definindo permissões de grupo rwx em um arquivo, somente o grupo proprietário desse arquivo poderá lê-lo / gravá-lo / executá-lo", percebo que isso pode ser enganoso, antes de tudo, se você é o proprietário, é claro que as regras de usuário proprietário têm precedência, se você não for o usuário proprietário nem o grupo de proprietários, as regras para os outros se aplicam.