Eu descobri que as Listas de Controle de Acesso POSIX permitem que você, como administrador do sistema, proteja seus usuários da pior ignorância possível, substituindo a permissão regular do sistema de arquivos por outro grupo de usuários, sem muita chance de quebrar algo crucial .
Eles podem ser especialmente úteis se você, por exemplo (fi), precisou que os diretórios pessoais fossem acessíveis mundialmente porque o conteúdo da web precisa ser acessível para o apache ~/public_html/
. (Embora com as ACLs agora você possa fazer o inverso, remova o acesso para todos e use uma ACL efetiva específica para o usuário apache.)
Sim, um usuário experiente pode removê-lo / substituí-lo novamente, é incomum o suficiente para que isso seja improvável, e os usuários que podem normalmente não são os que convenientemente chmod -R 777 ~/
, certo?
Você precisa montar o sistema de arquivos com a acl
opção mount:
mount -o remount,acl /home
Em muitas distribuições, o padrão é criar grupos de usuários, cada usuário tem seu grupo principal e eu configurei todos os usuários em um grupo secundário com o nome sem imaginação de users
.
Usando ACLs, agora é trivial impedir que outros usuários acessem os diretórios pessoais:
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 de diretório efetivas para os membros do users
grupo 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 da ACL lá. E o getfacl
pode confirmar que:
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
O group:users:---
programa mostra que o grupo efetivamente não tem direito de acesso, apesar das permissões regulares para outrosother::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 montador automático montando diretórios pessoais sob demanda e um servidor dedicado ao acesso ao shell. Isso está longe de ser uma prova de idiotice, mas geralmente apenas alguns usuários serão conectados simultaneamente, o que significa que apenas os diretórios pessoais desses usuários são visíveis e acessíveis.
chmod files 0777
são estritamente necessárias, ou seja, abordar a causa raiz do problema, e não o sintoma de que, ao fazer isso, qualquer um pode ler os arquivos de qualquer outra pessoa. Muitas vezes, a recomendação de permissão para todos os acessos é simplesmente uma maneira barata de evitar chamadas de suporte ou falta de capacidade técnica para definir permissões corretamente. Em quase nenhum caso, tive que definir arquivos0777
ou conceder acesso root total aos aplicativos quando solicitado. A educação dos usuários e / ou fornecedores ajuda enormemente aqui.