FTP利用でのファイル/ディレクトリの属性変更UNIX処方箋

「事件は枯れたシステムが稼働する現場で起こってるんだ」と現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、SITEコマンドに対応していないFTPサーバでファイル/ディレクトリの属性変更を行う方法を解説する。

» 2008年01月30日 02時33分 公開
[ITmedia]

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サーバソフトウェアを導入

標準の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)

実行例1 Solaris 8標準のFTPサーバーでremotehelpコマンドを実行

 なお、SITEコマンドはOS上のコマンドを実行させる拡張コマンドであるため、実行可能なコマンドによってはセキュリティホールとなってしまいます。SITEコマンドをサポートするサーバソフトウェアを導入した場合、特定のコマンドしか実行できない状況になっているかどうかを確認しておきましょう(実行例2)


ftp> remotehelp site
214-The following SITE commands are recognized (* =>'s
unimplemented).
 HELP    CHMOD
214 Direct comments to root@local.

実行例2 ProFTPDで実行可能なコマンド

標準のファイル属性を変更

 新規作成されるファイルおよびディレクトリの属性は、umaskコマンドによって指定できます。これは、FTP経由でのファイル転送によるファイル作成時にも適用されます。

 このumaskは、新規作成されるファイルおよびディレクトリに対するファイル属性のマスク値です。例えば、umaskが設定されていない状態(000)でファイル/ディレクトリを作成した場合、その属性は、

ファイル:rw-rw-rw-(666)

ディレクトリ:rwxrwxrwx(777)


となります。このままでは誰でも読み書き可能になってしまうため、システム標準のumask値としては「022」が設定されており、図1のように所有者以外から書き込めないような属性となります。

図1 図1 umaskの適用

 FTPファイル転送のためにシステム全体のumask値を変更すると、セキュリティ上問題があるため、質問のケースではFTPについてだけumask値を変更すれば良いでしょう。Solaris標準のFTP用umaskの設定は、/etc/default/ftpdファイルで行います。/etc/default/ftpdファイルは標準では存在しないので、

umask=


という内容のファイルを新規作成します。例えば、ファイルの属性を「660」にしたい場合は、umask値として「006」を設定します。

umask=006


 設定後にFTPデーモンもしくはinetdの再起動は必要なく、すぐに設定が反映されます。

関連キーワード

サーバ | Solaris | UNIX | UNIX処方箋


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ