루트가 아닌 사용자가 웹사이트 디렉토리에 업로드/다운로드할 수 있도록 활성화

루트가 아닌 사용자가 웹사이트 디렉토리에 업로드/다운로드할 수 있도록 활성화

내 VPS에 웹사이트가 있습니다. 해당 VPS에 Debian 7을 설치합니다. 내 http 문서는 /var/www/example.com해당 서버에 Nginx를 설치한 디렉토리에 있으며 디렉토리는 user 및 group /var/www/example.com소유입니다 . FileZilla와 같은 FTP 또는 SFTP 클라이언트를 통해 해당 디렉터리에 문서를 다운로드하거나 업로드할 수 있도록 루트가 아닌 사용자(이름을 지정하겠습니다)를 추가하고 싶습니다 .www-datawww-datasomeone

나는 찾았다이것그리고이것이를 설명하는 가이드는 를 사용하여 수행할 수 있습니다 chroot. 구성하려고 했지만 작동하지 않았습니다. 지금까지 사용한 몇 가지 명령은 다음과 같습니다.

  1. useradd someone
  2. groupadd sftpusers
  3. usermod -G sftpusers someone
  4. 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
  1. service ssh restart

그런데 FileZilla를 통해 연결할 때 오류가 발생했습니다. 이 오류는 user 및 group /var/www/example.com소유 로 인해 발생한 것으로 의심됩니다 .www-datawww-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

좋아요, 시행착오 끝에 답은 여기에 있는 것 같습니다.

  1. adduser someone
  2. 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
    
  3. service ssh restart

  4. chmod -R 777 /var/www/example.com. 이렇게 하면 누군가가 파일을 업로드/다운로드할 수 있고 webserver/php가 이 디렉토리의 파일을 처리할 수 있습니다.

관련 정보