사용자에게 엄격하게 제한된 셸 액세스 제공

사용자에게 엄격하게 제한된 셸 액세스 제공

저는 사용자 자신의 폴더에 대한 셸 액세스가 매우 제한된 Google Drive/Dropbox와 같은 내부 파일 공유 시스템을 개발 중입니다. 사용자는 명령을 사용하여 mv ssh ls cd자신의 폴더에 액세스하고 탐색할 수 있어야 하며, 일부 사용자는 자신의 프로그램을 실행하고 컴파일할 수 있어야 합니다 gcc(그러나 자신이 컴파일한 프로그램을 실행할 수는 없습니다). 유일한 문제는 사람들이 시스템 파일을 돌아다니거나 시스템 설정/변수를 수정하는 것을 원하지 않는다는 것입니다.

첫째, 컨테이너/BSD Jail을 사용하는 것이 해결책이 될 수 있다고 생각했지만 시스템의 사용자가 300명이 넘을 수 있다는 점을 고려하면 불필요한 복잡성과 오버헤드가 추가됩니다.

개방형 야생 인터넷에서는 어떤 솔루션을 사용할 수 있나요? 감사해요!

답변1

먼저, 이 공간에서 당신이 무엇을 하든 사용자는 당신이 하는 일을 피할 수 있는 창의적인 방법을 찾을 것이라고 말씀드리고 싶습니다.

cdBash는 사용자가 경로에 이미 존재하는 명령만 사용하고 사용하지 못하도록 제한하는 "제한된 셸" 개념을 제공합니다 . "허용된" 명령 집합에 대한 심볼릭 링크가 포함된 디렉터리를 만들고 해당 디렉터리를 가리키도록 사용자 경로를 구성할 수 있습니다.

https://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html

$ PATH=/tmp/ex rbash
$ ls
src
$ cd /
rbash: cd: restricted
$ export PATH=/usr/bin:$PATH
rbash: PATH: readonly variable
$

그러나 임의의 명령이 실행될 수 있는 경로에 명령을 넣으면 도움이 되지 않습니다.

$ rbash
$ cd /tmp
rbash: cd: restricted
$ vim
:!/bin/bash
$ cd /tmp
$

Bash 제한된 쉘에 대한 문서에서도 다음과 같이 말합니다.

최신 시스템은 감옥, 구역 또는 컨테이너와 같은 제한된 환경을 구현하는 보다 안전한 방법을 제공합니다.

관련 정보