「事件は枯れたシステムが稼働する現場で起こってるんだ」と現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、SITEコマンドに対応していないFTPサーバでファイル/ディレクトリの属性変更を行う方法を解説する。
Solaris 8上のFTPサーバに対して、WindowsのFTPクライアントでファイル転送を行っています。FTPサーバに転送されたファイルは、必ず属性が「rw-r--r--」(644)になります。FTPクライアントで属性を変更しようとしても、
502 SITE command not implemented.
というエラーが表示されて変更できません。転送したファイルの属性を「rw-rw----」(660)にしたいのですが、FTPサーバもしくはクライアント側の設定で対応できますか?
Solaris 8標準のFTPサーバはSITEコマンド(FTPではサポートされていないOS上のコマンドを実行するための拡張コマンド)に対応していないため、クライアント側からの属性変更はできません。このような場合、サーバ側では次のような対応が可能です。
標準のFTPサーバではなく、SITEコマンドをサポートするFTPサーバソフトウェアを導入すればクライアントから属性を変更できます。SITEコマンドをサポートしているかどうかは、FTPログインをしてremotehelpコマンドを実行すれば確認可能です。一覧表示されるコマンド名の横に「*」印のあるものはサポートされていないので、注意してください(実行例1)。
ftp> remotehelp
214-The following commands are recognized:
USER EPRT STRU MAIL* ALLO CWD STAT* XRMD
PASS LPRT MODE MSND* REST* XCWD HELP PWD
ACCT* EPSV RETR MSOM* RNFR LIST NOOP XPWD
REIN* LPSV STOR MSAM* RNTO NLST MKD CDUP
QUIT PASV APPE MRSQ* ABOR SITE* XMKD XCUP
PORT TYPE MLFL* MRCP* DELE SYST RMD STOU
214 (*'s => unimplemented)
なお、SITEコマンドはOS上のコマンドを実行させる拡張コマンドであるため、実行可能なコマンドによってはセキュリティホールとなってしまいます。SITEコマンドをサポートするサーバソフトウェアを導入した場合、特定のコマンドしか実行できない状況になっているかどうかを確認しておきましょう(実行例2)。
ftp> remotehelp site
214-The following SITE commands are recognized (* =>'s
unimplemented).
HELP CHMOD
214 Direct comments to root@local.
新規作成されるファイルおよびディレクトリの属性は、umaskコマンドによって指定できます。これは、FTP経由でのファイル転送によるファイル作成時にも適用されます。
このumaskは、新規作成されるファイルおよびディレクトリに対するファイル属性のマスク値です。例えば、umaskが設定されていない状態(000)でファイル/ディレクトリを作成した場合、その属性は、
ファイル:rw-rw-rw-(666)
ディレクトリ:rwxrwxrwx(777)
となります。このままでは誰でも読み書き可能になってしまうため、システム標準のumask値としては「022」が設定されており、図1のように所有者以外から書き込めないような属性となります。
FTPファイル転送のためにシステム全体のumask値を変更すると、セキュリティ上問題があるため、質問のケースではFTPについてだけumask値を変更すれば良いでしょう。Solaris標準のFTP用umaskの設定は、/etc/default/ftpdファイルで行います。/etc/default/ftpdファイルは標準では存在しないので、
umask=
という内容のファイルを新規作成します。例えば、ファイルの属性を「660」にしたい場合は、umask値として「006」を設定します。
umask=006
設定後にFTPデーモンもしくはinetdの再起動は必要なく、すぐに設定が反映されます。
Copyright © ITmedia, Inc. All Rights Reserved.