このFTPコマンドがヤバい
とあるFTPサーバにWinSCPで接続してて気づいたんだけど、ディレクトリのパーミッションがこんな風に表示されている。
flcdmpe
ふるくだんぺ? なんじゃらほい?
自分の記憶では、今までは確かこんなだった。
rwxrwxr-x
実際、今でもファイルはこんな感じで表示されるのだが、なぜかディレクトリは「flcdmpe」なのだ。
こいつあ、WinSCPのバグだぜ! ヒャッハー!(と、この時は思った)
―
と、思ったんだけど、ネットで探してもあまりバグの指摘が無い。
さらに調べたところ、以下のことが分かった。
- flcdmpeというのは MLSD というFTPコマンド由来であること
MLSDコマンドの結果はこんな感じになる。
modify=20130622012659;perm=flcdmpe;type=dir;unique=802UE40003;UNIX.group=101;UNIX.mode=0755;UNIX.owner=20397; etc
- FTPのLIST, NLST, MLST, MLSD コマンド - 戯れ言の水溜まり∅ こちらの情報を参考にすると、ファイル一覧を取得する LIST というコマンドの結果はOS依存だから、標準化されたMLSDコマンドを作ろうぜ!とIETFが決めたらしい。
- RFC3659 Extensions to FTP の7.5.5.によれば(超意訳)、
"a" はファイルだぜ。
"c" はディレクトリだぜ。
"d" は削除できるブツだぜ。
"e" はCWDで入れるディレクトリだぜ。
"f" はリネームできるブツだぜ。
"l" はLISTできるディレクトリだぜ。
"m" はMKDで子ディレクトリを作れるぜ。
"p" は中のブツを削除できるディレクトリだぜ。
"r" はRETRできるファイルだぜ。
"w" はSTORできるファイルだぜ。
つまり "flcdmpe" とは、「リネームできて一覧できて削除出来て子供作れて中も消せてcdできる、何でもアリのディレクトリだぜ」ということらしい。
- WinSCPのログインダイアログの「設定」で「環境」-「FTP」のなかに「ディレクトリ一覧にMLSDコマンドを使用する」という項目があって、通常「自動」になっている。これを「オフ」にすると、今まで通りのrwxrwsr-x形式で表示されることが分かった。
―
要するに、WinSCPを使っていて、「flcdmpe?なにコレ、キモい」と思ったら、接続設定でMLSDをオフにすれば治るよ、というお話。
―
ていうかコレ、WinSCPでMLSDをまともに扱えないならデフォルトでオフになってるべきじゃないのかな・・・。