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

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

.NET의 모든 폴더와 하위 폴더만 읽을 수 있는 권한을 갖는 특정 SFTP 사용자를 만들고 싶습니다 /var/www/vhosts. 이것에 대한 도움이 있습니까?

답변1

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

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

따라서 귀하의 경우 사용자 사용자를 디렉토리에 추가한다고 가정해 chroot보겠습니다 .foo/var/www/vhosts/

사용자가 chroot 디렉토리를 설정하여 /var/www/vhosts/에서처럼 하위 디렉토리에 제한할 수 있습니다 /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/:
..

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

관련 정보