Como alterar o diretório raiz de um usuário Linux?

Como alterar o diretório raiz de um usuário Linux?

Para um usuário em um host Linux, preciso tornar tudo inacessível, exceto seu diretório inicial.

Ouvi dizer que isso geralmente é feito alterando o diretório raiz do usuário (e configurando-o para o diretório inicial do usuário), mas não consegui encontrar uma maneira de fazer isso.

Pensei no chrootcomando, mas parece que ele apenas executa o comando especificado, considerando o diretório especificado como o diretório raiz. Então parece que chrootnão é o que eu preciso.

Então minha pergunta é: qual é o comando que altera o diretório raiz do usuário?

Responder1

Parece que você deseja alterar o diretório HOME, não o diretório raiz. Root sempre será / ou /root.

usermod -d /path/to/new/homedir/ username

Responder2

Para ter certeza de que "tudo inacessível" por trás deste diretório inicial, eu usaria o chroot, mas depois que você não puder fazer nada se não preparar o diretório chroot, você não terá nenhum binário ou biblioteca disponível.

A configuração do servidor FTP pode ser útil para você: http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap29sec296.html

É uma configuração completa de chroot definida para restringir os usuários de FTP a este diretório com chroot.

Responder3

Mantenho esta resposta e não me importo se obtive -1. Isso não é algo que o Unix possa fazer por você de maneira razoável. Você está pedindo algo que é praticamente impossível.

Mas existe uma maneira de conseguir algo parecido com o que você está pedindo, mais ou menos. Use uma máquina virtual. Configure uma instância da máquina virtual para o usuário em questão e conceda a ele apenas direitos de login nela, não no sistema operacional host.

Aqui está minha resposta original:

Basta usar permissões. É para isso que servem. De qualquer forma, um usuário geralmente não tem acesso para gravar em nada além de /tmp e seu diretório inicial. E eles precisam ter acesso de leitura a /bin/, /usr/bin, /usr/libe /libou não poderão fazer nada.

Se você realmente deseja algo mais rigoroso do que as permissões lhe dão, então considere configurar o selinux para poder restringi-las ainda mais.

Usar chrootsimplesmente não vai lhe dar o que você deseja. É realmente complicado de configurar e existem maneiras de contornar isso.

Responder4

Eu acho que se você adicionar

if grep "\\<${USER}\\>" /etc/jailbirds > /dev/null
then
    echo I am not a crook
else
    exec chroot $CWD
endif

no final, /etc/profilevocê pode obter o que está pedindo, mas pode ter alguns efeitos colaterais dos quais não estou ciente (assumir o controle do shell em execução /etc/profilepode causar problemas). Nesse caso, você precisaria criar um arquivo /etc/jailbirdsque fosse uma lista dos usuários para os quais você deseja fazer chroot. Você também precisará ter certeza de que este arquivo existe e decidir o que fazer no caso de erros ao acessá-lo para garantir que outros usuários (especialmente root) não sejam bloqueados pelo chroot

Além disso, fazer isso será difícil. O usuário não conseguirá acessar, /proco que fará com que muitos utilitários de shell (como ps, tope muitos outros) não funcionem. O usuário também não conseguirá acessar /dev/null, o que quebrará muitas coisas.

O usuário também não conseguirá acessar /dev/ttyqual irá quebrar lesse morequando usado com entrada padrão. Os aplicativos do usuário herdarão os descritores de arquivo aberto stdin, stdout e stderr de antes do chroot, mas menos abre /dev/tty para que possa obter pressionamentos de tecla do usuário para lidar com o redirecionamento de stdin de um canal.

Você também não poderá acessar nenhum programa ou biblioteca compartilhada ou muitos arquivos que residem em /etc (como /etc/protocols ) que muitos programas usam.

Todas essas são coisas que você pode contornar, mas acabará precisando trabalhar muito mais para tornar o ambiente dos usuários utilizável do que eu acho que você considerou.

Se você tentar minha sugestão, sugiro que tenha muito cuidado. Seria fácil errar e bagunçar muito as coisas. A propósito, eu não testei isso.

informação relacionada