답변:
이것은 간단합니다. 홈 디렉토리를 액세스 권한이 필요한 사용자로 설정하여 새 사용자를 작성하십시오 (이 명령은 sudo
루트 쉘 아래 또는 루트 쉘에서 실행되어야 함 ).
adduser --home /restricted/directory restricted_user
그러면 user restricted_user
, 디렉토리 가 생성되고 사용자 가 디렉토리 /restricted/directory
에 쓸 수 있도록 디렉토리에 대한 권한이 설정됩니다. 기본적으로 다른 디렉토리에 쓸 수는 없습니다.
디렉토리가 이미있는 경우 다음 adduser
과 같이 --no-create-home
옵션이 추가 된 명령을 실행 하고 수동으로 권한을 설정 (루트 권한 포함) 할 수 있습니다.
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
이 사용자가 세계 쓰기 가능 디렉토리에 액세스 할 수 없도록해야하는 경우 두 가지 변형이 있습니다.
1) 대화식 셸 세션을 사용자에게 제공하려면 ()에서 chroot jail을 만드는 데이 설명서 를 따르는 것을 고려 하십시오 /restricted/directory
.
그런 다음에 다음을 추가하십시오 sshd_config
.
Match user restricted_user
ChrootDirectory /restricted/directory
2) 연결 엔드 포인트와 호스트간에 파일을 복사해야하는 경우 모든 것이 훨씬 쉽습니다. 끝에 다음 줄을 추가하십시오 sshd_config
.
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
그런 다음 시작 부분에 Subsystem sftp /usr/lib/openssh/sftp-server
해시 ( #
) 기호를 넣어서 주석 처리 하십시오.
SSH 서버를 다시 시작한 후 (다시 시작할 때 대화식 세션을 종료하지 않으므로 잘못 구성한 경우에도 안전합니다. 또한 여전히 로그인 할 수 있는지 확인하기 전에 실행중인 세션을 닫지 마십시오) 모든 것이 작동해야합니다. 의도 한대로.
Subsystem sftp internal-sftp
두 번째 예에서 Match
블록 위에 줄을 작성해야합니다 . 그렇지 않으면 ssh가 오류를 인쇄하고 시작되지 않습니다.
주어진 디렉토리를 벗어나지 못하고 (예 : 상위 디렉토리 등) 제한된 / 선택된 명령 세트를 갖는 제한된 사용자를 작성하는 가장 쉬운 방법은 제한된 쉘을 사용하는 것입니다. 참조 :
먼저 rbash
(루트 사용자로 실행) 이라는 심볼릭 링크를 만듭니다 .
ln -s /bin/bash /bin/rbash
그런 다음이 제한된 쉘을 사용하여 일반 사용자를 만들고 홈 디렉토리를 원하는 폴더로 설정하십시오.
useradd -s /bin/rbash -d /home/restricted_folder username
Restricted Shell이 없어도이 사용자를 sudoer 목록 또는 특정 그룹에 명시 적으로 추가하지 않으면 기본적으로 제한됩니다.
제한된 셸을 사용하면 다음이 허용되지 않거나 수행되지 않습니다.
cd로 디렉토리 변경
SHELL, PATH, ENV 또는 BASH_ENV 값 설정 또는 설정 해제
/를 포함하는 명령 이름 지정
/를 포함하는 파일 이름을에 대한 인수로 지정합니다. 내장 명령
해시 내장 명령의 -p 옵션에 대한 인수로 슬래시가 포함 된 파일 이름 지정
시작시 쉘 환경에서 함수 정의 가져 오기
시작시 쉘 환경에서 SHELLOPTS 값 구문 분석
>,> |, <>,> &, &> 및 >> 경로 재 지정 연산자를 사용하여 출력 경로 재 지정
exec 내장 명령을 사용하여 쉘을 다른 명령으로 교체
enable 내장 명령에 -f 및 -d 옵션을 사용하여 내장 명령 추가 또는 삭제
enable builtin 명령을 사용하여 비활성화 된 쉘 내장 기능 사용
명령 내장 명령에 -p 옵션 지정
설정 + r 또는 설정 + o 제한으로 제한 모드를 끕니다.
이러한 제한은 시작 파일 후에 적용됩니다.
또한 / 선택적으로 사용하도록 제한 / 선택된 명령 세트로 사용자를 제한하기 위해 다음을 사용하여 해당 사용자에게 .bash_profile 읽기 전용을 작성할 수 있습니다.
PATH=$HOME/bin
~ / bin 폴더에 허용 된 모든 명령을 해당 사용자에게 symlink하십시오.
ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm
기타
HTH