一般的な共有 Linux ウェブホストの権限

一般的な共有 Linux ウェブホストの権限

一般的な共有 Linux Web ホスティング アカウントのファイル権限を理解しようとしています。ファイルまたはディレクトリの OWNER GROUP および PUBLIC エンティティに rwx 権限を設定する方法は知っています。よくわからないのは、通常、アクセス権限がどこにマップされるかということです。次のように推測しています。

ユーザー権限は...うーん...よく分かりません
グループ権限は、サーバー上で実行されているPHPやその他のスクリプトが実行できることに影響します。
他の(PUBLICまたはWORLDと呼ばれることもあります)権限は、Webサイト訪問者のUAが実行できることに影響します。

これについて私の理解を訂正、確認、または拡張してくれる人はいますか?

説明:

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

答え1

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

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 は BROWSER によるアクセスをブロックします。

答え2

かなり混同してしまいましたね。

ugougo は でありusergroupotherはありませんowner。所有者はユーザーであり、通常は最も多くの権限を保持します。

GROUP権限は、サーバー上で実行されているPHPやその他のスクリプトが実行できることに影響します。

グループの権限は、何ができるか (読み取り、書き込み、実行) には影響しませんが、誰がそれを実行できるかには影響します。ユーザーについても同様です。

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

ユーザーは所有者ですが、oに使用されますother。これは、いわゆるパブリックです。繰り返しますが、重要なのは「何ができるか」ではなく「誰ができるか」です。

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

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

すべてのファイルはユーザーとグループによって所有されています。 でそれらを表示します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 に属します。ただし、メールと stuff はグループであり、ユーザーと同一ではありません。

更新(質問の更新後):

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

そうですね、これやあれを行うのはスクリプトの許可ではありません。常にスクリプトを実行するユーザーの許可が必要です。

スクリプトを実行するには、ユーザーがスクリプトを読み取ることができなければなりません。つまり、スクリプトはディスクから読み取られ、メモリに格納されて実行されます。読み取らずにスクリプトを実行することはできません。

ファイルに書き込むには、スクリプトやプログラムではなく、ディレクトリへの書き込み権限がユーザーに必要です。

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

答え3

共有ホスティングについてお話いただいたので、私がよく利用している共有ホスティング業者について、興味深い詳細をいくつか追加させてください。私の経験から言うと、このような設定は共有ホスティング環境では珍しいことではありません。

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

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

セキュリティ上の懸念から、ホスト上のすべてのユーザーを同じプライマリ グループにまとめるわけではないと思います。

これで、自分のファイルを読むことはできますが、どのグループも読むことはできません(グループは ですnobody)。Apacheはどうやってファイルを読むのでしょうか?
Apacheは自分のユーザーアカウントでインスタンスを実行してファイルを読みます。たとえば、PHPでは次のように実行されます。CGI モードあなたのアカウントでファイルを実行します。

したがって、権限の最初のオクテットは、システム全体に関係するものです。これは、あなたと Web サイトの訪問者の両方が (いわば) ファイルに対して実行できる操作を定義します。グループは無視できます。そして、その他のユーザーに対する最後のオクテットは、所有者の部分とほぼ同等です。

関連情報