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.