![특정 디렉터리의 SFTP 사용자에 대한 읽기 전용 권한](https://linux55.com/image/89112/%ED%8A%B9%EC%A0%95%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20SFTP%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%9D%BD%EA%B8%B0%20%EC%A0%84%EC%9A%A9%20%EA%B6%8C%ED%95%9C.png)
읽기 전용 권한을 가진 특정 SFTP 사용자를 생성하고 싶습니다 /var/www/vhosts
. 이에 대한 도움이 필요합니까?
답변1
Unix 시스템은 사용자가 "상위" 파일 및 디렉터리에 액세스할 수 없는 파일 시스템 계층의 디렉터리로 사용자를 재설정 chroot
할 수 있는 명령을 제공합니다./
그러나 귀하의 경우에는 원격 셸 서비스로 구현된 가상 chroot를 제공하는 것이 적절합니다. sftp는 로컬 사용자를 파일 시스템의 특정 하위 집합으로 제한하도록 쉽게 구성할 수 있습니다.
따라서 귀하의 경우 chroot
user 사용자를 디렉토리 foo
에 넣으려고 합니다./var/www/vhosts/
/var/www/vhosts/
아래와 같이 사용자를 위한 chroot 디렉토리를 하위 디렉토리로 제한하여 설정할 수 있습니다 /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 서버 폴더로 변경됩니다.