web-dev-qa-db-ja.com

一般的な共有LinuxWebホストの権限

私は典型的な共有Linuxウェブホスティングアカウントのファイルパーミッションを理解しようとしています。ファイルまたはディレクトリのOWNERGROUPおよびPUBLICエンティティにrwxアクセス許可を設定する方法を知っています。私にはあまり明確ではありませんが、通常、アクセス許可はどこにマップされますか?私はそれを推測しています:

[〜#〜] user [〜#〜]パーミッションは何に影響しますか...うーん...ここではわかりません
[〜#〜] group [〜#〜]パーミッションは、PHPまたはサーバーで実行されている他のスクリプトが実行できること)に影響します
[〜#〜] other [〜#〜](PUBLICまたはWORLDと呼ばれることもありますか?)権限は、Webサイト訪問者のUAが実行できることに影響します

誰かがこれについての私の理解を修正、確認、または拡大できますか?

明確化:

サーバー上で実行されるPHPスクリプトにファイルへの書き込み権限を許可したい場合、その権限はUSER、GROUP、またはOTHERで指定されますか?Webサイトの訪問者を拒否したい場合ブラウザでディレクトリの内容を確認する場合、その権限はディレクトリのUSER、GROUP、またはOTHERで指定されますか?

5
JannieT

いくつかのキーワードの拳を指定しましょう。

FTPUSER   = you with your ftp client
WWWDAEMON = program (servers) that's responsible for processing your web pages and scripts 
WWWUSER   = user as which the WWWDAEMON processes your pages
BROWSER   = Someone looking at your website with a browser
FILES     = files that reside in your www/ftp site
yourgroup = group that your FTPUSER belongs to and WWWUSER does not

Ftpプログラムを使用してFTPUSERとしてファイルにアクセスします

-rwxr-xr-x  2 FTPUSER yourgroup   72 2012-01-18 13:56 somescript.php

WWWDAEMONユーザーWWWUSERはあなた(FTPUSER)ではないため、スクリプトをreadしようとすると、他のアクセス許可が尊重されます。 (スクリプトをFTPUSERとして実行するホスティングサイトがあります)。他の読み取りおよび実行権限を削除すると、somescript.phpの使用がブロックされます

# this scipt is unusable trough a browser
-rwxr-x---  2 FTPUSER yourgroup   72 2012-01-18 13:56 somescript.php

ワールド書き込み可能なアクセス許可でディレクトリを作成すると、スクリプトでそこに書き込むことができますが、そのディレクトリを何らかの方法で保護しない限り(.htaccessを使用するか、wwwディレクトリの外に配置するなど)、ブラウザがこれらのファイルに直接アクセスできることを意味する場合もあります。

BROWSER contacts WWWDAEMON which runs as WWWUSER so 
BROWSER can see everything processed by WWWDAEMON that the WWWUSER can. 

処理済みとは、WWWDAEMONが.htaccessまたは同様のブロックアクセスも尊重することも意味します。

アドバイスは、say phpwritedirを作成し、それにa + rwx権限を与えることです。追加 .htaccessそこにファイル(ホスティングサービスで許可されている場合)

deny from all

これがWWWUSERとして実行されるスクリプトは引き続きそのディレクトリを使用できますが、WWWDAEMONはそのディレクトリへのブラウザアクセスをブロックします。

3
Manwe

あなたはそれをかなり混乱させました。

ugougoはusergroup、およびotherです。ownerではありません。所有者はユーザーであり、通常、ほとんどの権利を保持しています。

GROUP権限は、サーバーで実行されているPHPまたは他のスクリプトが実行できること

グループのアクセス許可は、実行できる操作(読み取り、書き込み、実行)には影響しませんが、実行できるユーザーには影響しません。ユーザーについても同じです。

USER(PUBLICと呼ばれることもありますか?)権限は、Webサイト訪問者のUAが実行できることに影響します

ユーザーは所有者ですが、ootherに使用されます。これは、パブリックと呼ばれるものです。そして再び-それは誰ができるかであり、何ができるかではありません。

ugoを使用する場合は、省略形chmodを使用できます。これは、数値コードよりも簡単です。

  chmod ug+w sample1
  chmod go-r sample2 
  chmod g=w  sample3 
  • sample1:ユーザーとグループに書き込み権限を追加する
  • sample2:グループなどから読み取り権限を削除する
  • sample3:書き込みのグループ権限を設定する

すべてのファイルは、ユーザーとグループによって所有されます。 ls -lでそれらを参照してください。例:

ls -l /var
insgesamt 12
drwxr-xr-x  2 root root   592 2012-01-12 08:02 backups
drwxr-xr-x 28 root root   776 2011-08-18 05:12 cache
drwxrwxrwt  2 root root    48 2010-06-22 01:46 crash
drwxr-xr-x  2 root root  3704 2010-06-05 22:01 games
drwxr-xr-x 84 root root  2296 2011-10-16 13:25 lib
drwxrwsr-x  2 root staff   48 2007-10-08 12:47 local
drwxrwxrwt  3 root root    80 2012-01-19 08:03 lock
drwxr-xr-x 22 root root  5992 2012-01-19 08:01 log
drwxrwsrwt  2 root mail    72 2012-01-18 07:56 mail

/ varのリストの一部。ほとんどのディレクトリ(d ...)は、グループとしてユーザーでもあるroot.rootに属しています。ただし、メールなどはグループであり、ユーザーと同一ではありません。

更新(質問の更新後):

サーバー上で実行されるPHPスクリプトにファイルへの書き込み権限を許可したい場合、その権限はUSER、GROUP、またはOTHERで指定されますか?Webサイトの訪問者を拒否したい場合ブラウザでディレクトリの内容を確認する場合、その権限はディレクトリのUSER、GROUP、またはOTHERで指定されますか?

ええと、これやあれをするのはスクリプトの許可ではありません。スクリプトを実行するのは常にユーザーの許可です。

スクリプトを実行するには、ユーザーがスクリプトを読み取れる必要があります。つまり、スクリプトをディスクから読み取ってメモリに入れ、実行する必要があります。読まないと実行できません。

ファイルに書き込むには、ユーザーは、スクリプトやプログラムではなく、ディレクトリに書き込む権限を持っている必要があります。

ディレクトリに書き込むプログラムがサーバーである場合、通常、Web内の匿名ユーザーからではなく、「www」などの特別なユーザーから起動されます。

3
user unknown

あなたは共有ホスティングについて話しているので、私がよく一緒に仕事をしている共有ホスティング業者についての楽しい詳細をいくつか追加しましょう。私の経験から、このような設定は共有ホスティング環境では珍しいことではありません。

共有ホスティング環境では、同じホストを共有しているユーザーが複数いることも珍しくありません。当然、それらはすべてユーザーアカウントを持っています。

私のユーザーアカウントは123456-user1かもしれません。これで、プライマリグループがnobodyまたはnogroupに設定され、生成したすべての新しいファイルとフォルダーが123456-user1:nobodyに属します。

彼らは、私が想定するセキュリティ上の懸念のために、ホスト上のすべてのユーザーを同じプライマリグループに投げ込むだけではありません。

これで、ファイルを読み取ることができますが、グループはファイルを読み取ることができません(グループはnobodyであるため)、Apacheはどのようにファイルを読み取るのでしょうか。
Apacheは、独自のユーザーアカウントでインスタンスを実行して読み取ります。たとえば、PHPの場合、アカウントでファイルを実行するために CGIモード で実行されます。

したがって、権限の最初のオクテットは、システム全体に関連するものです。それはあなたとウェブサイトの訪問者(いわば)の両方がファイルに対して何ができるかを定義します。グループは無視できます。そして、他の人の最後のオクテットは、所有者の部分と幾分同等です。

2
Der Hochstapler