Heim  >  Artikel  >  Backend-Entwicklung  >  Probleme bei der Linux-Berechtigungsverwaltung

Probleme bei der Linux-Berechtigungsverwaltung

零下一度
零下一度Original
2017-06-23 13:09:441210Durchsuche

Zunächst empfehle ich ein Video über Linux-Berechtigungen: Grundlegende Berechtigungen der Linux-Berechtigungsverwaltung. Nach dem Anschauen werden Sie es im Grunde verstehen.

1. Dateiberechtigungen und Eigentumsrechte

1. Der Einfachheit halber können sie durch Zahlen ersetzt werden Sie können eine Zahl verwenden, um die Berechtigungen dieser Datei zu identifizieren, indem Sie Zahlen addieren und subtrahieren. Beispielsweise bedeutet 7=4+2+1, dass sie über alle drei Berechtigungen verfügt: Lesen, Schreiben und Ausführen hat Lese- und Schreibberechtigungen, aber keine Ausführungsberechtigungen usw.

2. Rbac-Berechtigungsverwaltung für Lenovo-Webanwendungen usw. Es gibt auch eine Benutzerberechtigungsverwaltung unter Linux Benutzernamen und Benutzergruppen haben Im Allgemeinen wird beim Erstellen eines Benutzers gleichzeitig eine Gruppe mit demselben Namen erstellt, zu der der Benutzer gehört.

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

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

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

#d开头的为目录,-开头为文件,还有l开头的为软链接等

Schauen Sie sich zunächst den blauen Teil an. Entfernen Sie die erste Ziffer und trennen Sie danach alle drei Ziffern: r-x | r-x

Der ABC-Ordner gibt also an, dass der Besitzer rwx (7) besitzt, die Gruppe rx (5) und andere 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 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 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. 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 es als Ausführung bezeichnet wird, egal ob PHP über die Befehlszeile ausgeführt wird (ähnlich wie die Ausführung von php abc.php) oder auf der Webseite ausgeführt wird. Es liest die Datei tatsächlich und analysiert sie im PHP-Kernel. Solange Sie also über eine Leseberechtigung (r) verfügen, benötigen Sie beispielsweise für abc.sh eine Ausführungsberechtigung (x), wenn Sie ./abc.sh direkt ausführen ), aber für die Ausführung des Befehls sh abc.sh ist eine Leseberechtigung (r) erforderlich.

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 Der Benutzer kann während der Ausführung Eigentümer sein, kann eine Gruppe oder ein anderer sein

3. Berechtigungen bei der Ausführung von PHP

Wir verbinden uns mit Linux über ssh selbst Sie müssen über einen Benutzernamen verfügen, um sich anzumelden. Wenn PHP PHP-bezogene Dateien verarbeiten möchte, wird es auch unter einem bestimmten Benutzer betrieben. Wo wird der Benutzer normalerweise bei der Installation der PHP-Umgebung erstellt? Beispielsweise erstellen Apache, Nginx und andere Umgebungen standardmäßig Benutzer und Benutzergruppen, und dieser Benutzer wird zum 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 sehen Sie sich den Prozess über den Befehl an:

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

Am Beispiel von Apache wird Folgendes angezeigt:

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

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

Das obige ist der detaillierte Inhalt vonProbleme bei der Linux-Berechtigungsverwaltung. 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