Então, eu uso o Linux há alguns anos e realmente devo saber essa resposta, mas estou tendo problemas para encontrá-la. Especificamente, eu tenho usado distro baseado em Debian .... principalmente Ubuntu.
Se eu tiver um servidor com mais de três usuários, como definir um conjunto diferente de permissões para um arquivo para cada usuário.
Por exemplo:
Se eu tiver um arquivo com estas permissões e propriedade:
rwx rw_ r__ user1:group1 file1.txt
e eu tenho 3 usuários com essas permissões desejadas ....
- user1 rwx
- user2 rw_
- user3 r__
Tudo o que tenho a fazer é ter o usuário1 como dono do arquivo, o usuário2 estar no grupo1 e o usuário3 pode não estar - correto?
Mas, e se eu tiver um usuário4 e um usuário5 .
- user4 _wx
- user5 __x
Como eu configuraria isso?
Eu nunca tive que fazer isso antes, mas fui perguntado por um administrador do Windows e sinceramente não consegui responder.
fonte
Respostas:
As permissões unix tradicionais permitem apenas permissões de usuário, grupo e outras como você encontrou. Isso pode resultar em uma combinação estranha de grupos que precisam ser criados ...
Portanto, uma nova forma de ACL (Access Control Lists) foi implementada. Isso permite que você especifique vários usuários e vários grupos com permissões diferentes. Estes são definidos com o
setfacl
comando e lidos comgetfacl
Você pode saber facilmente se um arquivo tem uma ACL observando a
ls
saída:O
+
no final das permissões indica uma ACL.fonte
Sim, as ACL: s permitem definir livremente direitos diferentes para diferentes usuários ou grupos. As permissões de grupo usuais do IIRC limitam o conjunto de permissões que grupos e usuários podem ter através da ACL: s (mostrada como
mask
emgetfacl
), massetfacl
devem lidar com isso se você adicionar permissões.Mas, em alguns casos, você precisa perguntar se o conjunto de permissões faz algum sentido.
Você pode implementar isso com ACL: s ou (aproximadamente) com as permissões usuais do Unix, tornando o usuário1 o proprietário do arquivo, o usuário2 um membro do grupo e permitindo que outros, incluindo o usuário3, tenham acesso de leitura. Embora todos (com acesso ao diretório) também tenham acesso de leitura.
Vamos considerar o significado dessas permissões. Você tem um usuário que pode ler e outro que pode ler e escrever. Isso é completamente usual. Nenhum deles tem acesso para executar o arquivo, mas um terceiro usuário também deve fazer isso.
Isso não faz muito sentido em minha mente. Qualquer usuário que possa ler o arquivo, pode fazer uma cópia (*), marcá-lo como executável e executá-lo, sem acesso para executar o arquivo original. A única situação em que faz sentido ter acesso de execução para alguns usuários, mas não para outros, é quando o executável possui privilégios elevados através do suid. Mas, se esse fosse o caso, você também não deveria ter outros usuários com acesso de gravação ao arquivo.
No mesmo sentido, user4 with
-wx
e user5 with--x
não fazem sentido para mim. O acesso somente de gravação pode fazer sentido se houver a possibilidade de permitir anexos apenas , mas o sistema de permissão não é tão refinado.(* a menos que eles não possam escrever em nenhum lugar)
No entanto, se removermos o requisito estranho do
x
bit, ficaremos com um arquivo em que usuário1 e usuário2 devem ter acesso de gravação e usuário3 deve ter acesso de leitura. Um escritor e vários leitores seriam fáceis com o modelo tradicional, mas neste caso seriam necessários truques para combinar as permissões de arquivo com as permissões do diretório que o contém. Felizmente, em muitos casos, um usuário com mais permissões é suficiente.Sem o requisito no bit de execução, isso parece um caso para usar ACL: s. Mas, com isso, esse exemplo em particular parece bastante complicado para mim.
fonte
-wx
é definitivamente estranho, no entanto.chattr +a
, por exemplo. E mesmo sem nada específico do sistema, você pode tornar o arquivo um FIFO.--x
e, por extensão-wx
, também faz sentido para mim para diretórios .