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.