Bash에서 특정 디렉토리 트리에 사용자를 잠글 수 있습니까?

Bash에서 특정 디렉토리 트리에 사용자를 잠글 수 있습니까?

사용자를 특정 디렉토리 트리에 잠그고 싶습니다. 즉, 그/그녀는 나무 속으로 더 깊이 들어갈 수 있지만 나무의 더 높은 부분을 떠날 수는 없습니다. 환경의 다른 모든 것은 정확히 동일해야 합니다.

편집: chroot 없이 이 작업을 어떻게 수행합니까? Objective-C를 통해 bash를 시작하고 터미널과 유사한 애플리케이션을 만들 수 있습니다. 사용자가 /usr/include 및 시스템의 다른 모든 위치에 액세스할 수 있어야 하며 디렉토리 구조에 잠겨 있으면 됩니다. chroot를 실행하려면 루트 권한이 필요한 것 같습니다. 제한 모드에서 bash를 실행하는 데에는 제한이 있습니다.

답변1

chroot무엇을 찾고 계신가요?

답변2

무엇을 달성하고 싶나요?

사용자를 보호하고 싶다면 다음과 같습니다.안전cd문제는 어떤 디렉토리로든 들어갈 수 있는 능력을 줄이는 것이 어떤 유익이 될지 상상할 수 없다는 것입니다 . 가상 머신(매우 안전함)이나 chroot Jail(매우 안전하지 않음)을 사용해 볼 수 있습니다.

스스로를 보호하려면 다음과 같이 간단히 다시 작성할 수 있습니다 cd..bashrc

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

답변3

커널의 도움 없이는 디렉토리 내의 사용자를 완전히 제한할 수 없습니다. strace/ktrace를 올바르게 구현하는 것은 복잡하고 사용자 경험을 악몽으로 만들 수 있으므로 사용이 제한됩니다.

FreeBSD를 사용한다면, 감옥 서브시스템을 살펴보세요. 실제로 매우 효율적입니다. 그렇지 않고 사용자가 다음을 통해 로그인하는 경우 chroot 사용자가 필요합니다.

관련 정보