vsftpd를 사용하여 / var / www로만 FTP 액세스를 제한하십시오.


41

Linux (rasbian)에서 ftp 서버로 vsftpd를 실행하고 있으며 루트 사용자로 컴퓨터에 로그인합니다.

여전히 / var / www 만 사용하도록 잠겨 싶습니다. vsftpd conf를 어떻게 구성 할 수 있습니까?


1
chroot 옵션을 확인하고 vsftpd.confhomedir이로 설정된 별도의 사용자를 작성하십시오 /var/www.
jirib

답변:


65

방법 1 : 사용자의 홈 디렉토리 변경

다음 줄이 있는지 확인하십시오

chroot_local_user=YES

사용자 HOME Directory를로 설정하십시오. /var/www/기존 사용자를 변경하려면 다음을 사용할 수 있습니다.

usermod --home /var/www/ username

그런 다음 필요한 권한을 설정하십시오. /var/www/

방법 2 : 사용 user_sub_token

사용자의 홈 디렉토리를 변경하지 않으려면 다음을 사용할 수 있습니다.

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

소개 user_sub_token:

템플릿을 기반으로 각 가상 사용자에 대한 홈 디렉토리를 자동으로 생성합니다. 예를 들어 guest_username을 통해 지정된 실제 사용자의 홈 디렉토리가 / ftphome / $ USER이고 user_sub_token이 $ USER로 설정되어 있으면 가상 사용자 테스트가 로그인 될 때 ​​(일반적으로 chroot () 'ed) / ftphome / test 디렉토리 local_root에 user_sub_token이 포함 된 경우에도이 옵션이 적용됩니다.

디렉토리를 작성하고 권한을 설정하십시오.

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

다시 시작 vsftpd하고 설정을 테스트하십시오.

샘플 성공 출력 :

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.

2
$USERfor 뒤에 접미사를 사용할 수 있습니다 ( local_root예 : /home/$USER/ftp사용자를 ftp홈 디렉토리의 하위 디렉토리로 chroot합니다 ).
Benoit Duffez

사용자 로그인으로 쓸 수있는 폴더에 chroot하는 것과 관련하여 vsftp FAQ에 유의하십시오. 사용자의 local_root실제 홈 디렉토리에 넣을 경우에 매우 가능성이 높습니다 .
토마스 어반

"chroot_local_user = YES"가 존재하는지 어디에서 확인합니까?
1

4

당신은 이것을 할 수 있습니다 :

usermod --home /var/www/ username

5
1-2 줄 답변은 종종 품질이 낮은 것으로 간주됩니다. 권장 사항이 실제로 문제를 해결할 수있는 기능을 제안하는 링크 또는 문서와 함께 권장 사항에 대한 설명으로 게시물을 확장 해보십시오.
HalosGhost

2

위의 Rahul Patil의 제안을 사용했습니다.

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

그러나 왜 한 명의 사용자로만 로그인 할 수 있었는지 이해할 수 없었습니다. 그런 다음 /home/$USER/www-data쓰기 권한 이있는 루트 디렉토리 (이 경우 )에 chroot 할 수 없다는 것을 알았습니다 . 따라서 다음을 사용하여 쓰기 권한을 제거합니다.

# chmod a-w /home/$USER/www-data

참고 :$USER 사용자와 함께 변경 하십시오.


1

chroot옵션을 확인하고 vsftpd.confhomedir이로 설정된 별도의 사용자를 작성하십시오 /var/www.


나는 그것을 잘 알고 있으며, 별도의 사용자를 만들 것입니다. 나는 아마도 내 질문을 다시 디자인해야한다. 그러면 사용자 가 경로
Badr Hari

OpenSSH에서 sftp를 사용하십시오. internal-sftp에 대해서는 man sshd_config를 참조한 다음 'ForceCommand'및 'ChrootDirectory'를 참조하십시오. 최신 OpenSSH에는 sftp-server가 특정 경로로 전환하는 옵션도 추가되었으므로 chrootDirectory와 함께 chroot-> / path-> destination-> 'onlyhere'= / chroot / onlyhere
jirib
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.