Heim  >  Artikel  >  Backend-Entwicklung  >  Dateiberechtigungsmethode, wenn PHP unter Linux ausgeführt wird

Dateiberechtigungsmethode, wenn PHP unter Linux ausgeführt wird

怪我咯
怪我咯Original
2017-06-16 10:39:181696Durchsuche

Der folgende Editor bringt Ihnen einen Artikel zur Erläuterung der Dateiberechtigungen, wenn PHP unter Linux ausgeführt wird. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor, um einen Blick darauf zu werfen

1. Dateiberechtigungen und Eigentümerschaft

1. , kann durch Zahlen ersetzt werden, sodass durch Addieren und Subtrahieren von Zahlen eine Zahl zur Identifizierung der Berechtigungen dieser Datei verwendet werden kann. Beispielsweise bedeutet 7=4+2+1, dass es drei Berechtigungen zum Lesen, Schreiben und Ausführen gibt , 6=4+ 2. Dies bedeutet, dass Lese- und Schreibberechtigung, aber keine Ausführungsberechtigung usw. vorhanden sind.

2. Rbac-Berechtigungsverwaltung der Lenovo-Webanwendung usw. Dort ist auch die Benutzerberechtigungsverwaltung unter Linux. Benutzer haben einen Benutzernamen und eine Benutzergruppe. Im Allgemeinen wird beim Erstellen eines Benutzers auch eine Gruppe erstellt, zu der der Benutzer mit demselben Namen gehört.

Melden Sie sich zunächst mit dem Root-Konto an und erstellen Sie ein Verzeichnis und eine Datei

#新建目录
mkdir abc
#新建文件
touch abc.txt
#查看
ls -all

Wenn Sie Überprüfen Sie es, Sie werden Folgendes finden:

#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

Schauen Sie sich zuerst den blauen Teil oben an. Die erste Ziffer ist die Kennung. Entfernen Sie die erste Ziffer und trennen Sie sie alle drei Ziffern dahinter, mit abc-Ordnern. Zum Beispiel: d |. r-x | ) und andere besitzen rx (5 ).

In ähnlicher Weise ist der rote Teil in der Datei oben der Name des Besitzers und der Name der Gruppe, zu der er gehört. Das heißt, der Besitzer des ABC-Ordners ist root und die Gruppe, zu der er gehört ist root. Zu diesem Zeitpunkt:

a. Wenn der Root-Benutzer auf den ABC-Ordner zugreift, entspricht er dem Besitzer und verfügt über 7 Berechtigungen.

b Wenn eine neue Benutzername-Testbenutzergruppe Root ist. Der Zugriff auf den Ordner „abc“ entspricht dem Zugriff auf eine Gruppe mit den Berechtigungen 5

c. Wenn ein neuer Benutzername testet und die Benutzergruppe auf den Ordner „abc“ zugreift, entspricht dies dem Zugriff auf andere mit den Berechtigungen 5

2. Die Rolle jeder Dateiberechtigung

Ich wollte es ursprünglich testen und darüber sprechen, aber es ist zu mühsam, also lasst uns einfach darüber reden die Ergebnisse. Sie können selbst einen neuen Benutzer erstellen und dann die Berechtigungen ändern, um ihn selbst zu testen.

1. Verzeichnis

a. b. Dateien im Verzeichnis anzeigen, d. h. ls-Befehl, die erforderliche Berechtigung ist Leseberechtigung (r)

c. Ordner/Dateien im Verzeichnis erstellen und löschen, d. h. mkdir/touch naming , erforderliche Berechtigungen sind Schreibberechtigungen (w)

Das Verzeichnis wirkt sich übrigens nur auf die nächste Ebene aus und hat keinen Einfluss auf Generationen. Wenn abc beispielsweise keine w-Berechtigung hat , aber sub hat die Berechtigung w. Sie können Dateien in sub erstellen. Natürlich muss auch abc vorhanden sein, wird aber nur von sub beeinflusst.

Im Allgemeinen erhalten unsere Verzeichnisse 5 (rx)-Berechtigungen, bei denen es sich um Lese- und Ausführungsberechtigungen handelt. Nur Verzeichnisse wie das Hochladen von Bildern oder das Caching, die erstellt werden müssen, erhalten 7 (rwx)-Berechtigungen

2. Datei

a. Die erforderliche Berechtigung ist Leseberechtigung (r). b. Dateiänderungen können mit dem Befehl cat/vim geöffnet und gespeichert werden. Die erforderlichen Berechtigungen sind Schreibberechtigungen (w)

c usw., die erforderlichen Berechtigungen sind Für die Ausführungsberechtigung (x)

Hier muss erklärt werden, dass PHP (oder Shell usw.), unabhängig davon, ob es sich um eine Befehlszeilenausführung oder eine Webausführung handelt, als Ausführung bezeichnet wird. Es liest die Datei tatsächlich und analysiert sie im PHP-Kernel, sofern Sie über die Leseberechtigung (r) verfügen.

Im Allgemeinen erhalten unsere Dateien 4 (r)-Berechtigungen, also Leseberechtigungen. Nur Protokolle, Caches usw., die Inhalte in die Datei schreiben müssen, erhalten 6 (rx)-Berechtigungen

Der Grund, warum die Berechtigungen 755, 777 und 644 oben nicht erwähnt werden, sondern nur eine einzelne Berechtigung, liegt darin, dass nicht garantiert werden kann, dass die Berechtigungen Ihres Website-Verzeichnisses mit dem während der Ausführung verwendeten Benutzer in Zusammenhang stehen, was bedeutet, dass die Benutzer während der Ausführung können Besitzer sein, es kann eine Gruppe oder ein anderer sein

3 Berechtigungen bei der Ausführung von PHP

Wir müssen es haben, wenn wir eine Verbindung herstellen Um sich über ssh unter Linux anzumelden, müssen Sie über einen Benutzernamen verfügen. Wenn PHP Dateien im Zusammenhang mit PHP verarbeiten möchte, muss es unter einem bestimmten Benutzernamen ausgeführt werden. Wo wird der Benutzer normalerweise erstellt oder definiert? ist beispielsweise installiert. Umgebungen wie Apache und Nginx erstellen standardmäßig Benutzer und Benutzergruppen. Sie können dies durch Anzeigen der Konfigurationsdatei bestätigen Oder sehen Sie sich den Prozess namentlich an:

#apache在配置文件httpd.conf
User www
Group www
#nginx在配置文件nginx.conf
user www www;

Am Beispiel von Apache wird Folgendes angezeigt:

#查看apache进程
ps -ef|grep httpd
#查看nginx进程
ps -ef|grep nginx
#查看php-pfm进行
ps -ef|grep php-pfm

Die erste Zeile zeigt, welcher Benutzer es ausführt, hauptsächlich unter Nicht-Root. Die obige Beschreibung besagt, dass der WWW-Benutzer den Apache-Prozess ausführt, um PHP-Dateien zu verarbeiten.

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

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

Das obige ist der detaillierte Inhalt vonDateiberechtigungsmethode, wenn PHP unter Linux ausgeführt wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn