www-data 그룹이 소유한 www 폴더에서 사용자가 SFTP를 수행하지 못하도록 제한합니다.

www-data 그룹이 소유한 www 폴더에서 사용자가 SFTP를 수행하지 못하도록 제한합니다.

/var/www/ 디렉터리(모든 하위 디렉터리 포함)에서만 읽기/쓰기 권한이 있는 새 사용자를 만들고 싶습니다. /var/www/는 www-data라는 조직에 속해 있습니다.

가장 좋은 방법은 SFTP를 사용하는 것입니다. 이미 루트로 SSH 액세스 권한이 있습니다. SFTP 액세스 제한에 대한 다른 많은 대답은 /home/ 디렉토리와 관련이 있으며 디렉토리의 소유권을 루트로 변경하도록 요구합니다. www 디렉토리에서도 이 작업을 수행하는 것이 좋은 생각인지 모르겠습니다.

답변1

사용자를 생성하고 홈 디렉터리를 /var/www/로 설정한 다음 www-data 그룹에 추가할 수 있습니다. 그가 생성할 파일이 www-data 그룹에 속하도록 하려면 www 디렉토리의 mod에 "s" 비트를 추가해야 합니다.

# useradd -m /var/www -g www-data
# chmod g+s /var/www

아니면 제가 질문을 잘못 이해한 걸까요? 어쩌면 이 사용자가 다른 디렉토리를 읽을 수 없도록 하시겠습니까? 이 경우 다음을 수행할 수 있습니다 chroot. http://how-to.linuxcareer.com/how-to-automatically-chroot-jail-selected-ssh-user-logins

SFTP를 사용하려는 경우:https://bensmann.no/restrict-sftp-users-to-home-folder/

비트:http://en.wikipedia.org/wiki/Chmod#Special_modes

http://en.wikipedia.org/wiki/Setuid

답변2

더 나은 접근 방식은 sshd 및 sftp 하위 시스템의 chroot 기능을 사용하는 것입니다.

주어진 DocumentRoot설정/var/www-sites/example.com/html

"chrootwebusers"라는 그룹을 만듭니다.

root@hostname:~# addgroup chrootwebusers

사용자를 추가하고 홈 디렉토리 및 기타 옵션을 설정하십시오.

useradd -g chrootwebusers -d /var/www-sites/example.com -s /bin/false theusername
mkdir -p /var/www-sites/example.com/html
chown theusername.www-data /var/www-sites/example.com
chmod -R 750 /var/www-sites/example.com
chmod g+s /var/www-sites/example.com
passwd theusername

theusername이렇게 하면 그룹 구성원으로 명명된 사용자가 chrootwebusers/var/www-sites/example.com이라는 홈 디렉터리와 그 아래의 모든 항목에 대한 읽기/쓰기 액세스 권한을 가진 그룹에 추가됩니다.

chmod g+s /var/www-sites/example.com저작물의 소유자는 www-data 그룹입니다. 디렉터리에서 이 비트를 사용하면 그 안에 생성된 모든 새 파일/디렉터리가 디렉터리와 동일한 그룹 소유권을 setgid유지하게 됩니다 . example.com이는 웹 서버를 실행 중인 사용자가 항상 파일(이것에 주의해주세요!)

다음으로 /etc/ssh/ssdh_config파일을 편집합니다. sftp 하위 시스템을 지정하는 행을 수정하고 주석 처리합니다.

#Subsystem sftp /usr/lib/openssh/sftp-server

내부적으로 sshd sftp 하위 시스템에 대한 참조를 추가합니다.

Subsystem sftp internal-sftp

마지막으로 파일 맨 아래에 추가하십시오.

Match Group chrootwebusers
    ChrootDirectory /var/www-sites
    ForceCommand internal-sftp -u 0027

그럼...이게 어떻게 작동하는 걸까요? 내부 sftp 하위 시스템은 sshd그룹 멤버십을 가진 사람들이 로그인할 때까지 기다립니다 chrootwebusers. 그런 일이 발생하면 당신이 보는 것이 /var/www-sites그들이 보는 것과 정확히 같도록 그들을 뿌리 뽑습니다 /. example.com 디렉터리를 볼 수 있고 해당 디렉터리로 변경할 수 있으며 디렉터리 내에서 파일을 읽고 쓸 수 있습니다. DocumentRoot그러나 /var/www-sites/example.com/html/example.com/html옵션 -u 0027은 생성된 모든 새 파일/디렉터리에 대해 umask를 설정합니다 . 640/750 권한을 가지며 setgid이전에 사용한 트릭을 사용하여 소유 사용자 theusername와 소유 그룹을 사용자 로 만듭니다 www-data(모든 파일/디렉터리 파일을 읽을 수 있는 웹 서버에 대한 정보를 기억하십시오).

관련 정보