Heim  >  Artikel  >  Backend-Entwicklung  >  Welche Methoden gibt es zum Steuern von PHP-Dateiberechtigungen bei der Ausführung unter Linux?

Welche Methoden gibt es zum Steuern von PHP-Dateiberechtigungen bei der Ausführung unter Linux?

不言
不言Original
2018-07-23 17:49:401451Durchsuche

Welche Arten von Dateiberechtigungen gibt es in PHP? Welche Methoden gibt es zum Steuern von Dateiberechtigungen beim Ausführen von Dateien unter Linux unter PHP? Im folgenden Artikel werde ich Ihnen die Dateiberechtigungsmethode vorstellen, wenn PHP unter Linux ausgeführt wird.

1. Dateiberechtigungen und Eigentumsrechte

1. Dateien können der Einfachheit halber durch Addition und Subtraktion von Zahlen ersetzt werden nur eine Zahl. Identifiziert die Berechtigungen dieser Datei, zum Beispiel 7=4+2+1, was bedeutet, dass sie über drei Berechtigungen verfügt: Lesen, Schreiben und Ausführen; 6=4+2, was bedeutet, dass sie über Lesen, Schreiben und Ausführen verfügt Berechtigungen usw.

2. RBAC-Berechtigungsverwaltung für Lenovo-Webanwendungen usw. Unter Linux gibt es im Allgemeinen auch Benutzernamen und Benutzergruppen Benutzer wird gleichzeitig eine Gruppe mit demselben Namen erstellt.

Melden Sie sich zuerst mit dem Root-Konto an und erstellen Sie nach Belieben ein Verzeichnis und eine Datei

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

Wenn Sie es überprüfen, werden Sie 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 das Blau an Teil oben, die erste Ziffer ist die Kennung, entfernen Sie die erste Ziffer und trennen Sie sie danach alle drei Ziffern, am Beispiel des abc-Ordners: r-x |. Der Ordner „abc“ bedeutet also, dass der Eigentümer rwx (7) besitzt, die Gruppe rx(5) und die anderen 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 Eigentümer und verfügt über 7 Berechtigungen.

b Wenn ein neuer Benutzername die Testbenutzergruppe ist. Der Zugriff auf den Ordner „abc“ entspricht dem Zugriff auf eine Gruppe mit Berechtigungen von 5

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

2. Die Rolle jeder Dateiberechtigung

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

1. Verzeichnis

a. Geben Sie das Verzeichnis ein, d. h. cd-Befehl, die erforderliche Berechtigung ist die Ausführungsberechtigung (x)

b. ls-Befehl, die erforderlichen Berechtigungen sind Leseberechtigungen (r)

c. Erstellen und löschen Sie Ordner/Dateien im Verzeichnis mit dem Namen mkdir/touch, und die erforderlichen Berechtigungen sind Schreibberechtigungen (w)

Das Verzeichnis wirkt sich übrigens nur auf die nächste Ebene aus, nicht auf die Generation. Es ist wie ein Verzeichnis abc/sub/. Wenn abc keine w-Berechtigung hat, sub jedoch eine w-Berechtigung, können Sie Dateien in sub erstellen Natürlich benötigt abc auch die Berechtigung x, sonst können Sie nicht eintreten, geschweige denn erstellen, aber solange Sie eintreten können (durch Wechseln des Root-Administrators), sind Sie nicht mehr von abc betroffen. nur sub.

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. Um die Datei zu öffnen, können Sie sie mit dem Befehl cat/vim öffnen.

b Die Datei können Sie mit dem Befehl cat/vim öffnen und speichern. Die erforderlichen Berechtigungen sind Schreibberechtigungen (w)

c. Führen Sie die Datei direkt aus./abc.out usw Berechtigungen sind Ausführungsberechtigungen (x)

Was hier erklärt werden muss, ist, dass PHP (oder Shell usw.) tatsächlich als Ausführung bezeichnet wird die Datei und analysiert sie im PHP-Kernel. Solange Sie also über Leseberechtigung (r) verfügen, kann sie .

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, Gruppen oder andere sein

3 Berechtigungen, wenn PHP ausgeführt wird

Wenn wir über SSH eine Verbindung zu Linux herstellen, müssen wir einen Benutzernamen haben, um uns anzumelden. In ähnlicher Weise wird die Verarbeitung von PHP-bezogenen Dateien auch unter einem bestimmten Benutzer durchgeführt. Wo wird der Benutzer normalerweise bei der Installation der PHP-Umgebung erstellt? Apache, Nginx und andere Umgebungen erstellen beispielsweise Benutzer und Benutzergruppen Standardmäßig wird dieser Benutzer beim Lesen von PHP verwendet. Sie können dies bestätigen, indem Sie die Konfigurationsdatei anzeigen:

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

oder den Vorgang anzeigen, indem Sie Folgendes benennen: Apache als Beispiel. Es 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-Benutzern. Die obige Beschreibung besagt, dass der WWW-Benutzer den Apache-Prozess ausführt, um PHP-Dateien zu verarbeiten.

Hier ist zu beachten, dass bei der Installation von php-pfm bei der Ausführung von php-pfm auch der Benutzername und die Benutzergruppe überprüft werden sollten. (Es wurde nicht installiert, daher habe ich es nicht geübt)

Die Standardeinstellung kann andere Benutzer und Benutzergruppen wie „Niemand“ oder „Apache“ sein. Das obige wurde geändert. Zu diesem Zeitpunkt sollten Sie ls-all im Website-Verzeichnis verwenden, um zu bestätigen, zu welchem ​​Benutzer die Website-Dateien gehören. Lassen Sie es uns in mehreren Situationen erklären:

a 🎜>

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

Der Website-Eigentümer ist www und der PHP-Executor ist auch www, was bedeutet, dass er im obigen Systemordner über die Eigentümerberechtigung 55 verfügt. Dies funktioniert überhaupt nicht mit 7 (rwx)-Berechtigungen ausgeführt werden.

b. Wenn der Websitebesitzer so ist:

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的方式运行时文件系统权限问题及解决方法

Das obige ist der detaillierte Inhalt vonWelche Methoden gibt es zum Steuern von PHP-Dateiberechtigungen bei der Ausführung unter Linux?. 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