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

19

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

Por exemplo, 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 desabilitar os usuários para cd de seu diretório pessoal?

    
por OHLÁLÁ 12.03.2013 / 17:57

3 respostas

18

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 / .

    
por zwets 13.03.2013 / 10:55
5

Eu precisava fornecer acesso ao usuário sam on /var/xyz apenas e bloquear o conteúdo de outras pastas em /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/

Assim, o usuário pode ver os diretórios listados em /var/ , mas não pode ver o conteúdo em sub-diretórios, exceto /var/xyz .

    
por Sam 29.01.2015 / 21:21
1

Além de restringir o acesso a outros diretórios, particularmente os diretórios iniciais de outros usuários, eu também não queria que um usuário identificasse ll /home e os nomes dos outros usuários no sistema.

Para evitar isso, execute root chmod 701 /home . Isso torna o diretório /home "read / write / execute" na raiz, é claro, mas apenas "executa" a todos os demais. /home ainda está acessível para cd , mas os usuários não podem ler seu conteúdo - as pastas base dos outros usuários e, portanto, os nomes de usuário.

    
por Willman 01.09.2017 / 15:13