특정 폴더에 대한 액세스 권한 만 가진 SSH 사용자를 만들려면


47

SSH를 설치했지만 원래 계정을 사용하여 Ubuntu에 로그인하면 권한이 너무 많습니다.

우분투의 특정 폴더에만 권한을 갖도록 사용자를 제한하고 싶습니다. 그러한 사용자를 어떻게 구성 할 수 있습니까?

답변:


49

이것은 간단합니다. 홈 디렉토리를 액세스 권한이 필요한 사용자로 설정하여 새 사용자를 작성하십시오 (이 명령은 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 서버를 다시 시작한 후 (다시 시작할 때 대화식 세션을 종료하지 않으므로 잘못 구성한 경우에도 안전합니다. 또한 여전히 로그인 할 수 있는지 확인하기 전에 실행중인 세션을 닫지 마십시오) 모든 것이 작동해야합니다. 의도 한대로.


1
나는 시도했지만 여전히 CD를 ..하고 상위 디렉토리를 탐색 할 수있는 것 같습니다. 나는 상위 디렉토리에있는 VI해서 a.txt를 사용하는 경우, 그것은 쇼 : Enter 키를 누르거나 명령을 계속하고, 나는 VI 종료 할 수 없습니다
어리석은

1
사용자에게 sshfs 액세스 권한 만 있어야하는 경우 옵션 # 2를 사용할 수 있습니까?
flickerfly

1
쓰기 권한이 없다는 것을 제외하고는 모든 것이 잘 작동합니다. 이 제한된 디렉토리에 대한 쓰기 권한을 설정하는 방법 chmod 775를 사용하면 사용자는 더 이상 로그인 할 수 없습니다.
My-Name-Is

3
Subsystem sftp internal-sftp두 번째 예에서 Match블록 위에 줄을 작성해야합니다 . 그렇지 않으면 ssh가 오류를 인쇄하고 시작되지 않습니다.
Tik0

1
스포일러 경고 : scp와 작동하지 않음
자전거

5

주어진 디렉토리를 벗어나지 못하고 (예 : 상위 디렉토리 등) 제한된 / 선택된 명령 세트를 갖는 제한된 사용자를 작성하는 가장 쉬운 방법은 제한된 쉘을 사용하는 것입니다. 참조 :

http://man.he.net/man1/rbash

먼저 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


/ root 디렉토리를 포함하여 파일 시스템에서 모든 파일을 찾을 수 있으며 이러한 파일을 읽을 수 있습니다. 사용자 폴더 외부에있는 것을 보거나 네트워크 패킷을 캡처하거나 / var / log 내용을 읽는 액세스를 추가로 제한하는 방법이 궁금합니다.
16851556
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.