내 VPS에 웹사이트가 있습니다. 해당 VPS에 Debian 7을 설치합니다. 내 http 문서는 /var/www/example.com
해당 서버에 Nginx를 설치한 디렉토리에 있으며 디렉토리는 user 및 group /var/www/example.com
소유입니다 . FileZilla와 같은 FTP 또는 SFTP 클라이언트를 통해 해당 디렉터리에 문서를 다운로드하거나 업로드할 수 있도록 루트가 아닌 사용자(이름을 지정하겠습니다)를 추가하고 싶습니다 .www-data
www-data
someone
나는 찾았다이것그리고이것이를 설명하는 가이드는 를 사용하여 수행할 수 있습니다 chroot
. 구성하려고 했지만 작동하지 않았습니다. 지금까지 사용한 몇 가지 명령은 다음과 같습니다.
useradd someone
groupadd sftpusers
usermod -G sftpusers someone
vi /etc/ssh/sshd_config
이 코드를 추가했습니다
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
그리고 파일 끝에 추가했습니다.
Match group sftpusers
ChrootDirectory /var/www/example.com
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
service ssh restart
그런데 FileZilla를 통해 연결할 때 오류가 발생했습니다. 이 오류는 user 및 group /var/www/example.com
소유 로 인해 발생한 것으로 의심됩니다 .www-data
www-data
/var/www/example.com
질문: 루트가 아닌 사용자가 FileZilla와 같은 FTP 또는 SFTP 클라이언트를 통해 디렉터리 에 문서를 다운로드하거나 업로드할 수 있도록 하는 방법입니다 . 루트가 아닌 이 사용자는 다음과 같은 상위 디렉토리에 액세스할 수 없어야 합니다./var/www/
답변1
아, 귀엽고 껴안고 싶은 모든 것을 사랑하신다면, world+dog가 접근할 수 있는 모든 것(예: 웹사이트 디렉토리, 익명 FTP 폴더)에 대해 777 권한을 설정하지 마세요.
최신 Linux 및 BSD에는 설정할 수 있는 사용자별 ACL이 있으며 완벽하게 작동합니다! 이를 사용하여 특정 사용자 및 특정 그룹에 대한 rwx를 추가할 수도 있습니다. 일단 이해하고 나면 정말 쉽게 할 수 있습니다!
TLDR; 다음과 같이 setfacl 명령을 사용하십시오. #setfacl -m someuser:rwx /public_html SHAZAM! 이제 일부 사용자는 public_html 디렉토리에서 읽기/쓰기/실행을 수행했습니다. setfacl의 매뉴얼 페이지나 최소한 HOWTO를 읽어서 해당 기능에 익숙해지도록 권장합니다. 파일 시스템 ACL에 대한 간단한 소개는 다음과 같습니다. https://www.redhat.com/sysadmin/linux-access-control-lists
world+dog에 rwx를 부여하지 않고 자신의 계정 액세스 권한을 가진 특정 개발자를 허용해야 하는 웹 서버에 적합합니다.
답변2
이것이 특정 사용자에 대해 SFTP를 설정하는 방법입니다.
1] 사용자 생성
adduser {USER}
2] /etc/ssh/sshd_config 편집
PasswordAuthentication yes
Subsystem sftp
internal-sftp -u 0007 -f AUTH -l VERBOSE
Match Group {USER}
ChrootDirectory {FOLDER}
ForceCommand internal-sftp -u 0007
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
3] 사용자에 대한 권한 설정
chmod -R 777 {FOLDER}
4] SSH를 다시 시작
service ssh restart
{USER}를 사용자로 바꾸고 {FOLDER}를 폴더로 바꾸면 작동합니다! ;)
답변3
좋아요, 시행착오 끝에 답은 여기에 있는 것 같습니다.
adduser someone
vi /etc/ssh/sshd_config
Froggiz의 구성을 사용하고 있으므로 코드는 다음과 같습니다.PasswordAuthentication yes Subsystem sftp internal-sftp -u 0007 -f AUTH -l VERBOSE Match Group someone ChrootDirectory /var/www ForceCommand internal-sftp -u 0007 AllowTcpForwarding no GatewayPorts no X11Forwarding no
service ssh restart
chmod -R 777 /var/www/example.com
. 이렇게 하면 누군가가 파일을 업로드/다운로드할 수 있고 webserver/php가 이 디렉토리의 파일을 처리할 수 있습니다.