Reavalie seu requisito primeiro. Qual é o problema que você está tentando resolver? Por que você quer impedir que os usuários deixem seu diretório pessoal? Não é que você não queira que eles vasculhem específicos outros diretórios - como os diretórios pessoais de outros usuários?
É muito difícil impedir que os usuários saiam do diretório inicial. É realmente um pouco bobo também (a explicação segue). É muito mais simples evitar que os usuários digitem diretórios nos quais você não deseja que eles entrem.
Primeiro, sim, você pode fornecer aos usuários um chamado shell restrito , consulte man rbash
. Isso irá impedi-los de cd
-ing em outro lugar, mas apenas dentro desse shell. Se o usuário iniciar vi
ou nano
(ou qualquer outro programa capaz de abrir um arquivo), ele poderá abrir arquivos em qualquer parte do sistema. De facto, um invólucro restrito não impede, e. cat /etc/passwd
.
O próximo passo é uma cadeia de raiz. Mais informações sobre o wiki da comunidade e em esta questão . Embora uma cadeia raiz bloqueie os usuários dentro de um jardim murado, dentro do qual eles não têm acesso a nada além dos arquivos e comandos que você intencionalmente coloca, as cadeias raiz são destinadas a isolar software não confiável em vez de usuários. Em particular, eles são para software que precisa ser executado com privilégios elevados - daí uma cadeia .
Os usuários, por outro lado, são confiáveis : eles tiveram que autenticar e executar sem privilégios elevados. Portanto, as permissões de arquivo são suficientes para impedi-las de alterar arquivos que não possuem e de ver coisas que não devem ver. Para impedir que os usuários leiam o conteúdo de um arquivo, remova sua legibilidade do mundo com chmod o-r FILE
. Para manter os usuários fora de um diretório, torne-o inacessível no mundo com chmod o-rwx DIR
.
No entanto, a legibilidade do mundo é o padrão, por uma boa razão: os usuários precisam da maioria das coisas que estão no sistema de arquivos. Não bloqueie os usuários em suas casas apenas porque existem segredos externos.
Por que bloquear usuários em seu diretório pessoal é um pouco bobo
Para fazer qualquer coisa útil, os usuários precisam acessar comandos e aplicativos. Eles estão em diretórios como /bin
e /usr/bin
, portanto, a menos que você copie todos os comandos de que eles precisam para seus diretórios home, os usuários precisarão de acesso a /bin
e /usr/bin
. Mas isso é apenas o começo. Os aplicativos precisam de bibliotecas de /usr/lib
e /lib
, que, por sua vez, precisam de acesso aos recursos do sistema, que estão em /dev
, e aos arquivos de configuração em /etc
e /usr/share
.
Esta foi apenas a parte somente leitura. As aplicações também irão querer /tmp
e frequentemente /var
para escrever. Então, se você quiser restringir um usuário dentro de seu diretório home, você terá que copiar muito para ele. Na verdade, praticamente todo um sistema de arquivos de base - que você já tem, localizado em /
.