특정 디렉터리의 SFTP 사용자에 대한 읽기 전용 권한

특정 디렉터리의 SFTP 사용자에 대한 읽기 전용 권한

읽기 전용 권한을 가진 특정 SFTP 사용자를 생성하고 싶습니다 /var/www/vhosts. 이에 대한 도움이 필요합니까?

답변1

Unix 시스템은 사용자가 "상위" 파일 및 디렉터리에 액세스할 수 없는 파일 시스템 계층의 디렉터리로 사용자를 재설정 chroot할 수 있는 명령을 제공합니다./

그러나 귀하의 경우에는 원격 셸 서비스로 구현된 가상 chroot를 제공하는 것이 적절합니다. sftp는 로컬 사용자를 파일 시스템의 특정 하위 집합으로 제한하도록 쉽게 구성할 수 있습니다.

따라서 귀하의 경우 chrootuser 사용자를 디렉토리 foo에 넣으려고 합니다./var/www/vhosts/

/var/www/vhosts/아래와 같이 사용자를 위한 chroot 디렉토리를 하위 디렉토리로 제한하여 설정할 수 있습니다 /etc/ssh/sshd_config.

사용자 생성 foo및 비밀번호 설정

sudo useradd foo
sudo passwd foo

SFTP 전용 그룹 만들기

$ sudo groupadd sftp_users 

fooSFTP 전용 그룹에 사용자가 추가됨

$ sudo usermod -G sftp_users foo 

읽기/쓰기 권한으로 인해 소유자 변경

sudo chown root.root /var/www/vhosts/

권한 추가

sudo chmod 755 /var/www/vhosts/

편집하다/etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

주석 처리하고 다음 줄을 추가합니다.

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

마지막에 추가

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /var/www/vhosts/
  ForceCommand internal-sftp

(참고: Match블록은 다음 위치에 있어야 합니다.파일 sshd_config. )

ssh서비스 다시 시작

sudo service ssh restart

이 구성을 사용하면 해당 폴더에 ssh를 통해 ubuntu파일을 가져올 수 있습니다. 할 수 put없거나delete

오른쪽 폴더에서 sftp를 편집하세요 /etc/passwd. 사용자 행을 foo다음과 같이 변경하십시오.

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

그러면 사용자 홈 폴더가 fooSFTP 서버 폴더로 변경됩니다.

관련 정보