Diretório compartilhado entre usuários [duplicado]

0

Digamos que eu tenha 3 usuários no meu servidor:

  • /home/bob
  • /home/joe
  • /home/fred

Eu quero criar uma pasta em /share na qual bob e joe possam adicionar e excluir arquivos. Eu quero que todos os arquivos adicionados a esse diretório tenham permissões para que ambos os usuários possam modificá-los ou excluí-los.

O problema é que, quando os diretórios são criados dentro de /share/ , eles são criados com permissões para o proprietário. Se uma pasta é criada em / shared, ela pertence ao criador e ninguém mais pode modificar / excluir seu conteúdo.

Eu preciso que essa pasta se comporte de tal forma que todas as coisas criadas nela tenham permissões completas de rwx para todos.

    
por kbuilds 29.01.2015 / 00:16

2 respostas

3

Usando grupos

Como Trevor disse, você pode fazer um grupo e dar a esse grupo permissão para ler, escrever e executar essa pasta.

Para criar um grupo:

sudo groupadd groupname

Você pode usar qualquer coisa no lugar de groupname, apenas lembre-se do que é! Em seguida, vamos criar uma pasta em / share

sudo mkdir /share

Defina o grupo dessa pasta para o criado, bem como para definir permissões

sudo chgrp groupname /share
sudo chmod 775 /share

Lembre-se de mudar o nome do grupo para o que você criou! Você pode ver que alteramos as permissões de /share para 775 , eis uma explicação do que isso significa.

7 na primeira posição, isso dá ao dono da pasta, lê (lista arquivos na pasta), escreve (cria / apaga arquivos na pasta), e executa (pode cd nessa pasta) . No nosso caso, o dono da pasta é root.

7 na segunda posição, isso dá ao grupo da pasta permissão de leitura, gravação e execução. No nosso caso, o grupo da pasta é groupname ou o que você definiu.

5 na posição final, isso dá ao público (quem pode fazer logon no sistema), lê e executa a permissão. Isso permite que eles usem cd na pasta e listem os arquivos usando ls ou um comando similar. Se você quiser impedir que outras pessoas cd 'na pasta você pode usar 0 em vez de 5 , o que significa que eles não têm permissões.

Para adicionar um usuário a um grupo, para que possa usar as permissões do grupo, podemos usar:

sudo usermod -a -G groupname [username]

Certifique-se de alterar o nome do grupo e o [nome de usuário] para os valores corretos.

Observação: um usuário só pode estar em um grupo principal, mas em vários grupos secundários. O comando que forneci adiciona outro grupo secundário ao usuário especificado.

Usando ACLs

Uma solução alternativa, que eu acho mais complexa, é usar ACLs (ou Access Control Lists). Isso permite que você conceda permissões específicas a usuários específicos sem o uso de grupos ou a mudança de proprietários. Para que isso funcione, o sistema de arquivos deve ser montado com a opção acl .

Preparando para usar o ACL

Primeiramente, devemos verificar se a unidade já está montada como ACL. Como a pasta está no /share está na partição raiz ( / ), devemos garantir que a partição raiz já esteja montada com a opção acl .

Observação: O /home nem sempre está dentro da partição raiz, a pasta /home pode ser sua própria partição. Isso também se aplica a outras partições.

Para determinar se uma partição tem a ACL ativada, podemos usar o comando mount .

mount -l

Para mim, isso é na primeira linha.

/dev/sda5 on / type ext4 (rw,errors=remount-ro)

Podemos ver que a partição /dev/sda5 está montada em / . Você pode não estar na primeira linha, como a minha. Pode ser no segundo, terceiro, mas deve ser montado em / , porque é onde o nosso /share é.

Agora, precisaremos determinar se temos a opção acl .

tune2fs -l [partition path]

Da minha saída de mount -l você pode ver que o caminho da minha partição é /dev/sda5 , o seu pode ser diferente.

Ao executar o comando, obteremos algo semelhante a isto:

tune2fs 1.42.9 (4-Feb-2014)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          5e7b3dcf-cda0-4a74-ab0e-67c9ce8ab044
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
~cut off to save space~

Na linha de opções de montagem padrão, podemos ver que temos acl ativado. Se você não tiver acl ativado, poderá usar o Google para descobrir como fazer isso.

Agora, como o método com grupos, você precisará criar a pasta:

sudo mkdir /share

Uma última coisa, devemos definir a pasta como 700 , portanto, somente a raiz (e as pessoas com acesso concedido pela ACL) podem acessar a pasta:

sudo chmod 700 /share

Agora podemos definir o controle de acesso. Nota: definir as permissões, sem usar acl e, em vez disso, usar chmod , fará com que as permissões de acl sejam redefinidas.

Definindo permissões de ACL

É um pouco mais simples agora, se você quiser definir permissão para um usuário, você pode usar

sudo setfacl -m "u:[username]:rwx" /share

Isso concederá permissões [username] rwx (ler, gravar, executar). O sudo é necessário apenas porque / share é de propriedade do root.

Para um grupo, use:

sudo setfacl -m "g:[groupname]:rwx" /share

Para outro / público (inclui apenas pessoas que podem fazer logon no sistema) use:

sudo setfacl -m "o:rwx" /share

Observação: você pode trocar rwx por outros como rx somente para leitura / execução. Nota: se você passar uma opção -d enquanto estiver usando setfacl ( setfacl -d -m "u:... ), isso definirá o valor padrão da ACL para a pasta. Isso fará com que quaisquer novos arquivos adicionados à pasta tenham automaticamente as permissões aplicadas.

    
por Henry 29.01.2015 / 01:23
0

EDITADO:

Crie um grupo de usuários, clique com o botão direito na pasta desejada e defina as permissões apropriadas para esse grupo! Espero que isso ajude!

    
por Trevor Clarke 29.01.2015 / 00:21