Conceda permissões de gravação para vários usuários em uma pasta no Ubuntu

80

Há uma pasta que pertence ao usuário tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Desejo permitir permissões de gravação para outro usuário (usuário) na pasta do documento. Os dois usuários (tomcat6 e ruser) não pertencem ao mesmo grupo. Eu tentei usar setfacl:

sudo setfacl -m  u:ruser:rwx document

mas isso me dá setfacl: document: Operation not supportederro. Por favor me ajude.

TheVillageIdiot
fonte

Respostas:

144

Há duas maneiras de fazer isso: defina o diretório como "mundo" gravável ou crie um novo grupo para os dois usuários e torne o diretório gravável nesse grupo.

Obviamente, tornar o mundo gravável é uma coisa ruim, então a segunda opção é preferível.

Usuários no Linux podem pertencer a mais de um grupo. Nesse caso, você deseja criar um novo grupo, vamos chamá-lo tomandruser:

sudo groupadd tomandruser

Agora que o grupo existe, adicione os dois usuários a ele:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Agora tudo o que resta é definir as permissões no diretório:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Agora, apenas os membros do grupo tomandruser podem ler, gravar ou executar qualquer coisa no diretório. Observe o argumento -R nos comandos chmod e chgrp: isso diz para eles recursarem em todos os subdiretórios do diretório de destino e modificarem todos os arquivos e diretórios que encontrar.

Você também pode alterar o 770 para algo como 774se você quiser que outros possam ler os arquivos, 775se você quiser que outros leiam e executem os arquivos, etc. As alterações de atribuição de grupo não terão efeito até que os usuários façam logoff no.

Se você também deseja (provavelmente deseja) que os novos arquivos criados dentro do diretório por um dos usuários sejam graváveis ​​automaticamente por outros membros do grupo, consulte aqui .

Andrew Lambert
fonte
2
Provavelmente, você também deseja definir o sinalizador set-group-ID para diretórios, para tornar novos arquivos e subdiretórios pertencentes automaticamente ao grupo certo:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio
8
Eu evitaria usar chmod 770, 775 ou o que quer. Isso mexe com as permissões de todos os arquivos. Em vez disso, use algo como chmod -R g+wadicionar permissões de gravação sem estragar tudo o resto.
Christian Varga
2
Se um usuário criar um novo arquivo lá (digamos, mysql by SELECT INTO OUTFILE), ele definirá permissões para seu grupo principal ( mysqlnesse caso), e o arquivo não poderá ser acessado por outro usuário. Como solucionar isso?
Olexa
2
E se você deseja conceder aos usuários acesso de gravação a uma pasta sem alterar a propriedade da pasta, por exemplo, você não deseja mexer nas permissões do apache em uma pasta public_html?
Codecowboy
2
Nota: "As alterações na atribuição do grupo não terão efeito até que os usuários efetuem logoff e logon novamente". Eu perdi isso :) #
444 Vladimir Vukanac
3

O script de exemplo mostra um exemplo para dar w (write)/ r (read) / x (execute)permissão ao caminho da pasta fornecido /path/to/the/directorypara USER1e USER2. Se você deseja fornecer apenas acesso de gravação, substitua rwxpor w.


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
alper
fonte