単一のFTPルートディレクトリに複数のユーザーFTPログインを提供する必要があります。一部は書き込み可能で、一部は読み取りのみ可能です。私は彼らがファイルシステムの対応するディレクトリの上に何も見ないことを願っています。検索後(一般的な問題のようです)、user_local設定オプションをルートディレクトリとして定義し、chroot_local_usersオプションまたはchroot Jailを使用してユーザーをそのディレクトリに制限しました。これは基本的に機能します。
私の問題は理由はわかりませんが、セキュリティのためにchroot刑務所に頼ることは一般的に眉をひそめることです。最も重要なのは、カーネル開発チーム(少なくとも1人)によって目をつぶすことです。
もしそうなら、ログインしたユーザーがchroot Jailなしで定義されたルートディレクトリの上のエントリを表示できないように制限するにはどうすればよいですか? (タイトルに記載されている質問の「セキュリティ」部分です)
また、セキュリティ上の理由から(まだ理解されていない)、最新バージョンではvsftpd
ユーザーのルートへの書き込みが許可されていないため、2つのオプションが残ります。 1. セキュリティ機能を無効にし、root に書き込み可能なままにするか、2. root 書き込みビットを削除し、その中に書き込み可能なサブディレクトリを作成します。前者は不満であり、後者は見苦しく、エラーが発生しやすいです(ユーザーがルートディレクトリに書き込もうとするとエラーが発生します...)。私は後者を選びました。
それでは、FTPサービスを提供する正しい方法は何ですか?これは、ユーザーがファイルシステムの無関係な部分を安全な方法で見ないようにする方法を意味しますか? FTPはファイルを配布する本質的に安全ではない方法ですか?それでは、もっと良い方法はありますか?これを修正しようとしています...
ベストアンサー1
注:このソリューションは私にとって効果的で、設定も簡単でした。 vsFTPdを使用するとします。
私はすべてのユーザーをホームディレクトリに閉じ込め、それらの間に「共有」というフォルダを共有しました。
ユーザーを自宅に直接送信する
$ sudo vi /etc/vsftpd/vsftpd.conf
これが次の構成であることを確認してください。
anonymous_enable=NO local_enable=YES chroot_local_user=YES
vsftpdを再起動します。
$ sudo service vsftpd restart
すべてのユーザーの共有フォルダを作成し、「ftp」権限を付与します。
$ cd /var/ftp $ mkdir shared $ chmod 777 shared/ $ chgrp ftp shared/ $ chown ftp shared/
投獄されたユーザーがこの共有フォルダにアクセスできるようにする
刑務所に閉じ込められたユーザーSamを例に挙げてみましょう。
今、あなたはルートだと仮定します。
$ su - sam $ cd /home/sam $ mkdir Shared $ exit
これでrootに戻りました。
$ mount -o bind /var/ftp/shared /home/sam/Shared
FTPグループにサムを追加する
$ usermod -a -G ftp sam
共有フォルダに他のユーザーを追加するには、この手順を繰り返します。
Samは自分のホームフォルダにアクセスでき、他のすべてのユーザーがアクセスできる追加の「共有」フォルダがあります。