“500 OOPS : vsftpd : chroot () 내부에 쓰기 가능한 루트로 실행을 거부 함”오류 메시지-사용자를 감옥에 유지


19

지금까지 FTP 사용자를 자신의 웹 사이트 디렉토리에 투옥 할 수 없었습니다. 이 버그를 수정하고 사용자를 자신의 디렉토리에 수감하는 솔루션이 있습니까?

내가 변경 한 내 vsFTPd 설정 :

listen_port=9000
Set: anonymous_enable=NO
Uncomment: local_enable=YES
Uncomment: write_enable=YES
Uncomment: local_umask=022
Set: connect_from_port_20=NO
Uncomment: idle_session_timeout=600
Uncomment: data_connection_timeout=120
Comment out: #ftpd_banner=Welcome to blah FTP service. [should be on line 104]
Added: banner_file=/etc/issue.net
Uncomment: chroot_local_user=YES
Uncomment: chroot_local_user=YES
Uncomment: chroot_list_enable=YES
Uncomment : chroot_list_file=/etc/vsftpd.chroot_list

파일의 끝에 나는 추가했다 :

# Show hidden files and the "." and ".." folders.
# Useful to not write over hidden files:
force_dot_files=YES

# Hide the info about the owner (user and group) of the files.
hide_ids=YES

# Connection limit for each IP address:
max_per_ip=10

# Maximum number of clients:
max_clients=5

# FTP Passive Settings
pasv_enable=YES
#If your listen_port is 9000 set this range to 7500 and 8500
pasv_min_port=[port range min]
pasv_max_port=[port range max]

문제의 사용자가 mybloguser아래의 웹 사이트 디렉토리에 수감되어 있으며이 /srv/www/myblog사용자는 nano /etc/vsftpd.chroot_list파일의 일부가 아닙니다 . 사용자의 홈 디렉토리도 /srv/www/myblog과거에 작동했던 적이 있습니다.

allow_writeable_chroot=YES작동하지 않는 솔루션을 시도했지만 실제로 vsFTPd가 완전히 중단되었습니다.

나는 시도했다 :

이 오류를 어떻게 해결하고 사용자를 홈 디렉토리에 탈옥시킬 수 있습니까?


어쨌든, 적어도 "가상"ftp 사용자의 경우, 설정 allow_writeable_chroot=YES을 추가하는 것만 으로 충분하고 실제로 "예상대로"FWIW에서 작동했습니다.
rogerdpack

답변:


18

VSFTPD 3의 경우

  1. 이동 : /etc/vsftpd.conf
  2. 이것을 추가하십시오 :

    allow_writeable_chroot=YES
    

    아직 존재하지 않는 경우 추가하십시오.

  3. vsftpd 서비스를 다시 시작하십시오.

    service vsftpd restart
    

그리고 작동해야합니다.


3
질문자는 실제로 그가 이미 시도했지만 작동하지 않았으므로 그의 질문에 대한 답변이 아닙니다.
Requist

2
이 선택의 보안 영향에 대한 정보는 어디에서 읽을 수 있습니까?
flickerfly

나를 위해 일했다 (이것은 또한 받아 들여진 답변의 의견에서 언급되었다)
Sverre

16

이 문제의 진정한 해결 방법 : 홈 폴더 사용자의이해야 쓸 수 없습니다 만 읽을.

따라서 사용자 사이트가 폴더에있는 경우 폴더에는 cat/example.com/http/폴더 cat가 있어야 chmod 555하며 모두 정상입니다.


12
말이되지 않습니다. 사용자 디렉토리는 쓸 수 없어야합니까 ???
Kevin Bowen

6
파일을 쓸 수 없다면 사용자는 얼마나 정확하게 파일 을 업로드 해야합니까 ?!
Cerin

업로드 권한이없는 익명 ftp에 적합합니다. 감사합니다.
palacsint

권리! 이제 괜찮아
user1406691

5
이것은 완벽하게 작동합니다! chmod 555를 사용하여 사용자를위한 홈을 만든 다음 그 안에 chmod 755 또는 필요한 것을 사용하여 웹 사이트 (또는 웹 사이트)를위한 홈을 만듭니다. 모든 것이 작동하고 사용자에게 쓰기 권한이 있습니다.
lucaferrario

13

이 게시물을 추가로 검토 한 후 의견에 내 문제를 해결 한 패키지가 게시되었습니다. 내 이름 또는 "마크"문서로 검색 할 수 있습니다. http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/ . 이 문제를 어떻게 해결했는지에 대한 자세한 내용은 다음과 같습니다.

사용자는 여전히 자신의 홈 디렉토리에 빠져 있습니다 !!!

# ------------------------------------------------------------------------------
# SETUP FTP USERS --------------------------------------------------------------
# ------------------------------------------------------------------------------

# create the ftp users and lock them to the website directories
useradd -d /srv/www/[website/appname] -m [ftp user name]

# set the ftp account passwords
passwd [ftp user name]

# add the ftp users to the www-data user/group
adduser [ftp user name] www-data

# BUG FIX: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
sudo add-apt-repository ppa:thefrontiergroup/vsftpd
sudo apt-get update
sudo apt-get install vsftpd

# Edit the vsftpd.conf and append this setting to the end of the file to keep users' jailed!
nano /etc/vsftpd.conf

# add all of the text between the starting [[ and ending ]]
# [[

# Keep non-chroot listed users jailed
allow_writeable_chroot=YES

# ]]

# restart the service for changes to take effect
sudo service vsftpd restart

#test ftp via secondary terminal window:
ftp [ftp user name]@[server ipaddress] [ftp port]

11
참고 : Chris의 솔루션은 타사 패키지 서버를 리포지토리 목록에 추가합니다! 시스템에 외국 소프트웨어 패키지를 설치하는 것을 맹목적으로 받아 들일 때 안전한 chroot 된 FTP 서버를 설치해야하는 이유 . (Chris : 나는 당신이 이점을 취할 것이라고 생각하지 않지만이 솔루션을 사용하는 것은 IMSA가 나쁜 시스템 관리입니다)
reto

1
이 딜레마 @reto를 해결하는 더 나은 접근 방법이 있습니까? 해결해야 할 작은 혼란이었다. 도와 주셔서 감사합니다.
Chris Hough

배포판에서 업데이트 된 패키지가 있으면 사용하려고합니다. 대부분의 배포판은 이전 릴리스에 대한 백 포트를 제공합니다. 그것이 가능하지 않으면 원래 개발자로부터 소스를 가져 와서 직접 빌드하십시오. 떠 다니는 패치가있는 경우 적용 할 수 있습니다 (일반적으로 작고 수동으로 확인할 수 있음).
reto

이 스레드의 뷰는 12'000이며 5 %가 솔루션을 사용하고 리포지를 추가했다고 가정합니다. 백도어가 통합 된 새로운 버전의 핵심 패키지를 쉽게 추가 할 수 있습니다. 일주일 안에 600 개의 시스템에 액세스 할 수있었습니다. 나는 당신이 그렇게 할 것이라고 생각하지 않지만 타사 저장소를 추가하는 것은 그다지 안전하지 않습니다.
reto

1
레포에서 업데이트 할 필요가 없었습니다. 나를 위해 "allow_writeable_chroot = YES"라인을 추가하면 버그가 수정되었습니다
abumalick

7

이전 답변에 따르면 "이 문제의 실제 해결책 : 사용자의 홈 폴더는 읽기만 가능해야합니다." 일반적인 생각은 옳지 만 잘못된 실현입니다.

아래에서 간단한 예를 들어 보겠습니다.

시작하려면 사용자 디렉토리의 토폴로지를 빌드해야합니다.

 / 홈 (ro)
   | -someuser (rw, 700)
         | -ftp_upload (ro, 555)-여기서 ch_rooting은 vsftpd에 의해 읽기 전용이어야합니다. (
           | -temp (rw, 755)
           | -in_box (rw, 755)
           | -out_box (rw, 755)

vsftpd.conf 컷 :

# chrooting 활성화
chroot_local_user = YES

# chroot chroot_list 안에서 들어 본 것을 제외한 모든 사용자
chroot_list_enable = YES

# 예외 목록. 이상적으로는 비어 있어야합니다.)
chroot_list_file = / etc / vsftpd / chroot_list

# ftp 루트 디렉토리를 특정 디렉토리에 매핑
local_root = / home / someuser / ftp

이 구성은 단일 사용자 구성에 적합합니다. 다중 사용자의 경우 "user_config_dir"지시문을 추가로 사용해야합니다.

** 업데이트 20/09

------ **

여기에 까다로운 해결 방법이 있지만 사용하기 가장 좋은 아이디어는 아니지만 .... 쓰기 가능한 ftp 루트 폴더가 필요한 경우 시작 전 및 시작 후 명령에 권한 변경 명령을 삽입하십시오.

  1. 사전 시작-서버가 필요로하는 읽기 전용으로 권한을 변경하십시오 (:

  2. 서버 시작

  3. 시작 후-읽기 / 쓰기 또는 필요한 권한 변경.


많은 변형을 시도했지만 WP 서버에서 작동하지 못했습니다. 이것이 WP 구성에서 작동합니까?
Chris Hough

섹션을 업데이트하십시오, mauby이 변형이 도움이 될 수 있습니다. 그렇게하는 것이 완전히 안전하지는 않지만 다른 가능성이 없다면 ...
Reishin

1

toastboy70이 언급 한 것과 거의 같습니다. ftp-root 디렉토리를 ftp.ftp로 chown'd하고 쓰기 불가능 (/etc/vsftpd.conf)으로 만드십시오 : anon_root = / srv / ftp

그런 다음 쓰기 가능한 자식 디렉토리를 만드십시오 : / srv / ftp / upload


0

/etc/vsftpd.conf 파일에도 다음을 추가해야했습니다.

seccomp_sandbox=NO

그리고 커스텀 레포가 필요 없습니다 !!

그리고 주석을 주석 해제하십시오.

write_enable=YES

0

간단한 수정 방법은 오류 메시지에서 알 수 있듯이 루트를 쓰기 불가능하게하고 업로드를 활성화해야하는 경우 쓰기 권한이있는 하위 디렉토리를 만듭니다. 구성 변경이 필요하지 않습니다.


0

3 시간의 인터넷 검색 후 나는 Ubuntu 14.04.2 LTS VSFTPd 3 작업을 시작했습니다. 홈 폴더는 클라이언트로 액세스하면 / home / vimal로 표시됩니다. 루트 권한으로 vimal로 로그인했습니다. ftpShare 폴더를 만들었지 만 그다지 의미가 없습니다.

sudo chown vimal:vimal /home/vimal/ftpShare/

몇 가지 유용한 명령 :

sudo nano /etc/vsftpd.conf
sudo service vsftpd restart
sudo apt-get purge vsftpd
netstat -a | grep ftp
tcp        0        0        *:ftp         *:*        LISTEN
ftp://12.345.23.xxx/  for browser login

위는 ftp 데몬이 작동 중임을 의미합니다.

다음과 같은 구성이 있습니다.

seccomp_sandbox=no
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=NO
secure_chroot_dir=/var/run/vsftpd/empty
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES

FTP가 작동하면 특정 요구에 맞게 추가로 조정할 수 있습니다. 위의 일부에는 기본값이 있지만 정확하게 기억하지 못합니다.

FTP 클라이언트에서 보이는 오류 :

1. 500 OOPS : prctl PR_SET_SECCOMP 실패

해결책.

seccomp_sandbox=no    

[최초 주석 처리 된 섹션이 끝난 후 첫 번째 줄 vsftpd.conf에 추가]

500 OOPS : vsftpd : chroot () 안에서 쓰기 가능한 루트로 실행을 거부

allow_writeable_chroot=YES

마지막 줄에 추가했습니다.


0

우분투 서버의 chroot () 내에서 쓰기 가능한 루트로 실행을 거부하는 vsFTPd의 문제를 다음과 같이 해결했습니다.

방금 vsftpd.conf파일에 아래 줄을 추가했습니다 .

allow_writeable_chroot=YES
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.