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>
......
セキュリティーの面で大変参考になりました。 色々ご指導していただきありがとうございました。
|