jailed SFTP에 대한 쓰기 권한을 변경하면 로그인이 거부됩니다


14

CHROOT를 사용하여 특정 디렉토리에 갇힌 SFTP 사용자를 설정하는 방법에 대한 많은 웹 사이트와 포럼을 조사했습니다. 다음 단계를 수행했지만 쓰기 권한이 작동하지 않는 것 같습니다.

설정

sshd_config

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


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

폴더 생성

mkdir /var/www/sites

사용자 및 그룹 생성

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

권한 및 소유권

chown root:root /var/www
chmod 755 /var/www/sites

이 설정으로 사용자 업 로더는 SFTP를 홈 디렉토리로 SFTP 할 수는 있지만 디렉토리에 쓸 수는 없습니다.

발생하는 일반적인 오류가 2 개 있습니다. 로그인 할 수 없거나 쓰기 권한이 없습니다.

로그인 오류

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

나는 이것을 알아 내려고 노력하고 있으며, 누군가 나를 올바른 방향으로 안내 할 수 있다면 크게 감사하겠습니다.

감사합니다.

답변:


16

해결책을 찾았습니다. 사용자가 투옥/var/www/sites . 그런 다음 다른 폴더를 만들었습니다 /var/www/sites/site1.

나는 사용한다:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

이렇게하면 홈 디렉토리가 로그인 할 수있는 올바른 권한을 가지고 다음 폴더에 쓸 수있게되었습니다.

사용자의 요구에 대한 액세스를 작성하는 경우 /var/www/sites, 다음 감옥 상기 사용자해야 /var/www가지고있는 root:root소유권과 그런 다음 줄 필요가 755의 권한 /var/www/sites루트의 소유권 (그룹)과 775의 권한을.


1

아마도 가장 큰 해결책은 다음과 같습니다.

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

사용자를 추가하십시오.

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

그런 다음 작성한 각 사용자에 대해 다음과 같이 ssh 태그를 추가하십시오 (예 : "일치 사용자"대신 "일치 그룹"지시문을 사용할 수도 있음)

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

따라서 루트 환경에서 필요한 모든 사용자를 관리 할 수 ​​있습니다.

파브리 치오


최종 코드 블록을 다시 : Matches는 쉼표로 구분 된 목록에서 여러 대상을 지원하므로 두 사용자 모두에 대해 단일 재정의 세트를 사용하여 제목을 통해이를 단순화하고 정리할 수 있습니다.Match User dev1,dev2
underscore_d

1
그렇다면 읽기 / 쓰기 액세스 권한이있는 폴더에 고정되도록 어떻게 설정합니까?
Kevin B Burns
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.