ホームページ バックエンド開発 PHPチュートリアル Linux で実行するときに PHP ファイルのアクセス許可を制御する方法は何ですか?

Linux で実行するときに PHP ファイルのアクセス許可を制御する方法は何ですか?

Jul 23, 2018 pm 05:49 PM
phpファイルのアクセス許可

PHP のファイル権限にはどのような種類がありますか? Linux で PHP 上でファイルを実行するときにファイルのアクセス許可を制御する方法は何ですか?次の記事では、LinuxでPHPを実行する際のファイルパーミッションの方法を紹介します。

1. ファイルのパーミッションと所有権

1. ファイルには 3 種類のパーミッションがあります。便宜上、数字に置き換えることができます。このように、数字を足したり引いたりすることで、次のことができます。 1 つの数字だけ。このファイルの権限を示します。たとえば、7=4 2 1 は、読み取り、書き込み、実行の 3 つの権限があることを意味します。6=4 2 は、読み取りと書き込みの権限はあるが、実行権限がないことを意味します。

#2. Lenovo Web アプリケーションの rbac 権限管理など、Linux でもユーザー権限管理があります。ユーザーにはユーザー名とユーザー グループがあります。通常、ユーザーを作成するときは、グループを作成します。同じ名前のものが同時に作成されます。

まず root アカウントでログインし、新しいディレクトリとファイルを作成します

#新建目录
mkdir abc
#新建文件
touch abc.txt
#查看
ls -all
ログイン後にコピー

確認すると、次のようになります。

#d开头的为目录,-开头为文件,还有l开头的为连接等
drwxr-xr-x  2 root root 4096 Jun 6 10:23 abc
-rw-r--r--  1 root root  0 Jun 6 10:23 abc.txt
ログイン後にコピー

まず青い部分を見てください。上記では、最初の数字が識別子で、最初の数字を削除し、その後は 3 桁ごとに区切ります。例として abc フォルダーを取り上げます: d | rws | r-x | r-x

So abc フォルダーは、所有者が rwx (7) を所有し、グループが rx(5) を所有し、その他が rx(5) を所有することを意味します。

同様に、上のファイルの赤い部分は所有者名と所属グループ名、つまりabcフォルダの所有者はrootと所属グループです。ルートです。現時点:

a. root ユーザーが abc フォルダーにアクセスする場合、そのユーザーは所有者に相当し、7 つの権限を持ちます

b. 新しいユーザー名テスト ユーザー グループが root の場合abc フォルダへのアクセスは、権限 5

#c を持つグループと同等です。新しいユーザー名がテストされ、ユーザー グループが abc フォルダへのアクセスをテストする場合、権限 5

#2. 各ファイルのパーミッションの役割

本当はテストしながら説明したかったのですが、面倒だったので結果だけお伝えします。新しいユーザーを自分で作成し、権限を変更して自分でテストできます。

1. ディレクトリ

a. ディレクトリを入力します (例: cd コマンド)。必要な権限は実行権限 (x) です。

b. ディレクトリ内のファイルを表示します (例: cd コマンド)。 ls コマンド、必要な権限は読み取り権限 (r)

c. ディレクトリ内のフォルダー/ファイルの作成と削除、つまり mkdir/touch ネーミング、必要な権限は書き込み権限 (w)

ちなみに、次のディレクトリは次のレベルにのみ影響し、世代には影響しません。たとえば、ディレクトリ abc/sub/ です。abc に w 権限がなく、sub に w 権限がある場合、sub にファイルを作成できますもちろん、abc も必要です。x 権限を持っている場合は、作成はおろか、入ることもできませんが、(root 管理者を切り替えることで)入ることができる限り、abc の影響を受けなくなります。サブのみ。

通常、ディレクトリには読み取りおよび実行権限である 5 (rx) 権限が与えられます。画像のアップロードやキャッシュなど、作成する必要があるディレクトリのみに 7 (rwx) 権限が与えられます。

2. ファイル

a. ファイルを開くには、cat/vim コマンドを使用して開くことができます。必要な権限は読み取り権限 (r)

b. 変更するにはファイルを開くには、cat/vim コマンドを使用できます。 開いて保存します。必要な権限は書き込み権限です (w)

c. ファイルの実行。./abc.out などを直接実行できます。権限は実行権限(x)

ここで説明が必要なのは、PHP(またはシェルなど)をコマンドラインで実行するかWeb側で実行するかを実行と呼ぶことです。ファイルを読み込み、PHP カーネルで解析するため、読み取り権限 (r) がある限り、解析できます。

通常、ファイルには読み取り権限である 4(r) 権限が与えられます。ファイルにコンテンツを書き込む必要があるログ、キャッシュなどのみに 6(r​​x) 権限が与えられます。

755、777、および 644 のアクセス許可が上記で言及されておらず、単一のアクセス許可のみが記載されている理由は、Web サイト ディレクトリのアクセス許可が、実行中に使用されるユーザーに関連していることが保証できないためです。実行中のユーザーは所有者、グループ、その他の可能性があります

3. php 実行時の権限

ssh で Linux に接続するときにログインするためのユーザー名が必要です。同様に、php も次のことを行う必要があります。 PHP 関連ファイルの処理も、特定のユーザーの下で操作されます。ユーザーはどこで作成または定義されますか? 通常、PHP 環境のインストール時に作成されます。たとえば、Apache、nginx およびその他の環境では、デフォルトでユーザーとユーザー グループが作成されます。このユーザーは php を読み取るときに使用されます。構成ファイルを表示することで確認できます:

#apache在配置文件httpd.conf
User www
Group www
#nginx在配置文件nginx.conf
user www www;
ログイン後にコピー

または、名前を付けてプロセスを表示します:

#查看apache进程
ps -ef|grep httpd
#查看nginx进程
ps -ef|grep nginx
#查看php-pfm进行
ps -ef|grep php-pfm
ログイン後にコピー

Apache を例に取ると、次のように表示されます。

root   1663   1 0 09:14 ?    00:00:00 /www/wdlinux/apache/bin/httpd//主进程
www    1697 1663 0 09:14 ?    00:00:05 /www/wdlinux/apache/bin/httpd//子进程
www    1698 1663 0 09:14 ?    00:00:05 /www/wdlinux/apache/bin/httpd
ログイン後にコピー

最初の行は、主に非 root で実行しているユーザーを示します。上記の説明は、www ユーザーが Apache プロセスを実行して php ファイルを処理していることを示しています。

ここで注意したいのは、php-pfm がインストールされている場合は、php-pfm の実行時にユーザー名とユーザーグループも確認する必要があるということです。 (インストールしていないので実践していません)

デフォルトは他のユーザーやnobodyやapacheなどのユーザーグループになっている可能性があります。上記は修正済みです。このとき、Web サイトのファイルがどのユーザーに属しているかを確認するには、Web サイトのディレクトリで ls-all を使用する必要があります。いくつかの状況で説明しましょう:

a. たとえば、Web サイトの所有者は次のとおりです:

drwxr-xr-x  2 www www 4096 Jun 6 10:23 system
drwxr-xr-x  2 www www 4096 Jun 6 10:23 tmp
-rw-r--r--  1 www www  0 Jun 6 10:23 index.php
...
ログイン後にコピー

Web サイトの所有者は www で、php 実行プログラムも www です。これは、所有者の権限があることを意味します。上記のシステム フォルダー内の 755 のうち 55 はまったく機能しません。7xx である限り、機能します。 7 (rwx) 権限で実行されます。

b. Web サイト所有者が次のような場合:

drwxr-xr-x  2 test www 4096 Jun 6 10:23 system
drwxr-xr-x  2 test www 4096 Jun 6 10:23 tmp
-rw-r--r--  1 test www  0 Jun 6 10:23 index.php
...
ログイン後にコピー

网站所有者为test,所属组为www,而php执行者为www,执行组为www,那说明是说在同一组中,具有group权限,上方system文件夹中755中的7和5不起作用,只要是x5x就会以5(rx)的权限来执行。

c、如果网站所有者是这样:

drwxr-xr-x  2 test test 4096 Jun 6 10:23 system
drwxr-xr-x  2 test test 4096 Jun 6 10:23 tmp
-rw-r--r--  1 test test  0 Jun 6 10:23 index.php
...
ログイン後にコピー

网站所有者为test,所属组为test,而php执行者为www,执行组为www,那说明是说根本没什么关系,具有other权限,上方system文件夹中755中的75不起作用,只要是xx5就会以5(rx)的权限来执行。

所以不能简单的说修改权限为755,644什么的,还需要确认程序的执行者和网站的所有者才能确定权限。

目前好多集成环境为了省事(嗯,lanmpv3等),将php的执行权限和网站所在目录都设置为www,此时一般创建完目录后为755,创建文件后为644,当php执行时,起作用的目录权限为7(所有目录拥有创建删除权限)和文件权限6(所有文件具有写权限),这种是不是挺不安全的?正常应该是目录为5,文件为4,当有特殊需求时才将权限设为7。如果出现上方说的这种情况,修改的方法一是修改apache/nginx的用户和用户组,二是修改网站文件的所有者和所有组这两个方向来修改,以确保网站的安全。

以上,只是基础的权限说明。

相关推荐:

php以fastCGI的方式运行时文件系统权限问题及解决方法

以上がLinux で実行するときに PHP ファイルのアクセス許可を制御する方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPロギング:PHPログ分析のベストプラクティス PHPロギング:PHPログ分析のベストプラクティス Mar 10, 2025 pm 02:32 PM

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles