Descobri que as Listas de Controle de Acesso POSIX permitem que você, como administrador do sistema, proteja seus usuários do pior de sua própria ignorância, sobrepondo-se à permissão do sistema de arquivos regular de grupo de usuários, sem muita chance de quebra qualquer coisa crucial.
Eles podem ser especialmente úteis se, por exemplo, (f.i.) precisar de diretórios de usuário para serem acessíveis, porque o webcontent precisa estar acessível para o apache em ~/public_html/
. (Embora com o ACL, agora você pode fazer o inverso, remover o acesso de todos e usar uma ACL efetiva específica para o usuário do apache).
Sim, um usuário experiente pode removê-los / substituí-los novamente, é incomum o suficiente para ser improvável e os usuários que normalmente não são os únicos que podem chmod -R 777 ~/
, certo?
Você precisa montar o sistema de arquivos com a opção acl
mount:
mount -o remount,acl /home
Em muitas distribuições, o padrão é criar grupos de usuários, cada usuário tem seu grupo primário e eu defini todos os usuários em um grupo secundário com o nome sem imaginação de users
.
Usando o ACL, agora é trivial impedir que outros usuários acessem os diretórios base:
Antes:
chmod 0777 /home/user*
ls -l /home/user*
drwxrwxrwx. 2 user1 user1 4096 Jul 11 15:40 user1
drwxrwxrwx. 2 user2 user2 4096 Jul 11 15:24 user2
Agora defina as permissões do diretório efetivo para membros do grupo users
como 0
sem leitura, gravação ou acesso:
setfacl setfacl -m g:users:0 /home/user*
ls -l
drwxrwxrwx+ 2 user1 user1 4096 Jul 11 15:40 user1
drwxrwxrwx+ 2 user2 user2 4096 Jul 11 15:24 user2
O sinal +
indica a presença de configurações de ACL nesse local. E o getfacl
pode confirmar isso:
getfacl /home/user1
getfacl: Removing leading '/' from absolute path names
# file: home/user1
# owner: user1
# group: user1
user::rwx
group::rwx
group:users:---
mask::rwx
other::rwx
Os group:users:---
mostram que o grupo não tem acesso direito, apesar das permissões regulares para os outros serem other::rwx
E testando como usuário1:
[user1@access ~]$ ls -la /home/user2
ls: cannot open directory /home/user2: Permission denied
Uma segunda solução comum em sistemas compartilhados é ter o automounter montado em diretórios home sob demanda e um servidor dedicado ao acesso ao shell. Isso está longe de ser a prova de erros, mas normalmente apenas um punhado de usuários será logado ao mesmo tempo, significando que apenas os diretórios iniciais desses usuários estão visíveis e acessíveis.