.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
foo
SFTP 전용 그룹의 사용자에 추가
$ 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 서버 폴더로 변경됩니다 .