私は典型的な共有Linuxウェブホスティングアカウントのファイルパーミッションを理解しようとしています。ファイルまたはディレクトリのOWNERGROUPおよびPUBLICエンティティにrwxアクセス許可を設定する方法を知っています。私にはあまり明確ではありませんが、通常、アクセス許可はどこにマップされますか?私はそれを推測しています:
[〜#〜] user [〜#〜]パーミッションは何に影響しますか...うーん...ここではわかりません
[〜#〜] group [〜#〜]パーミッションは、PHPまたはサーバーで実行されている他のスクリプトが実行できること)に影響します
[〜#〜] other [〜#〜](PUBLICまたはWORLDと呼ばれることもありますか?)権限は、Webサイト訪問者のUAが実行できることに影響します
誰かがこれについての私の理解を修正、確認、または拡大できますか?
サーバー上で実行されるPHPスクリプトにファイルへの書き込み権限を許可したい場合、その権限はUSER、GROUP、またはOTHERで指定されますか?Webサイトの訪問者を拒否したい場合ブラウザでディレクトリの内容を確認する場合、その権限はディレクトリのUSER、GROUP、またはOTHERで指定されますか?
いくつかのキーワードの拳を指定しましょう。
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はそのディレクトリへのブラウザアクセスをブロックします。
あなたはそれをかなり混乱させました。
ugo
ugoはuser
、group
、およびother
です。owner
ではありません。所有者はユーザーであり、通常、ほとんどの権利を保持しています。
GROUP権限は、サーバーで実行されているPHPまたは他のスクリプトが実行できること
グループのアクセス許可は、実行できる操作(読み取り、書き込み、実行)には影響しませんが、実行できるユーザーには影響しません。ユーザーについても同じです。
USER(PUBLICと呼ばれることもありますか?)権限は、Webサイト訪問者のUAが実行できることに影響します
ユーザーは所有者ですが、o
はother
に使用されます。これは、パブリックと呼ばれるものです。そして再び-それは誰ができるかであり、何ができるかではありません。
ugo
を使用する場合は、省略形chmod
を使用できます。これは、数値コードよりも簡単です。
chmod ug+w sample1
chmod go-r sample2
chmod g=w 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」などの特別なユーザーから起動されます。
あなたは共有ホスティングについて話しているので、私がよく一緒に仕事をしている共有ホスティング業者についての楽しい詳細をいくつか追加しましょう。私の経験から、このような設定は共有ホスティング環境では珍しいことではありません。
共有ホスティング環境では、同じホストを共有しているユーザーが複数いることも珍しくありません。当然、それらはすべてユーザーアカウントを持っています。
私のユーザーアカウントは123456-user1
かもしれません。これで、プライマリグループがnobody
またはnogroup
に設定され、生成したすべての新しいファイルとフォルダーが123456-user1:nobody
に属します。
彼らは、私が想定するセキュリティ上の懸念のために、ホスト上のすべてのユーザーを同じプライマリグループに投げ込むだけではありません。
これで、ファイルを読み取ることができますが、グループはファイルを読み取ることができません(グループはnobody
であるため)、Apacheはどのようにファイルを読み取るのでしょうか。
Apacheは、独自のユーザーアカウントでインスタンスを実行して読み取ります。たとえば、PHPの場合、アカウントでファイルを実行するために CGIモード で実行されます。
したがって、権限の最初のオクテットは、システム全体に関連するものです。それはあなたとウェブサイトの訪問者(いわば)の両方がファイルに対して何ができるかを定義します。グループは無視できます。そして、他の人の最後のオクテットは、所有者の部分と幾分同等です。