組み込みシステムのVSFTPD:特定のフォルダにのみユーザーアクセスを制限します。

組み込みシステムのVSFTPD:特定のフォルダにのみユーザーアクセスを制限します。

私のアプリケーションにはフォルダ/LDとユーザーがいますtest_user。このユーザーがその/LDフォルダにのみアクセスできるようにしたいと思います。

ただし、Filezilla FTPクライアントを介して接続すると/LDデフォルトでロードされますが、ユーザーは別のフォルダに移動することもできます。

私はLinux 4.9組み込みシステムを使用しています。chroot、、、adduserおよびaddgroupコマンドがありますchmod。このusermodコマンドはありません

私が望むことは可能ですか?

ベストアンサー1

まず、/LDホームディレクトリをに設定する必要がありますtest_userusermodコマンド権限がないと言い、その権限が利用vipwできない場合は、ユーザーが現在ログインしていないことを確認して/etc/passwd自分で編集してください。

その後、確認してください。vsftpd.conf のマニュアルページchroot_local_userchroot_list_enableオプションの説明を読んでくださいchroot_list_file

すべて(またはほとんど)ユーザーがFTP接続をホームディレクトリに制限するようにするには、これをchroot_local_userYESに設定し、/etc/vsftpd.chroot_listファイル(またはこのオプションで指定されたファイルchroot_list_file)を使用して例外を指定できます。

制限のみがtest_user必要な場合は、「いいえ」のままにして「はい」にchroot_local_user設定し、ファイル(またはこのオプションで指定されたファイル)に追加します。ファイルがまだ存在しない場合は作成できます。chroot_list_enabletest_user/etc/vsftpd.chroot_listchroot_list_file

これらの操作の結果として、test_userFTP接続にログインすると、/LDディレクトリがルートディレクトリ(/)として表示されます。したがって、/LDFTP接続用のファイルシステムの残りの部分が存在しないため、ディレクトリツリーの外部を参照できません。ユーザーが引き続きアクセスできるサブディレクトリは、望ましく/LDない場合はファイルシステム権限を使用してブロックします。


まず、/ LDサブディレクトリにアクセスする必要があるユーザーおよび/またはグループを識別します。理想的には、/ LDサブディレクトリ内のすべてのユーザーは1つのグループ(と呼びますLDsub)に属している必要があり、test_userそのグループに属してはいけません。他のグループにのみ存在する必要がありますtest_user(例として使用しますLDftp)。このグループのメンバーは、ディレクトリ自体への書き込み権限が必要かどうかに応じて、このグループのメンバーである場合とそうでLDsubない場合があります。LDftp/LD

または、コマンドがない場合は、編集するか、usermod編集のみでgroupmodグループメンバーシップを編集できます。vigr/etc/group

これで、次のコマンドを使用してchownディレクトリの所有権を設定し、/LD権限chmodを設定できます。

chown root:LDftp /LD
chmod 775 /LD        #this will be drwxrwxr-x 

これでtest_user、グループメンバーシップを介してディレクトリへの書き込み権限がありますが、/LDディレクトリの所有者ではないため、権限を変更することはできません。 "everyone rx"権限を使用すると、グループメンバーはLDsub自分の権限が許可するディレクトリを介してサブディレクトリにアクセスできます。

/ LDのサブディレクトリは、そうでない限り、必要に応じて誰でも所有できます。test_userこれらのサブディレクトリのグループLDsubと権限は、次のように設定する必要があります。

chgrp LDsub /LD/subdirectory  # or chown <not_test_user>:LDsub /LD/subdirectory
chmod 770 /LD/subdirectory   # this will be drwxrwx---

test_userへの書き込みアクセス権があるということは、/LDサブディレクトリの名前を変更し、新しいディレクトリを作成し、サブディレクトリを削除できることを意味します。サブディレクトリ。

要件がより複雑な場合は、ファイルシステムでACLサポートが有効になっていることを確認し、ACL / LDを使用してサブディレクトリにアクセスできるユーザーおよび/またはグループを指定するのが簡単になります。getfaclおよびコマンドのマニュアルページを参照してくださいsetfacl。および/またはこのページもっと学ぶ。


あるいは、サブディレクトリを/LD別の場所に移動し、シンボリックリンクを使用して、ディレクトリパスが以前と同じように機能するようにすることも検討できます。

mv /LD/subdirectory /elsewhere/subdirectory
ln -s /elsewhere/subdirectory /LD/subdirectory

FTPセッション外のすべてのユーザーに対して、これらのtest_userシンボリックリンクは通常どおりに機能します。ただし、test_userFTP セッションは chroot なので、/LDこれらのシンボリックリンクは使用できない切断リンクとして表示されます。test_user書き込み権限がある場合は、/LD「壊れた」リンクを削除できます。

おすすめ記事