新しいユーザー(foo
)を作成しましたが、ftp経由でログインすると、アクセスできるディレクトリ内のファイルを編集できません。
彼がログインできるディレクトリでls -l
は私に:
-rw-rw-r-- 1 root www-pub 6427 Nov 17 04:21 index.html
ユーザーはグループwww-pub
に属しています。これは、彼が実際にそのグループに属していることを示すcat /etc/group
の出力です。
...
www-pub:x:1001:ftpuser,www-data,foo
foo:x:1002:
*含まれているディレクトリの権限を編集します。
drwxrwsr-x 5 root www-pub 4096 Nov 17 02:53 thecontainingdir
そしてその上のもの:
drwxrwsr-x 49 root www-pub 4096 Nov 16 02:40 thenextdirup
彼はftp経由でログインでき、編集する必要のあるファイルには、グループwww-pub
にファイルの読み取りと書き込みを許可する正しい権限があり、彼はそのグループのメンバーであるため、なぜ編集できないのですか? (または何かをアップロード)?
ファイルを777
に変更した場合にのみ、彼はそれを編集できます。それはまるで彼がグループにいないかのようです...しかし彼はそうです!どうしたの?
一言で言えば、vsftpdのv3.2.5はchroot()内の書き込み可能なルートでは機能しないため、ユーザーのルートフォルダーを書き込み不可にするか、新しいバージョンにアップグレードする(およびいくつかのconf設定を設定する)か、古いバージョンにダウングレードする必要がありますバージョン。
OK、問題はvsftpdバージョン2.3.5(私のサーバーで利用可能な最新のパッケージ)を使用していることに起因していました。このバージョンのvsftpdでは、ftpユーザーのホームディレクトリに書き込み権限がない必要があります。はい、あなたはそれを正しく読んでいます。したがって、私の場合、ユーザーがWebルートにFTPでアクセスして、編集を開始できるようにしたかったのです。それはできません。 Webルートの上に別のディレクトリを作成し、そのユーザーのホームディレクトリを作成して書き込み不可にすると、ユーザーはftpでアクセスし、Webルートに移動して、期待どおりに編集/アップロードできるようになりました。
私の場合、このソリューションは、いくつかの仮想ディレクトリでさまざまな深さで操作しているユーザーが多数いるため、うまくいきませんが、少なくとも機能します(そして、人々が混乱しないように書き換えを使用しています)。ここで、特定のユーザーを割り当てたいものの周りに「ラッパー」ディレクトリがあることを常に確認する必要があります。
私がオンラインで見つけた主な提案:
add `allow_writeable_chroot=YES` to your conf file
(これは機能しなかっただけでなく、デーモンの再起動に問題が発生しました。vsftpdの新しいバージョン(3.0以降)を使用している場合は、これが機能すると思われます)
以前のバージョンのvsftpdにダウングレードする
(現在のバージョンを削除し、古いバージョンをサーバーで動作させるように試み始めましたが、依存関係の欠落や失敗が非常に多く発生したため、あきらめました。オンラインの他のユーザーは、バージョン2.3.2または独自にコンパイルできる場合は最大3.x)
私がオンラインで見つけたvsftpdの背後にいる人々の1人によって提示された他のいくつかの提案された解決策:
構成ファイルでオプションlocal_root =を定義します。/homeまたはusersフォルダーのあるディレクトリへの他のパスである必要があります。このようにして、vsftpdは/ homeディレクトリにchrootします。
(私にとって、これは単一のローカルルートを持つことができなかったので機能しません)
構成ファイルでオプションpasswd_chroot_enable = yesを定義し、/ etc/passwdファイルのユーザーホームディレクトリを「/ home/user」から「/home/./user」に変更します(引用符なし)。このようにして、vsftpdは/ homeディレクトリにchrootします。
(これは私のサーバーでは機能しません。)
Vsftpd-extのソースをダウンロードし、既存のvsftpdバイナリをコンパイルして上書きするか、リポジトリから取得して構成ファイルに追加します
オプションallow_writeable_root = yes。
(このサーバーではコンパイルできません。)