はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/01/16
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> 当サイト情報 >> スレッド

このページは表示専用です。新規投稿・レスや最新情報はこちらです。

このスレッドはクローズされています。記事の閲覧のみとなります。

 FTPでの基本的なユーザー権限・パーミッションについて
日時: 2007/07/05 21:01
名前: ほうせい

?不明点・障害内容:ファイル所有権に関する問題
?ログの有無   :
  (有:その内容):
?Distribution  :Fedora
      Version:Core6
?Service Name  :Apache
      Version:2.2.4
?ネットワーク構成:固定IP所有、ルーター内にネットワーク構築してます。


管理者様、その他の皆様、こんにちわ。

初歩的なことだと思いますがCGIのパーミッションに関連する
ファイルのオーナ・グループのことで理解できない部分がございまして、
よろしければ、ご教授頂けたらと思います。


FTP(アカウントlinuxでログイン)でファイル転送する時に
/var/www/html/ の所有者がapache:apacheのままでは書き込みが出来なかったので
/var/www/html/ の所有権をlinux(一般ユーザー)に変更しました。

chown -R linux:linux /var/www/html/  ←変更した時入力したコマンド

それ以降どうにもCGIの書き込みに関する動作のみ動かないようなのです。
動作はするのですが、書き込みだけが出来ません。

すぐに元々設定していたapache:apacheに戻すとCGIから書き込みできるようになりました。
しかし再びFTPでファイル転送の際に書き込みが出来なくなりました。

chown -R apache:apache /var/www/html/

通常 /var/www/html/ はどのような所有権にしておくのがよろしいのでしょうか?

今後も/var/www/html/以下にバーチャルホストのディレクトリを追加していく予定です。
FTPアカウントを外部スタッフ人数分用意することも考えています。



ちなみにhttpd.confは以下のようになっています。
  user apaceh
  group apache

このuserとgroupの設定を<Virtualhost>内に書き込んで
ユーザーごとに個別に設定するのかな?と思っていたらだめでした。
調べているうちに SuexecUserGroup で可能なことがわかりました。

<VirtualHost *:80>
  ServerName example.com
  SuexecUserGroup linux linux
</VirtualHost>

上記の設定でFTPで書き込みも出来てCGI側の書き込みも動作する状態は作れたのですが
これから1サイトに対して2〜3のFTPアカウントが必要になったときこれでは無理がある気がするのです。
というかそれ以前に基本的なパーミッションの理解が出来ていないのかもしれません。

レンタルサーバーなどの所有者がユーザーで、
CGIも705で書き込み動作するものなどは、どのようになっているのでしょうか?
できれば同じ設定で複数FTPアカウントにも対応したように構築したいと思っています。



関連すると思われる過去の質問

http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=749
http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=356
http://kajuhome.com/cgi-bin/patio/patio.cgi?mode=view&no=168&p=1


よろしくお願いいたします。

■ コンテンツ関連情報

 Re: FTPでの基本的なユーザー権限・パーミッションについて ( No.1 )
日時: 2007/07/05 21:50
名前: 管理者

ほうせいさん、はじめまして。

まず、パーミッションの話は置いておいてapacheの基本仕様として書かせていただきます。
故に以下のコメントは、今から各内容について除外してください。
> これから1サイトに対して2〜3のFTPアカウントが必要になったときこれでは無理がある気がするのです。

apacheにはドキュメントルートがあるのはご存知だと思います。「/etc/httpd/conf/httpd.conf」内の「DocumentRoot "/var/www/html"」部分。
故に、コメント頂いた部分(以下)
> ちなみにhttpd.confは以下のようになっています。
>   user apaceh
>   group apache


ここが基礎となっています。

要は、"/var/www/html"以下はプロセスの実行オーナ(apache)、グループ(apache)で動作します。(Read/Write/Execite)
よって、他アカウント(今回は「linux」)では、書き込み権限がありません。

仕様として"DocumentRoot"は"user apache"専有のものである。と言うことになります。
「1サイトに対して2〜3の・・・」で、"DocumentRoot"を共有することは基本的に無理である。とお考えください。

これを補うための者が、ユーザホームページの公開となります。(以下参照)
  http://kajuhome.com/tips/tips_03_002.shtml
  http://kajuhome.com/tips/tips_03_013.shtml

この場合、他ユーザは自ホームディレクトリに設けられた公開ディレクトリが対象となるので、所有者は当然そのユーザとなり、読み書き実行は自由となります。

基本構想としては「自分のドキュメントは自分で管理する。」(セキュリティ的にも・・)なので、
> これから1サイトに対して2〜3のFTPアカウントが必要になったときこれでは無理がある気がするのです。
は、できないと考えてください。


ただし、セキュリティを無視した場合はこの限りではありません。
試したことはありませんが、ほうせいさんが感じていられるパーミッションの部分です。
(以下は試したことがないので、「できる」ではなく「恐らく可能」というレベルでお読みください)

パーミッションには、「所有者:グループ:以外」という3つの区切りがあります。
よく、「755」とか「644」とか目にしたことがあると思います。
数値では上記ですが、表記では「-rwxr-xr-x」や「-rw-r--r--」の部分です。
細かく説明すると、大変なことになりますので専門に紹介しているサイトをご参照ください。

先ほど以下の部分に触れたと思いますが(以下)、「user」が所有者、「group」がグループにあたります。
>   user apaceh
>   group apache


「DocumentRoot "/var/www/html"」のアクセス権は「apaceh:apaceh」となるため、他のユーザは「所有者:グループ:以外」の
『以外』に当てはまります。
「-rwxr-xr-x」でいうと右から3つずつ区切るので以下がそのディレクトリ(ファイル)の権限になります
「-rwxr-xr-x」
  ~~~ ← 所有者
「-rwxr-xr-x」
   ~~~ ← グループ
「-rwxr-xr-x」
     ~~~ ← 以外
※:rは読み取り、wは書き込み、xは実行

上記の場合は、「以外」の権限は「読み取り」と「実行」の権限しかなく書き込みはできません。

どうしても・・・と言う場合はこの「以外」の権限に「読み取り」と「書き込み」を付与してあげればよい事になります。
(スクリプトを実行させるには「実行」を付与する)

よって最強権限は「777」を与えてあげれば、全てのユーザに1つの"DocumentRoot"を共有することが可能となります。

※:この設定は、絶対的に止めた方が良いです。自分1人が複数アカウントで操作するなら別ですが、
  複数人で行う場合はセキュリティ的にも問題です。


"DocumentRoot"はサーバ管理者が管理し、一般ユーザは先述した"ユーザホームページ公開"をチョイスするのが通常です。
 Re: FTPでの基本的なユーザー権限・パーミッションについて ( No.2 )
日時: 2007/07/06 01:15
名前: ほうせい

管理者様、素早く丁寧なご対応恐れ入ります。

返信遅くなり申し訳ございません、理解できるまで何度も読み返しておりました。

apacheやLinuxの基本を少し理解できたように思えてきました。
パーミッションの基本もとてもよく理解できました、そういうことだったのですね。


まずはじめに linux(一般ユーザー)という表記をしてしまって、申し訳ありません。
バーチャルホストを追加する予定はあるものの、一般的なユーザーディレクトリを公開する予定はありません。
FTPアカウントも複数と書きましたが、身内の人間のみに公開するので、実際一つでもかまいません。

誤解を招く質問で申し訳ありません。



★このサイトの説明ではhtmlを公開する際にオーナ・グループを"apache"へ変更していますが、
 やはり"/var/www/html"の所有権は"apache:apache"にしておく必要がありますよね?

★その上で、"/var/www/html"にFTPで直接ファイルを転送しようとすると、
 所有者の違いから書き込みできなくなるのはどうすればよいのでしょうか?

そもそも、私自身"/var/www/html"の所有者を"apache"から
FTPアカウントを持つユーザー"linux"に変えた理由は、
FTPでログイン後"/var/www/html"内へ直接書き込みが出来なくなったからです。
ちなみに"linux"にはvsftpdで上位ディレクトリへ移動できる設定にしています。

これは・・・FTP側の問題なのでしょうか?




もう少し詳しく問題の流れを書きますと、

実際のところ"/var/www/html"の所有権は"linux:linux"で運用するにあたっては何の問題もありませんでした。
FTPでファイル転送も出来、直接サーバー上のファイルを書き換えられる状態でした。

もちろんMobvableTypeなどのCGIも動いていたのです。

しかし「apacheから書き込みが発生する場合」においてのみ、エラーが発生したので私は
「そうか、apacheに所有権を与えてやれば良いんだ」と考えて"/var/www/html"の所有権を"apache:apache"に変更しました。

するとFTPアカウント"linux"からはFTPによる書き込みが出来なくなった。

実際にはクライアントPCでデザインした画像やcssなどのファイルをサーバーに転送する必要があり、
今回のFTPで書き込みできない問題が起こったというわけです。


聞きたい箇所は★の部分の問題になると思います。


どうにも、理解しにくい文章で申し訳ありません。
急ぎではないので暇なときにでもお答えいただけたら助かります。
 Re: FTPでの基本的なユーザー権限・パーミッションについて ( No.3 )
日時: 2007/07/06 12:04
名前: 管理者

説明が回りくどくなってしまい申し訳ありません。
自分でも読み直したのですが、いまいち分かりにくい回答となってしまいましたね。

> ★このサイトの説明ではhtmlを公開する際にオーナ・グループを"apache"へ変更していますが、
>  やはり"/var/www/html"の所有権は"apache:apache"にしておく必要がありますよね?


セキュリティ的にも"apache:apache"にしておくべきです。
また、パーミッションもきちんとしておかないと意味がありませんので下記に記します。

・ディレクトリ  「750」
・ドキュメント  「640」
・スクリプト   「750」
・データファイル 「640」

「オーナ:グループ」のみ権限を与え、「以外」は全く与えないのが良いと思います。


> ★その上で、"/var/www/html"にFTPで直接ファイルを転送しようとすると、
>  所有者の違いから書き込みできなくなるのはどうすればよいのでしょうか?


ここは難しい質問ですね。
管理者がアップロードする事を一元管理し、「root」権限で行うのが通常です。
「/var/www/html」はそのサイトの基盤となる公開ディレクトリの為。

どうしても複数で行いたいのであれば、「apache」ユーザを共有し、ログインディレクトリを"/var/www/html"にすれば可能ではないでしょうか?
(行った事がないので確信は持てませんが・・・)
故に、Webページのサービスで稼動する「apache」を共有させる事自体がセキュリティ的に問題ですけど・・・

やはり、前者の管理者がアップロードする事が一番望ましいと思います。
 Re: FTPでの基本的なユーザー権限・パーミッションについて ( No.4 )
日時: 2007/07/07 01:07
名前: ほうせい

管理者様

ご返答ありがとうございます。

> セキュリティ的にも"apache:apache"にしておくべきです。
> また、パーミッションもきちんとしておかないと意味がありませんので下記に記します。


ご説明ありがとうございます。
そのように設定するようにしてみます。

> 管理者がアップロードする事を一元管理し、「root」権限で行うのが通常です。

これは「rootでFTPアップロードする」ということでしょうか?

どうも私の問題はFTPにあるのかもしれません。

もう少し質問しようかと思ったのですが、問題がどこにあるのか
質問者の私が理解できてないのでLinuxのことをもう少し勉強してきます。

ありがとうございました。
 Re: FTPでの基本的なユーザー権限・パーミッションについて ( No.5 )
日時: 2007/07/07 08:34
名前: 管理者

> これは「rootでFTPアップロードする」ということでしょうか?
>
> どうも私の問題はFTPにあるのかもしれません。


rootでFTP利用は危険ですのでSSH(SCP)で行います。

  参照:http://kajuhome.com/winscp.shtml
 Re: FTPでの基本的なユーザー権限・パーミッションについて ( No.6 )
日時: 2007/07/07 21:31
名前: ほうせい

管理者さま、いつもお世話になっております。

> rootでFTP利用は危険ですのでSSH(SCP)で行います。
ありがとうございます。しかし今回はFTPでの利用のみを考えています。

あれから自分なりにいろいろ調べて、現在は以下のように設定して動作しております。
結局apache側から書き込めない問題はSuexecUserGroupを利用することにしました。

グループ 「webuser」作成。
バーチャルホスト一つ追加するごとに1ユーザー追加、ここでは「virtual」とします。
ユーザー「virtual」はグループ「webuser」に追加します。

<VirtualHost *:80>
  ServerName virtual.com
  SuexecUserGroup virtual webuser
  DocumentRoot /home/virtual/public_html
</VirtualHost>

<VirtualHost *:80>
  ServerName virtual2.com
  SuexecUserGroup virtual2 webuser
  DocumentRoot /home/virtual2/public_html
</VirtualHost>

......

セキュリティーの面で大変参考になりました。
色々ご指導していただきありがとうございました。

■ その他

ページ先頭へ


Copyright(©)2004-2018 First home server construction. All Right Reserved.