- - PR -
vsftpでのアクセス管理について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-04-18 02:07
vsftpについてご質問です。
■前提 ・下記のディレクトリーに各種データがある。 /var/ftp/a /var/ftp/b /var/ftp/c ・ユーザー1、ユーザー2、ユーザー3のユーザーがいる。 ・各ユーザーは/var/ftpより上位へはアクセス出来ない(chrootの設定アリ) ■ご質問内容 各ユーザーの権限が下記の場合を実現させるには、 どのような設定を行えばよいでしょうか。 ユーザー1は、/var/ftp配下全てにアクセス可能(rw)。 ユーザー2は、/var/ftp/a、/var/ftp/bのみ可能。 ユーザー3は、/var/ftp/aのみ読み書き可能。他のディレクトは表示させない。 #ユーザー1・2までは、groupのパーミッションで何とかできるのですが、 #ユーザー3の「ディレクトリを見せない」が実現出来ません。 尚、上記が実現出来るのであればデータの置き場所は 変更してしまってもOKです。 | ||||
|
投稿日時: 2005-04-18 10:22
こんにちは。
vsftpdは触ったこと無いので設定方法などはわかりませんが、 単純にユーザ3だけ/var/ftp/aでchrootさせるってのはダメなんでしょうか。 (ユーザ3のホームディレクトリを/var/ftp/aにすることになるんですかね?) | ||||
|
投稿日時: 2005-04-18 11:52
緻密なアクセス制御をするのであれば、ファイルシステム上に Posix ACL を設定しては如何でしょうか。
2.6系 kernel の機能ではありますが、2.4系にもバックポートされていたと記憶しています。 (実際、RHEL 3 の ext3 ファイルシステムで使用したことがあります) 関連情報としては、mount の acl オプションや、man 5 acl, man 1 getfacl, man 1 setfacl あたりでしょうか。 以上、ご参考まで。 | ||||
|
投稿日時: 2005-04-19 01:04
>>綾瀬様
ご返答有難う御座います。 ちょっと質問の仕方が良くなかったですね。 ユーザー3については、/var/ftp/aでchrootすれば、 var/ftp/aだけのアクセスになるのですが、 ユーザー2において、/var/ftp/a、b「のみ」を 表示される方法がないかなぁと思いまして、 ご質問させて頂いた次第です。 =>つまり権限がないディレクトリーは表示させない。 ちなみに、WindowsのFTPサーバーソフトだと、 このユーザーは、/var/ftp/a、/var/ftp/bというように、 ユーザーごとに管理が出来たのですが、vsftpdでは、 それと同様な事を実現させるのは難しいのでしょうか・・・。 >>angel様 Posix ACL ですね。調べてみます。 勉強のつもりで、Linux弄っているので 面白そうなのでチャレンジしてみます。 #Kernelは2.6なので問題なさそうです。 でも、これだと権限管理は出来ても、 見えなくする事は難しそうですね。 ちょっと考えて見ます。 | ||||
|
投稿日時: 2005-04-19 01:41
不必要な部分は、ディレクトリの存在自体を見せない、という試みなのですね。
非常に面白そうなのですが、パーミッションやACLでの制御は難しそうですね。 ディレクトリの read 権限で調節するにしても、配下のファイル/ディレクトリを、全て見せるか/全て隠すか、の制御しかできないはずですし… 場合によっては、vsftpd本体の機能拡張が必要かもしれませんね。 # 権限の無いファイル/ディレクトリは表示しない、といったオプションがあれば… # どなたか実装してみませんか? | ||||
|
投稿日時: 2005-04-19 03:39
ちなみに、元データを一箇所に配置して、
ユーザーのhome(chroot)にシンボリックリンクを 張るという手を考えたのですが、これだとchrootの制限に 引っかかってしまい上手く行きませんでした。 # homeより上の階層にデータがないとシンボリックリンクをを辿れない。 chrootが適用されていても、シンボリックリンクに対しては、 無効に出来るよう(ApacheのFollowSymLinksみたいに)なると、 設定し易いのですが・・・。
ぜひぜひ、お願いします。 | ||||
|
投稿日時: 2005-04-19 07:36
・/var/ftp/直下は読み取り不可
・/var/ftp/a/、/var/ftp/b/への移動は可能 で、特に困ることはないので... /var/ftp/で/var/ftp/a/、/var/ftp/b/だけが見えるようにしたい、 というのなら「欲しい人が作ればあ?」とゆーことになるのでわ。 | ||||
|
投稿日時: 2005-04-19 09:40
そうですね。必須とは言い難い機能ですから。 ただ、vsftpd の hide_file の延長のような形で、機能があっても面白そうだと思います。 実は、一つ方法は思いついたのですが、柔軟性が無いし、大規模になったときに対応できそうに無いので、言及していませんでした。 参考程度ですが、一応載せます。 # mkdir -p /home/real/{a,b,c} # mkdir -p /home/x/{a,b,c} # mkdir -p /home/y/{a,b} # mkdir -p /home/z/a # useradd -Md /home/x x # useradd -Md /home/y y # useradd -Md /home/z z # mount -o bind /home/real/a /home/x/a # mount -o bind /home/real/b /home/x/b # mount -o bind /home/real/c /home/x/c # mount -o bind /home/real/a /home/y/a # mount -o bind /home/real/b /home/y/b # mount -o bind /home/real/a /home/z/a ※vsftpd.conf では、chroot_local_user を有効にするか、chroot_list_enable を使用して、ユーザ x, y, z それぞれで chroot を有効にする。 ※ディレクトリのパーミッションは適宜調節して下さい。 |