web-dev-qa-db-ja.com

エラーメッセージ「500 OOPS:vsftpd:chroot()内の書き込み可能なルートでの実行を拒否」-ユーザーを投獄したままにする

これまでのところ、私はFTPユーザーをWebサイトのディレクトリに投獄したままにすることができませんでした。このバグを修正し、ユーザーをディレクトリに投獄したままにする解決策はありますか?

変更した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の下のWebサイトディレクトリに投獄され、このユーザーはnano /etc/vsftpd.chroot_listファイルの一部ではありません。ユーザーのホームディレクトリも/srv/www/myblogであり、以前はこれまで働いていました。

うまくいかなかったallow_writeable_chroot=YESソリューションを試しましたが、実際にはvsFTPdを完全に壊しました。

私が試してみました:

このエラーを修正し、ユーザーをホームディレクトリに投獄したままにする方法を教えてください。

19
Chris Hough

この投稿をさらに確認した後、コメントに私の問題を修正したパッケージが投稿されました。あなたは私の名前か「Marks」ドキュメンテーションのいずれかでそれを検索できます: 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]
13
Chris Hough

VSFTPD 3の場合

  1. /etc/vsftpd.confに移動します
  2. これを追加します:

    allow_writeable_chroot=YES
    

    まだ存在しない場合は追加します。

  3. Vsftpdサービスを再起動します。

    service vsftpd restart
    

そして、それは動作するはずです。

18
Carlos Sura

この問題の実際の解決策:ユーザーのホームフォルダー書き込み不可読み取り専用である必要があります。

したがって、ユーザーサイトがcat/example.com/http/フォルダーにある場合、フォルダーcatにはchmod 555が必要で、すべて問題ありません。

16
nikita

前の回答によると、「この問題の実際の解決策:ユーザーのホームフォルダーは、読み取り専用で書き込み可能にすべきではありません。」一般的な考え方は正しいですが、間違った認識をしています。

以下に、簡単な例を示します。

最初に、ユーザーディレクトリのトポロジを構築する必要があります。

/home(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_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. 開始後-読み取り/書き込み権限または必要な権限を変更します。

7
Reishin

それはtoastboy70が言ったこととほぼ同じです。 ftp-rootディレクトリをftp.ftpにchown'dし、書き込み不可(/etc/vsftpd.conf)にする:anon_root =/srv/ftp

次に、書き込み可能な子ディレクトリを作成します:/ srv/ftp/upload

1
AsifHaswarey

3時間のグーグル検索の後、Ubuntu 14.04.2 LTS VSFTPd 3が動作するようになりました。ホームフォルダーは、クライアントでアクセスすると/ home/vimalに表示されます。 root権限で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 failed

解決。

seccomp_sandbox=no    

[最初のコメントセクションが終了した後、vsftpd.confの最初の行に追加]

2。500 OOPS:vsftpd:chroot()内の書き込み可能なルートでの実行を拒否

allow_writeable_chroot=YES

最後の行に追加しました。

0
vimal krishna

単純な修正は、エラーメッセージが示すように行うことです。ルートを書き込み不可にし、アップロードを有効にする必要がある場合は、書き込み権限を持つサブディレクトリを作成します。構成の変更は必要ありません。

0
toastboy70

次のように、vsFTPdがUbuntuサーバーのchroot()内の書き込み可能なルートで実行することを拒否する問題を解決しました。

vsftpd.confファイルに次の行を追加しました。

allow_writeable_chroot=YES
0
Somnath Das

/etc/vsftpd.confファイルにも次を追加する必要がありました。

seccomp_sandbox=NO

また、カスタムリポジトリも不要です!!

そして、行のコメントを外します:

write_enable=YES
0
MuffinMan