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


19

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

allow_writeable_chroot=YESうまくいかない解決策を試してみましたが、実際にvsFTPdを完全に壊しました。

私が試してみました:

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


どういうわけか、私にとっては、少なくとも「仮想」ftpユーザーの場合、設定allow_writeable_chroot=YESを追加するだけで十分であり、実際に「期待どおり」に
動作しました...-rogerdpack

回答:


18

VSFTPD 3の場合

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

    allow_writeable_chroot=YES
    

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

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

    service vsftpd restart
    

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


3
質問者は実際に彼はすでにこれを試したがうまくいかなかったと述べているので、これは彼の質問に対する答えではない。
レキスト14

2
この選択のセキュリティへの影響についてどこで読むことができますか?
フリッカーフライ

私のために働いた(これは受け入れられた答えのコメントでも言及された)
スヴェレ

16

この問題の実際の解決策:ユーザーのホームフォルダーは、読み取り専用のみで書き込み可能ではありません

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


12
それは意味がありません。ユーザーのディレクトリは書き込み可能にしないでください???
ケビンボウエン

6
書き込みできない場合、ユーザーはどのくらい正確にファイルをアップロードすることになっていますか?!
セリン

アップロード権限のない匿名ftpでうまく機能します、ありがとう!
palacsint 14年

右!今では大丈夫です
user1406691

5
これは完璧に機能します!chmod 555を使用してユーザーのホームを作成し、その中にchmod 755または必要なWebサイトのホームを作成します。すべてが機能し、ユーザーは書き込み権限を持ちます。
lucaferrario 14年

13

この投稿をさらに確認した後、コメントに私の問題を修正したパッケージが投稿されました。私の名前または「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]

11
注: Chrisのソリューションは、サードパーティのパッケージサーバーをリポジトリリストに追加します!システムにインストールする外部ソフトウェアパッケージを盲目的に受け入れたときに、安全なchrooted FTPサーバーをインストールする理由。(クリス:あなたが利用することはないと思いますが、このソリューションを使用すると私見は悪いシステム管理です)
reto

1
このジレンマ@retoを解決するためのより良いアプローチがありますか?解決するのは小さな混乱でした。ご協力ありがとうございました。
クリス・ハフ

ディストリビューションから更新されたパッケージがある場合、それを使用しようとします。ほとんどのディストリビューションは、古いリリースのバックポートを提供します。それが不可能な場合は、元の開発者からソースを取得し、自分でビルドします。周りにパッチが浮かんでいる場合、私はそれを適用するかもしれません(通常それらは小さく、手動でチェックできます)。
レト

このスレッドには12,000のビューがあり、5%がソリューションを使用し、リポジトリを追加したと想定できます。バックドアが統合されたコアパッケージの新しいバージョンを簡単に追加できます。1週間以内に600のシステムにアクセスできます。私はあなたがそうするだろうとは思いませんが、サードパーティのレポを追加することはあまり安全ではありません。
レト

1
リポジトリから更新する必要はありませんでした。バグ固定回線「allow_writeable_chroot = YES」を追加私のために
abumalick

7

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

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

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

 / 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
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構成で機能していますか?
クリス・ハフ

更新部に見て、この変形をmaubyはuのを助けることができる、それがそうするように完全に安全ではないのですが、それ以外の可能性...もし
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に表示されます。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が失敗しました

溶液。

seccomp_sandbox=no    

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

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

allow_writeable_chroot=YES

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


0

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

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

allow_writeable_chroot=YES
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.