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