経緯
ProFTPD の .ftpaccess でディレクトリごとにFTPユーザの許可を与えたい の記事で記載した .ftpaccess
で制限をかけた領域へ WinSCP でログインしようとすると、以下のエラーが発生しました。
リモートディレクトリ名の取得時にエラーが発生しました。
PWD: Permission denied
一方、同じ領域へ FFFTP でアクセスすると一見問題なく繋がっているように見えます。実際、アップロードなどの操作もできます。
……という現象に遭遇したのでメモ。
原因
原因は必要なコマンドの権限がないことでした。
ただし、 FFFTP と WinSCP で実装上の差異がある模様。
- FFFTP: クリティカルなエラーでない限りは、エラーが発生しても次のコマンドを発行して処理を進めてしまう
- そのため、一見問題なく動作するように見える
- WinSCP: エラーが発生した時点で止まってしまう
このスタンスの差が、「 WinSCP でログインするとエラーで怒られて操作できないが、 FFFTP では操作できる」という現象に繋がったようです。
とはいえ、 FFFTP もエラーそのものは発生しており、画面下のログウインドウを確認すると以下のような行が見受けられました。
>FEAT
550 FEAT: Operation not permitted
対処
以上より、対処方法はシンプルで必要なコマンドの権限を付けてあげること。
具体的には Limit
ディレクティブに以下のようにコマンドを追加委sます。
<Limit CWD CDUP LIST>
↓
<Limit CWD CDUP LIST FEAT PWD XPWD MLSD>
全体としては
<Limit ALL>
AllowUser OR hoge@example.com,hoge@www.example.com
DenyUser OR fuga@example.com,fuga@www.example.com
</Limit>
<Limit CWD CDUP LIST FEAT PWD XPWD MLSD>
AllowUser OR fuga@example.com,fuga@www.example.com
</Limit>
という形になります。
これで対処完了です。
参考
症状としては類似事例。ただし解決に至っておらず、 .ftpaaccess
について言及もないため、その絡みかどうかも不明。