私のアプリケーションにはフォルダ/LD
とユーザーがいますtest_user
。このユーザーがその/LD
フォルダにのみアクセスできるようにしたいと思います。
ただし、Filezilla FTPクライアントを介して接続すると/LD
デフォルトでロードされますが、ユーザーは別のフォルダに移動することもできます。
私はLinux 4.9組み込みシステムを使用しています。chroot
、、、adduser
およびaddgroup
コマンドがありますchmod
。このusermod
コマンドはありません
私が望むことは可能ですか?
答え1
まず、/LD
ホームディレクトリをに設定する必要がありますtest_user
。usermod
コマンド権限がないと言い、その権限が利用vipw
できない場合は、ユーザーが現在ログインしていないことを確認して/etc/passwd
自分で編集してください。
その後、確認してください。vsftpd.conf のマニュアルページchroot_local_user
chroot_list_enable
オプションの説明を読んでくださいchroot_list_file
。
すべて(またはほとんど)ユーザーがFTP接続をホームディレクトリに制限するようにするには、これをchroot_local_user
YESに設定し、/etc/vsftpd.chroot_list
ファイル(またはこのオプションで指定されたファイルchroot_list_file
)を使用して例外を指定できます。
制限のみがtest_user
必要な場合は、「いいえ」のままにして「はい」にchroot_local_user
設定し、ファイル(またはこのオプションで指定されたファイル)に追加します。ファイルがまだ存在しない場合は作成できます。chroot_list_enable
test_user
/etc/vsftpd.chroot_list
chroot_list_file
これらの操作の結果として、test_user
FTP接続にログインすると、/LD
ディレクトリがルートディレクトリ(/
)として表示されます。したがって、/LD
FTP接続用のファイルシステムの残りの部分が存在しないため、ディレクトリツリーの外部を参照できません。ユーザーが引き続きアクセスできるサブディレクトリは、望ましく/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_user
FTP セッションは chroot なので、/LD
これらのシンボリックリンクは使用できない切断リンクとして表示されます。test_user
書き込み権限がある場合は、/LD
「壊れた」リンクを削除できます。