Reavaliar sua exigência primeiro. Qual é o problema que você está tentando resolver? Por que você deseja impedir que os usuários deixem o diretório inicial? Não é melhor que você não queira que eles vasculhem outros diretórios específicos - como os diretórios pessoais de outros usuários?
É muito difícil impedir que os usuários saiam do diretório inicial. Na verdade, é um pouco bobo também (a explicação segue). É muito mais simples impedir que os usuários insiram diretórios nos quais você não deseja que eles entrem.
Primeiro, sim, você pode oferecer aos usuários um chamado shell restrito , veja man rbash
. Isso os impedirá de aparecer em cd
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 novamente os arquivos em qualquer lugar do sistema. Por uma questão de fato, um shell restrito não impede, por exemplo cat /etc/passwd
.
O próximo passo é uma prisão raiz. Mais informações no wiki da comunidade e nesta pergunta . Embora uma cadeia raiz prenda os usuários dentro de um jardim murado, no qual eles têm acesso apenas aos arquivos e comandos que você intencionalmente coloca, as cadeias raiz realmente são destinadas a isolar software não confiável em vez de usuários. Em particular, eles são para softwares que precisam ser executados com privilégios elevados - portanto, uma prisão raiz .
Os usuários, por outro lado, são confiáveis : eles tiveram que se autenticar e executar sem privilégios elevados. Portanto, as permissões de arquivo são suficientes para impedi-los de alterar os 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 mundial com chmod o-r FILE
. Para manter os usuários fora de um diretório, torne-o inacessível ao mundo chmod o-rwx DIR
.
A legibilidade mundial é o padrão, por uma boa razão: os usuários realmente precisam da maioria das coisas que estão no sistema de arquivos. Não tranque os usuários em suas casas apenas porque existem segredos lá fora.
Por que bloquear usuários em seu diretório inicial é um pouco tolo
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 necessários para os diretórios pessoais, os usuários precisarão acessar /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 acessar os recursos do sistema que estão dentro /dev
e os arquivos de configuração em /etc
e /usr/share
.
Esta foi apenas a parte somente leitura. Os aplicativos também desejam /tmp
e frequentemente /var
escrevem. Portanto, se você deseja restringir um usuário dentro do diretório inicial, precisará copiar muito nele. De fato, praticamente todo um sistema de arquivos base - no qual você já possui, está localizado /
.
Eu precisava para fornecer acesso aos usuários
sam
em/var/xyz
apenas e bloquear listando conteúdo de outras pastas dentro/var/
Eu usei a seguinte sequência de comandos:
Portanto, o usuário pode ver os diretórios listados em,
/var/
mas não pode ver o conteúdo nos subdiretórios, exceto/var/xyz
.fonte
Além de restringir o acesso a outros diretórios, principalmente os diretórios pessoais de outros usuários, eu também não queria que um usuário
ll /home
visse os nomes dos outros usuários no sistema.Para evitar isso, como root execute
chmod 701 /home
. Isso faz com que o/home
próprio diretório "leia / escreva / execute" seja raiz, é claro, mas apenas "execute" para todos os outros./home
ainda é acessívelcd
, mas os usuários não podem ler seu conteúdo - as pastas pessoais dos outros usuários e, portanto, os nomes de usuário.fonte