Como posso impedir que os usuários acessem qualquer coisa, exceto seu próprio diretório pessoal?

22

Como posso impedir que os usuários acessem qualquer coisa, exceto seu próprio diretório pessoal?

Por exemplo, eu tenho uma partição NTFS montada em /media/ntfs, portanto, se o usuário efetuar login através do ssh, ele poderá acessar essa partição. Como posso desativar os usuários para cdsair do diretório inicial?

OHLÁLÁ
fonte

Respostas:

22

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 cdoutro lugar, mas apenas dentro desse shell. Se o usuário iniciar viou 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 /bine /usr/bin, portanto, a menos que você copie todos os comandos necessários para os diretórios pessoais, os usuários precisarão acessar /bine /usr/bin. Mas isso é apenas o começo. Os aplicativos precisam de bibliotecas de /usr/libe /lib, que, por sua vez, precisam acessar os recursos do sistema que estão dentro /deve os arquivos de configuração em /etce /usr/share.

Esta foi apenas a parte somente leitura. Os aplicativos também desejam /tmpe frequentemente /varescrevem. 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 /.

zwets
fonte
2
Isso não faz sentido para mim; pode haver muitas razões pelas quais você deseja que um usuário tenha acesso apenas a 1 pasta. Um exemplo pode ser o acesso à transmissão de arquivos de um servidor para outro. Eu prefiro pensar que é um pouco tolo que qualquer usuário possa navegar no sistema completo.
Richard
No meu caso, estou configurando um usuário para permitir que os dispositivos invertam o ssh na máquina para gerenciamento remoto de dispositivos. Então, quero limitar essa conta de usuário o máximo possível, caso ela seja comprometida - só preciso que a conexão seja bem-sucedida. Eu não diria que é bobagem, depende apenas do que você está tentando realizar.
John
7

Eu precisava para fornecer acesso aos usuários samem /var/xyzapenas e bloquear listando conteúdo de outras pastas dentro/var/

Eu usei a seguinte sequência de comandos:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

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.

Sam
fonte
2
Bem-vindo ao askubuntu! Não vejo isso como uma resposta à pergunta feita sobre os diretórios pessoais.
Elder Geek
3
@ElderGeek O OP não pode apenas usar os mesmos comandos, mas para o diretório inicial?
Seth
@ Set Sim, mas isso seria claro para o usuário médio?
Elder Geek
3
@ Elder Sim, acredito que sim. Não é perfeito, mas ainda uma resposta
Seth
1

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 /homevisse os nomes dos outros usuários no sistema.

Para evitar isso, como root execute chmod 701 /home. Isso faz com que o /homepróprio diretório "leia / escreva / execute" seja raiz, é claro, mas apenas "execute" para todos os outros. /homeainda é acessível cd, 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.

Willman
fonte
Isso, embora não seja estritamente uma resposta à pergunta, ainda é muito interessante ... Em uma situação em que você opera um servidor remoto no qual os clientes podem se conectar, isso é ótimo. Eles ainda podem se movimentar conforme o esperado, mantendo a privacidade dos nomes de usuário de outros clientes.
Jack_Hu