• ベストアンサー

ftpでアップロードできない

FreeBSD(4.2R)初心者です。 BSDマシンとWinマシンをLANで接続しています。 Winマシンからftpすると、接続することやダウンロードは出来ますが アップロードができません。パーミッションもいじれません。 apacheをインストールしてからこうなったような気がします。 ちなみにtelnetはできます。 どなたか解決方法を教えていただきたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • k-841
  • ベストアンサー率27% (129/465)
回答No.3

一般ユーザとして ftp ログインしたがアップロードできない、という問題として話を進めます。 まず、パーミッションについてですが、 #2のご回答にもあるように、 3種類のパーミッションが存在します。 すなわち、「本人」「グループ」「その他の人全員」です。 755 でアップロードできなくて 775 でアップロードできた、ということは、 当該ディレクトリはログインしたユーザの属するグループのどれかであった、ということです。 (ここで「アップロードできる」ことは、書き込み権限がある、ということです) ディレクトリのグループの調べ方は、 ls -lg で調べられます(実際 FreeBSD 4.2 では-gオプション無しでもグループは見えますが)。 左から4つ目のフィールドがそのディレクトリのグループです。 また、当該ユーザの属するグループは、id コマンドで調べられます。 ls -lg と id から、なぜ 755 ではダメで 775 ではできたのかが納得できると思います。 次にパーミッションをいじれないのは、 単にパーミッションをいじるためのパーミッションが与えられていないからです。 パーミッションをいじれるのは、所有者もしくは root です。 解決策は、アップロードしたいディレクトリに、 ftp でログインするユーザに書き込み権限を与えればよいのです。 telnet して root なりそのディレクトリの所有者なりに su して、 適当に書き込み権限を与えればよいです。 ここで、適当に書き込み権限を与えるとは、 1. 「他人」に属するユーザ全員に書き込み許可、すなわち % chmod o+w (当該ディレクトリ名) 2. 当該ユーザをディレクトリのグループに加え、 ディレクトリはグループ書き込み許可にする、すなわち /etc/group の当該グループエントリに、当該ユーザを加え、 % chmod g+w (当該ディレクトリ名) 3. 当該ユーザしか書き込まないなら、 当該ディレクトリを当該ユーザ所有にする、すなわち % chown (当該ユーザ名) (当該ディレクトリ名) のどれかを実行することになるでしょう。 ちなみに、サブディレクトリの権限も一様に変更したい場合は、 chmod の -R オプションを使用します。

harisun
質問者

お礼

ご回答ありがとうございます。 パーミッションに対して無頓着だったので 勉強になりました。

その他の回答 (3)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.4

ユーザのホームディレクトリ(public_html)にUploadする際は、そのユーザ名でログインします。 DocumentRootは通常rootが所有者になっているため、まず、コンテンツアップロード専用のユーザアカウントを作成し、DocumentRootディレクトリの所有者を今作成したユーザへ変更します。 どうしてもrootでftpでログインしたければ/etc/ftpusersを編集しましょう。

harisun
質問者

お礼

おっしゃるようにやってみたら DocumentRootディレクトリにログインできました。 ありがとうございました。

  • ojin
  • ベストアンサー率43% (280/638)
回答No.2

FreeBSDは、harisunさんが操作できるのですか。 Unixマシンでは、「パーミション」が存在しています。 ダウンロードができて、アップロードができないということであれば、ネットワークの接続と、ユーザ認証も問題ないと思います。 一度、アップロードしようとする、FreeBSDディレクトリィを、 ls -l で確認して見てください。 drwxr--r-- もし、上記のようであれば、このディレクトリィは、 最初の"d":ディレクトリィ 2番目の"r":読み取り許可 3番目の"w":書き込み許可 4番目の"x":実行権 以下のr--r--のうち最初の"r--"は、グループ、次の"r--"は、その他です。 今回は、この部分は直接関係ないので、そののままにしておきます。 恐らく、現在FreeBSDのアップロードするディレクトリィは、 dr--r--r-- になっていませんか? # chmod 755 <ディレクトリィ> この結果 drwxr-xr-x に変わるはずです。 この作業を行うには、ルート権限が必要ですので、"root"でログインします。 これで、アップロードができるとおもいます。

harisun
質問者

お礼

ご回答ありがとうございます。 ディレクトリのパーミッションを見たら755になっていたのですが、 775にしてみたらアップできました。 あと、DocumentRoot(/usr/local/www/data)にアップさせるにはどうしたらいいのですか? dataのパーミッションは755ですが、chmodしても変更できません。 ls -laでみると、data ->/usr/local/share/doc/apacheとかいてありますが 何か関係があるでしょうか? ftpはrootではログインできないですよね? 通常はどうやってアップさせているのでしょうか? 教えていただけたら幸いです。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

「何のファイル」をサーバ上の「どこに」put(アップロード)しようとしているのですか? FreeBSDのマシンって手元にありますか? それとも、レンタルサーバか何かですか? また、FreeBSDのマシン上のrootの権限はありますか?

harisun
質問者

補足

説明不足ですみません。 BSDマシンは手元にあります。root権限もあります。 DocumentRootまたはユーザのホームディレクトリ(public_html)に webページ(htmlファイル)をおきたいのです。 よろしくお願いします。

関連するQ&A