FTPクライアントから、パーミションの設定が出来ない


私がセットアップした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を使っていると言うことはそれなりに理由が有るのでしょうが、今回はこんな結果になりました。自分の力のなさを痛感!

そこでこんな風に対応してみました。

  1. まずTerminalを起動してsuになり、ディレクトリ/etcに移動します。

    [localhost:~] david% su
    Password:
    [localhost:/Users/david] root# cd /etc

  2. そこで【inetd.conf】オリジナルをバックアップしました。

    [localhost:/etc] root# cp inetd.conf inetd.conf.org

    【cp】はコピーコマンドです。上記では【inetd.conf】を同じディレクトリ内に【inetd.conf.org】という名前でコピー(バックアップ)しています。

  3. ここでちゃんとバックアップがとれたか【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#

  4. 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】コマンドで確認すると、上記のようにうまくコピーされました。赤い文字のファイルがコピーされたファイルです。

  5. コピーされた【inetd.conf】を【Jedit4】で開きます。ファイルを【Jedit4】のアイコンにドロップすれば開けます。この時改行コードをどうするかきかれますので、変換して開くを選択します。変換して開くを選ばないと、まったく改行してくれないので、作業がやりにくくなります。またこの時表示するフォントをOSAKA等幅など、等幅フォントを選んでおくとさらに見やすくなります。

  6. 9行目のftpで始まる行を#でコメントアウトします。そして次に以下の行を書き加えます。
    ftp stream tcp nowait root /usr/libexec/tcpd ftpd -l
    加筆する場所は次10行目でいいと思います。

  7. 書き換えたファイルを元の場所に戻します。

    [localhost:/Users/david/Documents] root# cd
    [localhost:~] root# cp /Users/david/Documents/inetd.conf /etc/inetd.conf
    [localhost:~] root#

  8. 次に新しいftpdの、アクセス権の設定をしなくてはなりません。
    /Library/FTPServer/Configuration/ftpusersを書き換えます。まずはファイルのバックアップを取ります。

    [localhost:~] root#cd /Library/FTPServer/Configuration
    [localhost:/Library/FTPServer/Configuration] root#cp ftpusers ftpusers.org

  9. このファイルも自分のDocumentsフォルダにコピーしてきます。

    [localhost:/Library/FTPServer/Configuration] root#cp ftpusers /Users/david/Documents ftpusers

  10. このファイルにかかれているユーザは、ftpアクセスすることが許されません。そこでanonymousというユーザを書き加えます。加筆する場所は最後の行でかまいません。またguestと言うユーザが見あたらなければ、同じく書き加えます。anonymousというのは不特定多数の人という特殊なユーザと考えてください。これを許すと何でもありになってしまいます。

  11. 書き換えたファイルを元の場所に戻します。

    [localhost:/Library/FTPServer/Configuration] root#cd /Users/david/Documents
    [localhost:/Users/david/Documents] root#cp ftpusers /Library/FTPServer/Configuration ftpusers

  12. Terminalのログアウトをします。

    [localhost:/Users/david/Documents] root# exit
    exit
    [localhost:~] david% exit
    logout

    [Process completed]

  13. Terminalを終了させて、マシンを再起動させます。

以上の操作でリモートから、ftpクライアントを使いパーミションの設定ができるはずです。


赤い文字のファイルがバックアップされた物です(ファイルの数は本来もっとたくさんありますが、省略しています)。configに失敗した場合これを元に復旧します。

戻る