Como configurar uma pasta para que qualquer coisa criada nela herda permissões?

18

Eu tenho uma pasta / data (na verdade uma partição) para todos os dados que devem ser acessíveis por todos os usuários (nesse caso, membros da família). Todos nós temos contas de usuário individuais e, geralmente, todos efetuamos login a qualquer momento neste PC.

Como posso configurar permissões para que todos mantenham acesso aos arquivos, não importa quem os crie, incluindo novas pastas? Se eu criar uma pasta, ele obterá meu usuário e grupo, para que ninguém mais possa escrever nela.

steevc
fonte
para os visitantes. Se você apenas deseja que o nome do grupo seja herdado chmod -R g+s /parentdir. Nota: execute chmod -R antes disso, se necessário
Thamme Gowda
11
Observe o exposto acima: o -Rsinalizador para chmodraramente é útil porque raramente queremos que os diretórios (que sempre precisam de permissão de execução) e os arquivos regulares (que raramente precisam de permissão de execução) tenham as mesmas permissões
Zanna

Respostas:

17

Outra abordagem é usar as listas de controle de acesso, um superconjunto de permissões de arquivo.

Primeiro de tudo, temos que instalar o pacote acl Instalar acl :

sudo apt-get install acl

Antes do Ubuntu 14.04 , a partição precisava ser montada com a opção aclde funcionamento a seguir. Pode ser adicionado /etc/fstab, como em

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

ou para um sistema de arquivos já montado

sudo mount -o remount,acl /media/shared

Em seguida, você deve criar um novo grupo, ao qual todos os usuários com permissão para acessar o compartilhamento no modo de leitura / gravação serão adicionados. Eu chamo isso usershare. Um grupo já existente pode ser usado.

sudo addgroup usershare

Agora adicionamos os usuários enzotibe steevca esse grupo:

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(efetivo no próximo login).

Em seguida, adicionamos uma ACL com rwxpermissões para o grupo usersharea todos os arquivos já existentes/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

Por fim, adicionamos uma ACL padrão com rwxpermissões para o grupo usersharepara todos os arquivos criados a partir de agora dentro/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

Agora todos os usuários do usersharegrupo têm permissões totais em todos os arquivos em /media/shared. As permissões de cada usuário nos diretórios pessoais dele e de outros não são afetadas.

Testei esta solução e parece funcionar, mas sugestões e correções são bem-vindas.

Observação : novos arquivos e diretórios criados no diretório considerado terão permissão de gravação para o usersharegrupo, mas os arquivos copiados ou movidos na pasta manterão suas permissões originais. Se o usuário, pelo que entendi, exigir apenas acesso de gravação a diretórios criados recentemente, isso não será um problema. Caso contrário, ele deve modificar as permissões manualmente. Veja esta resposta sobre como superar isso definindo a umask de usuários para 002.

enzotib
fonte
Não conheço muito bem o acl, você pode testar e copiar um arquivo com permissões como rw-r - r-- da sua pasta pessoal para a pasta compartilhada e ver se as permissões mudam para o rwx padrão do usersharegrupo?
organize
@range: não, ele não funciona conforme o esperado. Indicar na resposta. Obrigado
enzotib
Eu acrescentaria que a etapa /etc/fstab/ remountnão é necessária, porque ext4deve ser montada com a aclopção ativa por padrão.
enzotib
8
  1. Faça pasta.

    Por exemplo:

    mkdir /mnt/family
    

    Se você precisar montar uma partição para eles ... se ext4 tudo o que você precisa /etc/fstabé

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. Crie o grupo myfam.

    addgroup myfam
    
  3. Adicione alguns usuários a esse grupo

    adduser papa myfam  
    adduser mom myfam
    
  4. Agora pegue e dê permissão.

    Eu acho que você deveria começar, mudando umask.

    Permissões padrão do sistema de arquivos e direitos de acesso na versão 12.04

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    Agora o mais importante. Essa linha cria setgidtudo o que você cria nessa pasta e seus usuários são proprietários e grupos myfam. Isso permite que o sistema substitua o grupo principal de usuários.

    chmod -R g+s /mnt/family   
    
Pas_
fonte
3

A coisa mais simples que vem à mente é adicionar cada usuário ao grupo de todos os outros usuários.

Em seguida, altere umask de cada usuário de 022 para 002, para que isso possa ser feito /etc/profile.

Editar

A primeira etapa pode ser substituída pela seguinte: faça com que todos os usuários pertençam ao usersgrupo como o grupo principal.

Edi2

Como o @James_Henstridge sugeriu, pode ser conveniente definir o bit setgid no diretório principal, para que os novos arquivos e diretórios criados tenham o mesmo grupo, independentemente do usuário. Dessa forma, você pode evitar o conjunto userscomo o grupo principal dos usuários.

enzotib
fonte
Você pode editar sua resposta para sugerir também definir o bit setgid em todos os diretórios /datapara que novos arquivos herdem a propriedade do grupo.
James Henstridge
edit3 :) Se você copiar um arquivo para a /datapasta, as permissões não serão herdadas; portanto, os arquivos antigos com permissões gw não poderão ser modificados por outras pessoas. edit4: definir userscomo seu grupo principal e umask0002 definitivamente não é uma boa ideia, pois qualquer pessoa desse grupo poderá modificar qualquer um dos seus arquivos recém-criados.
organize
@range: em relação à sua edição4, sugeri colocar em usersgrupo apenas os usuários com permissão para ter acesso rw ao compartilhamento. Era uma questão de conveniência, também poderia criar outro grupo para isso. Em relação à sua edição3, não está correto, o arquivo copiado adquire o grupo de pastas.
enzotib 11/07
@enzotib: para reiterar meu argumento em outras palavras: edit4 - se usersfor o meu grupo principal e houver mais usuários nesse grupo, eles poderão modificar meus arquivos mesmo fora do diretório compartilhado; edit3 - Eu escrevi permissões , NÃO grupo de pastas.
organize
@range: o seu ponto está correto, acabei de escrever outra resposta, pode ser interessante ouvir sua opinião.
enzotib 11/07
2

Isso parece um trabalho para ACLs. Giles tem uma resposta muito completa no site do SE Unix e Linux que me ajudou a resolver o mesmo problema.

ephsmith
fonte
11
Isso funcionou! Vi outras respostas usando a ACL, mas essa é a única que vi que altera as permissões não apenas de novos arquivos e diretórios criados no diretório compartilhado, mas também daqueles copiados ou movidos para ele.
18712
0

Eu não entendo, são todos linux-linux, linux-windows, linux - ???, usando Samba ?, SSH ?, Pigeons ?; de qualquer maneira, você precisa incluir os outros no grupo com seu nome de usuário (seu grupo) e eles terão as mesmas permissões que você.

juancarlospaco
fonte
São vários usuários em um PC. Tenho certeza de que deve haver uma maneira de obter as permissões padrão para algo útil.
steevc 10/07/11
0

Me deparei com essa pergunta enquanto procurava respostas para o meu problema de PERMISSÃO DE GRUPO. Eu li a pergunta e parece que já estou implementando o que a pergunta tenta realizar.

Então eu me preocupei em responder.

Já tenho uma configuração de compartilhamento para todos os usuários na minha LAN apenas com leitura e execução, e somente minha conta tem permissão para gravar nas pastas compartilhadas.

Eu tenho um servidor multiuso na minha LAN que usa o ubuntu 12.04 LTS Desktop Edition. Eu tenho uma mistura de máquinas clientes de linux e windows.

Aqui está como eu o configurei:

1. No meu servidor, tenho contas de usuário nomeadas admineclientone

A adminconta é a conta criada quando eu instalei o ubuntu e a clientoneconta é criada usando o menu CONTAS DO USUÁRIO no ubuntu. Ele tem apenas uma permissão padrão, nenhum privilégio de administrador e é adicionado ao usersgrupo. Obviamente, você pode fazer isso usando apenas o terminal. Adicione mais contas de usuário adicionais para as máquinas clientes.

2.A partição / pasta compartilhada é montada automaticamente no fstab usando apenas a opção de padrões.

3. Minha rede está em um ambiente de grupo de trabalho e está em um mylangrupo de trabalho.

Todas as máquinas na minha LAN estão definidas para usar o mylangrupo de trabalho.

4.A minha pasta compartilhada chamada sharedjá possui arquivos. Então, mudo o proprietário e o grupo para ele recursivamente usando o comando abaixo.

 sudo chown -Rv admin:users /shared

5.Eu também defino a permissão de pasta e arquivo para /sharedpasta recursivamente usando o comando

 sudo chmod -Rv 750 /shared

máquinas convidadas no meu mylangrupo de trabalho não têm acesso ao compartilhamento usando o chmod 750

você pode usar

 sudo chmod -Rv 755 /shared

Todas as futuras contas de usuário dentro do usersgrupo possuem apenas permissão de execução de leitura.

6. Na máquina cliente um (windows xp), configuro uma conta de usuário chamada clientone. O mesmo nome de usuário e senha que o criado no meu servidor ubuntu. Uma segunda conta chamada clienttwotambém é criada no servidor ubuntu e é a mesma conta de usuário usada na minha segunda máquina (linuxmint 15).

7. Na minha máquina cliente, uma ao efetuar login usando a clientoneconta, vou executar o comando e digito

 //192.168.10.254/shared

192.168.10.254é o endereço IP do meu servidor ubuntu, /sharedé a pasta compartilhada no meu servidor ubuntu Na máquina cliente dois (linuxmint 15), vou para Menu> Rede e na barra de diálogo Localização: digitei:

 smb://192.168.10.254/shared

Se você foi solicitado a fornecer uma senha, digite a senha da sua conta de usuário. E também sua senha do chaveiro, se o KEYRING estiver ativado em suas máquinas Linux.

Este funciona para mim na minha própria configuração de rede. Meu servidor é um servidor multiuso que serve como servidor squid, xbmc e mediatomb e amahi.

Ainda estou procurando maneiras de como melhorar a parte de compartilhamento de arquivos da minha instalação. As instruções acima não são uma solução à prova de balas, compre e experimente. Eu testo e tento a ACL ”junto com a montagem automática de pastas compartilhadas. À medida que o seu requisito de compartilhamento de pastas fica complicado, as instruções acima não garantem o seu sucesso.

Informações Adicionadas:

Eu tenho o Amahi Server instalado no meu servidor, também o usei para criar contas de usuário que eu queria ter acesso às pastas compartilhadas. Eu também o usei para criar novos compartilhamentos de pastas.

Quando você deseja uma permissão de usuário mais complexa para diferentes usuários, a ACL é a melhor.

GaryP
fonte
0

Tenho arquivos de vídeo em meu nome, mas quando faço login com o nome de minhas filhas, a conta dela não consegue ver os arquivos de vídeo. Então, o que eu fiz foi acessar contas de usuário, desbloqueadas (canto superior direito), depois alterar o tipo de conta de "padrão" para "administrador" (que é a minha conta) e agora todos os arquivos de vídeo, realmente tudo, são exibidos quando logado na conta dela.

Joe
fonte