Linuxの権限管理の問題

Jun 23, 2017 pm 01:09 PM
php 書類 権限

まず、Linux 権限に関するビデオをお勧めします。Linux 権限管理の基本的な権限については、非常にわかりやすく説明されています。

1. ファイルの権限と所有権

1. ファイルには 3 種類の権限があり、このように数字を足したり引いたりすることで識別できます。ファイルのアクセス許可。たとえば、7=4+2+1 は、読み取り、書き込み、実行の 3 つのアクセス許可があることを意味します。6=4+2 は、読み取りと書き込みのアクセス許可はあるが、実行のアクセス許可がないことを意味します。

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

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

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

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

#d开头的为目录,-开头为文件,还有l开头的为软链接等
ログイン後にコピー

まず上の青い部分を見てください、最初の桁はabc フォルダーを例として、最初の数字とその後の 3 桁の区切りを削除します。つまり、abc フォルダーは所有者が rwx (7) であることを意味します。グループは rx (5) を所有し、他のグループは rx (5) を所有します。

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

a. root ユーザーが abc フォルダーにアクセスする場合、それは 7 つの権限を持つ所有者と同等です。b. 新しいユーザー名が root の場合、abc フォルダーにアクセスします。新しいユーザー名テスト ユーザー グループが abc フォルダーにアクセスする場合は、他のグループと同等になり、権限は 5

になります。ファイルの各パーミッションの確認

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

1. ディレクトリ

a. ディレクトリを入力します (つまり cd コマンド、必要な権限は実行権限 (x) です) b. ディレクトリ内のファイルを表示します (つまり、ls コマンド)、必要な権限は読み取り権限 (r) c. ディレクトリ、つまり mkdir/touch 内のフォルダー/ファイルを作成および削除します。必要な権限は書き込み権限です (w)

ちなみに、ディレクトリは次のレベルにのみ影響し、世代には影響しません。ディレクトリ abc/sub/ と同様に、abc に w 権限がないが、sub に w 権限がある場合、sub にファイルを作成できます。もちろん、abc にも x 権限が必要です。そうでない場合は、入力できません。単独で作成しますが、アクセスできる限り (ルート管理者の方法を切り替えることができます)、abc の影響は受けなくなり、sub の影響のみを受けます。

通常、ディレクトリには読み取りおよび実行権限である 5 (rx) 権限が与えられます。画像のアップロードやキャッシュなど、作成する必要があるディレクトリのみに 7 (rwx) 権限が与えられます。 a. ファイルを開くには、cat/vim コマンドを使用して開くことができます。必要な権限は読み取り権限 (r) です

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

c. ファイルの実行は./abc.outなどで直接実行可能 必要な権限は実行権限(x)

ここで説明が必要なのは、phpがコマンドラインから実行 (php abc.php の実行と同様) または Web 側で実行 (実行という名前) は、実際にファイルを解析のために PHP カーネルに読み込みます。そのため、読み取り権限 (r) がある限り、たとえば、abc.sh の場合、./abc.sh を直接実行する場合は実行権限 (x) が必要ですが、sh abc.sh コマンドを実行するには読み取り権限 (r) が必要です。

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

上記の理由。 755、777、644 の権限はありませんが、Web サイトのディレクトリの権限は、実行中に使用されるユーザーと何らかの関係があるとは保証できないため、単一の権限のみです。つまり、実行中に使用されるユーザーは、所有者、グループ、またはその他の可能性があります

3. PHP 実行時の権限

ssh 経由で Linux に接続する場合、ログインするためのユーザー名が必要です。同様に、PHP がPHP 関連のファイルを処理する場合、それは特定のユーザーの下で動作する必要があります。ユーザーはどこで作成または定義されますか? 通常、PHP 環境をインストールするときにユーザーが作成されます。デフォルトでは、ユーザー グループが含まれており、このユーザーは 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
ログイン後にコピー
を使用してプロセスを表示します。たとえば、次のように表示されます:
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文件。一般来说apache/nginx会以root来启动主线程,然后fork出子线程来处理具体的业务,而子进程在创建时会根据配置文件中的用户名和用户组通过setuid和setgid命令来设置有效用户名和有效用户组。需要注意的是“有效”这两个字,例如,某个用户名为test,其所属组test,而apache中配置文件中设置的用户名为test,但是用户组设置为abc,这时就可能很疑惑了,那组到底是按照用户名所属的组还是配置文件中设置的组呢?答案是设置的,因为通过setgid变更了,具体谷歌百度搜索“有效用户”、“实际用户”、“setuid函数”等关键字。

这里需要注意的是,如果有安装php-pfm,则应该还需要查看php-pfm执行时的用户名及用户组。(没有安装,所以没实践过)

默认的可能是nobody或者apache等其它的用户及用户组,上方是已修改过的。此时应该在网站目录中用ls-all来确认下网站文件是属于哪个用户,分几种情况说明下吧:

a、例如网站所有者是这样:

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
...
ログイン後にコピー

网站所有者为www,而php执行者也为www,那说明是具有owner权限,上方system文件夹中755中的55根本不起作用,只要是7xx就会以7(rwx)的权限来执行。

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

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的用户和用户组,二是修改网站文件的所有者和所有组这两个方向来修改,以确保网站的安全。

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

以上がLinuxの権限管理の問題の詳細内容です。詳細については、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)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles