私がセットアップしたMac OS X Serverでは、GUIからFTPサーバを起動させただけでは、FTPクライアントからパーミション(chmod)の設定ができませんでした。今回はその時行った対応を紹介します。セットアップしたマシンはPowerMacintoshG3DT266改(466)+AdaptecPowerDomain2940U2W+Quantum AL5-18300LWになります。他の組み合わせでは同様の現象は出ないかもしれません。FetchやAdobe GoLiveなどのftpを使っても、【CHMOD command not implemented】とchmodがはじかれてしましました。
原因追及
Mac OS X Serverではwu-ftpというftpdを使っています。セキュリティーもよく、最近ではあちらこちらで使われているようです。そこでまずはwu-ftpのconfigファイルの内容を見直しました。configの内容をあれこれ書き換えたのですが、結局私の力ではchmodを使う事はできませんでした。そこでMac OS X Serverにもう一つインストールされているftpdを利用することにしました。なお、Mac OS Xにインストールされているftpdは、最初からこちらになっています。サーババージョンでwu-ftpを使っていると言うことはそれなりに理由が有るのでしょうが、今回はこんな結果になりました。自分の力のなさを痛感!
そこでこんな風に対応してみました。
- まずTerminalを起動してsuになり、ディレクトリ/etcに移動します。
[localhost:~] david% su
Password:
[localhost:/Users/david] root# cd /etc
- そこで【inetd.conf】オリジナルをバックアップしました。
[localhost:/etc] root# cp inetd.conf inetd.conf.org
【cp】はコピーコマンドです。上記では【inetd.conf】を同じディレクトリ内に【inetd.conf.org】という名前でコピー(バックアップ)しています。
- ここでちゃんとバックアップがとれたか【ls -a】で確認しています。
[localhost:/etc] root# ls -a |
|
|
. |
hostconfig~ |
monthly |
ssh_host_dsa_key |
.. |
hosts |
motd |
ssh_host_dsa_key.pub |
csh.login |
inetd.conf |
protocols |
ssh_prng_cmds |
csh.logout |
inetd.conf.org |
rc |
sshd_config |
daily |
kern_loader.conf |
rc.boot |
sudoers |
find.codes |
krb.conf |
rc.common |
syslog.conf |
[localhost:/etc] root# |
|
|
- telnetの所でも書きましたが、ここを初めてみた方のために書いておきます。私はバリバリのUNIXユーザではありません。またUNIXのテキストエディタ【vi】のインターフェイスもいまいちよく分かりませんので、ここでは一旦ファイルを自分のDocumentsフォルダにコピーして作業しています。私が通常使っているテキストエディタは【Jedit4】です。他のエディタでもかまいませんが、改行コード(UNIXはLFで、MacはCRです)の変換ができる物が必要です。また、行番号がだせる物が見やすく便利です。というわけで、自分のホームディレクトリ内のDocumentsフォルダにファイルをコピーします。
[localhost:/etc] root# cp inetd.conf /Users/david/Documents/inetd.conf
[localhost:/etc] root# cd /Users/david/Documents
[localhost:/Users/david/Documents] root# ls -a
. .. inetd.conf
[localhost:/Users/david/Documents] root#
【ls -a】コマンドで確認すると、上記のようにうまくコピーされました。赤い文字のファイルがコピーされたファイルです。
- コピーされた【inetd.conf】を【Jedit4】で開きます。ファイルを【Jedit4】のアイコンにドロップすれば開けます。この時改行コードをどうするかきかれますので、変換して開くを選択します。変換して開くを選ばないと、まったく改行してくれないので、作業がやりにくくなります。またこの時表示するフォントをOSAKA等幅など、等幅フォントを選んでおくとさらに見やすくなります。
- 9行目のftpで始まる行を#でコメントアウトします。そして次に以下の行を書き加えます。
ftp stream tcp nowait root /usr/libexec/tcpd ftpd -l
加筆する場所は次10行目でいいと思います。
- 書き換えたファイルを元の場所に戻します。
[localhost:/Users/david/Documents] root# cd
[localhost:~] root# cp /Users/david/Documents/inetd.conf /etc/inetd.conf
[localhost:~] root#
- 次に新しいftpdの、アクセス権の設定をしなくてはなりません。
/Library/FTPServer/Configuration/ftpusersを書き換えます。まずはファイルのバックアップを取ります。
[localhost:~] root#cd /Library/FTPServer/Configuration
[localhost:/Library/FTPServer/Configuration] root#cp ftpusers ftpusers.org
- このファイルも自分のDocumentsフォルダにコピーしてきます。
[localhost:/Library/FTPServer/Configuration] root#cp ftpusers /Users/david/Documents ftpusers
- このファイルにかかれているユーザは、ftpアクセスすることが許されません。そこでanonymousというユーザを書き加えます。加筆する場所は最後の行でかまいません。またguestと言うユーザが見あたらなければ、同じく書き加えます。anonymousというのは不特定多数の人という特殊なユーザと考えてください。これを許すと何でもありになってしまいます。
- 書き換えたファイルを元の場所に戻します。
[localhost:/Library/FTPServer/Configuration] root#cd /Users/david/Documents
[localhost:/Users/david/Documents] root#cp ftpusers /Library/FTPServer/Configuration ftpusers
- Terminalのログアウトをします。
[localhost:/Users/david/Documents] root# exit
exit
[localhost:~] david% exit
logout
[Process completed]
- Terminalを終了させて、マシンを再起動させます。
以上の操作でリモートから、ftpクライアントを使いパーミションの設定ができるはずです。
赤い文字のファイルがバックアップされた物です(ファイルの数は本来もっとたくさんありますが、省略しています)。configに失敗した場合これを元に復旧します。