é possível bloquear um usuário em uma árvore de diretórios no bash?

2

Eu quero bloquear um usuário em uma determinada árvore de diretórios. Isso é ele / ela pode cd mais fundo na árvore, mas não mais alto fora da árvore. Tudo o mais no ambiente deve ser exatamente o mesmo.

Editar: Como posso fazer isso sem chroot? Eu estou lançando um bash via objective-c pode criar um aplicativo de terminal. Eu preciso de usuário para poder acessar / usr / include e todos os outros lugares no sistema, eu só preciso deles para ser bloqueado em uma estrutura de diretórios. O chroot parece requerer privilégios de root para rodar. Executar o bash no modo restritivo é restritivo.

    
por Justin808 04.03.2012 / 02:14

3 respostas

2

O chroot está procurando o que você está procurando?

    
por 04.03.2012 / 02:18
1

O que você está tentando alcançar?

Se você deseja proteção dos usuários, é um problema de segurança e não consigo imaginar como reduzir sua capacidade de cd em qualquer diretório pode ser de algum benefício. Você pode tentar uma VM (bastante segura) ou chroot jail (não muito seguro).

Se você quiser protegê-los de si mesmo, basta substituir cd in .bashrc assim:

cd() {
    builtin cd "$@"
    if [[ ! "$(pwd)" =~ ^$HOME ]]
    then
        echo "Escape is futile"
        builtin cd - >/dev/null
    fi
}
    
por 05.03.2012 / 15:52
0

Sem a ajuda do kernel, você não poderá restringir totalmente o usuário dentro de um diretório. Mesmo usando strace / ktrace é limitado porque provavelmente será complexo para implementar corretamente e tornar o usuário um pesadelo.

Se você usa o FreeBSD, veja o sub-sistema da cadeia. É muito eficiente. Senão, você precisa chroot seus usuários, se eles estão registrando via

    
por 04.03.2012 / 07:30

Tags