proftpdで読めないディレクトリを不可視にする方法
[ftproot] ├[staff] ├[ftpdata] :
各ユーザは、ログインするとftprootに入ります。
その下にstaffディレクトリ、ftpdataディレクトリ、
その他色々ディレクトリがあり、staffフォルダはFTPサーバの
superユーザのみアクセスできるようにします。
また、ftpdata等のディレクトリも安全のためftpグループに
所属するユーザのみアクセスできるようにします。
FTPサーバ用のユーザは以下の通り。
【ユーザ1】
ユーザ名:superftpuser
FTPスペースのすべてのディレクトリにアクセスできる。
【ユーザ2】
ユーザ名:ftpuser
staffフォルダにはアクセスできない(というかディレクトリ自体見えない)
必要なグループを定義します。
groupadd superftp groupadd ftp
必要なユーザを定義します。パスワード設定も忘れずに。
useradd superftpuser -G superftp,ftp useradd ftpuser -G ftp
制限したいディレクトリの権限を変更します。
chmod 750 /ftproot/ftpdata chgrp /ftproot/ftpdata ftp chmod 750 /ftproot/staff chgrp /ftproot/staff superftp chmod 750 /ftproot chgrp /ftproot ftp
proftpd.confの設定もしちゃいましょう。
読めないディレクトリは不可視にします。
<Directory /*> HideNoAccess On </Directory>
不可視にしたいだけなら↑の設定だけでいいじゃんと言われそうですが、
実際に上の設定だけだと、見えないだけでファイルを直接指定されると
アクセスできてしまいます。そのため、権限でもアクセスさせないように
するのです。
設定は以上です。
スタンドアロンでproftpdを動かしている場合は再起動しましょう。
superftpuserでアクセスした場合は以下のように見えるはずです。
[ftproot] ├[staff] ├[ftpdata] :
で、ftpuserでアクセスした場合は以下のように見えるはずです。
[ftproot] ├[ftpdata] :
/ftproot/staffに直接アクセスしても
550 /staff Permission denied
と言われてアクセスできません。
欠点としては、上のメッセージではstaffというディレクトリが
存在すること自体はわかってしまうということです。
できればNo such file or directoryなどのメッセージを返して
欲しいですね。
これはLinuxシステムの権限を利用してアクセス制限をしているためで、
proftpd側で制限(つまりproftpd.confで制限)すれば
No such file or directoryを返すようにしてくれます。
それは次回・・・やるかなぁ^^;
個人的には上の方法で十分かなと思ってしまっているので・・・。