500 OOPS: vsftpd: recusando-se a executar com raiz gravável dentro do chroot () Manter o usuário preso

18

Antes de fechar isso para a repetição, tenho pesquisado todas as soluções propostas para esse bug e até agora não consegui manter um usuário de FTP preso ao seu diretório de sites. Embora eu não seja um especialista em servidores Ubuntu, eu queria entrar em contato com a comunidade para ver se alguém encontrou uma solução que conserte esse bug e mantenha o usuário preso em seu diretório.

As configurações do meu vsftpd que alterei:

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

No final do arquivo, adicionei:

# 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:
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]

O usuário em questão mybloguser é preso ao diretório do website em /srv/www/myblog e esse usuário não faz parte do arquivo nano /etc/vsftpd.chroot_list . O diretório inicial do usuário também é /srv/www/myblog , que costumava funcionar no passado.

Eu tentei a solução allow_writeable_chroot=YES que não funcionou e, na verdade, quebrei o vsftpd completamente.

Eu tentei:

Ссылка

VSFTPd parou de funcionar após a atualização

Ссылка

Ссылка

Como podemos corrigir esse erro e manter o usuário preso em seu diretório pessoal?

    
por Chris Hough 09.01.2013 / 21:25

9 respostas

13

Após uma revisão adicional deste post, nos comentários foi publicado um pacote que corrigiu o meu problema. Você pode procurar por ele ou pelo meu nome ou pela documentação "Marcas": Ссылка . Aqui estão os meus detalhes de como eu consertei isso ainda mais.

OS USUÁRIOS SÃO ADMITIDOS AOS SEUS DIRETÓRIOS DOMÉSTICOS !!!

# ------------------------------------------------------------------------------
# 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]
    
por Chris Hough 13.01.2013 / 00:43
15

A verdadeira solução deste problema: a pasta base do usuário deve não ser gravável somente legível.

Portanto, se o site do usuário na pasta for cat/example.com/http/ , a pasta cat deverá ter chmod 555 e tudo ficará OK.

    
por nikita 06.07.2013 / 00:30
13

Para VSFTPD 3,

  1. Ir para: /etc/vsftpd.conf
  2. e adicione isto:

    allow_writeable_chroot=YES
    

E isso deve funcionar.

    
por Carlos Sura 10.12.2014 / 05:51
7

De acordo com a resposta anterior "A solução REAL deste problema: a pasta home do usuário não deve ser gravável apenas ler." O pensamento geral está certo, mas com uma percepção errada.

Abaixo, vou tentar dar um exemplo simples:

Para começar, precisamos construir a topologia do diretório do usuário:

 /home (ro)   
   |-someuser (rw,700)
         |-ftp_upload (ro,555)  - ch_rooting here, required ro by vsftpd :(
           |-temp (rw,755)
           |-in_box (rw,755)
           |-out_box (rw,755)

corte vsftpd.conf:

#enable chrooting
chroot_local_user=YES

#chroot all users except listened inside chroot_list
chroot_list_enable=YES

#exception list, ideally should be blank ;) 
chroot_list_file=/etc/vsftpd/chroot_list

#map ftp root dir to specifiec dir 
local_root=/home/someuser/ftp

Essa configuração funciona muito bem com a configuração de usuário único , para vários usuários deve ser usada adicionalmente na diretiva "user_config_dir".

** ATUALIZAÇÃO 20/09

------ **

Aqui está uma solução complicada, não é melhor ideia usar, mas .... Se você precisar de pasta de texto ftp gravável, basta inserir comandos de alteração de permissão nos comandos de pré-início e pós-início.

1) pré-início - altera as permissões para somente leitura, o que o servidor requer (:

2) inicie o servidor

3) post-start - altere a permissão para ler-escrever, ou qual você precisa.

    
por Reishin 23.08.2013 / 13:35
0

Eu também precisava adicionar o seguinte ao arquivo /etc/vsftpd.conf:

seccomp_sandbox=NO

E não há necessidade do repositório personalizado !!

E descomente a linha:

write_enable=YES
    
por MuffinMan 16.10.2013 / 19:01
0

A simples correção é fazer como a mensagem de erro sugere: tornar a raiz não gravável e, se precisar ativar os uploads, crie um subdiretório que tenha permissão de gravação. Nenhuma alteração de configuração é necessária.

    
por toastboy70 21.11.2013 / 12:43
0

Após 3 horas de googling eu tenho no Ubuntu 14.04.2 LTS VSFTPd 3 funcionando. A pasta inicial será visível / home / vimal depois de acessada com um cliente. Eu fiz o login com vimal com privilégios de root. Eu tenho pasta ftpShare criado, mas não tem muito significado.

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

alguns comandos úteis:

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

Acima significa que o daemon do ftp está funcionando

Eu tenho a seguinte configuração:

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

Uma vez que o FTP esteja funcionando, você pode ajustá-lo ainda mais para necessidades específicas, algumas das opções acima têm valores padrão, mas não me lembro exatamente.

Erros vistos no cliente FTP:

1. 500 OOPS: prctl PR_SET_SECCOMP falhou

Solução.

seccomp_sandbox=no    

[adicione-o na primeira linha vsftpd.conf, depois que a seção inicial comentada terminar]

2. 500 OOPS: vsftpd: recusando-se a executar com raiz gravável dentro de chroot ()

allow_writeable_chroot=YES

Eu adicionei na última linha.

    
por vimal krishna 03.12.2015 / 17:04
0

É muito bonito o que toastboy70 mencionou. Faça o diretório ftp-root chown'd para ftp.ftp e não-gravável (/etc/vsftpd.conf): anon_root = / srv / ftp

Em seguida, crie um diretório filho gravável: / srv / ftp / upload

    
por AsifHaswarey 17.05.2016 / 22:49
0

Eu resolvi o problema de o vsftpd se recusar a rodar com o root gravável dentro do chroot () ubuntu no meu servidor da seguinte forma:

Acabei de adicionar a linha abaixo no arquivo vsftpd.conf abaixo.

allow_writeable_chroot=YES
    
por Somnath Das 14.07.2016 / 07:54