Quelles sont les méthodes pour contrôler les autorisations des fichiers php lors de l'exécution sous Linux ?

不言
Libérer: 2023-04-03 11:10:01
original
1454 Les gens l'ont consulté

Quels sont les types d’autorisations de fichiers en PHP ? Quelles sont les méthodes de contrôle des permissions des fichiers lors de l’exécution de fichiers sous Linux sous PHP ? Dans l'article suivant, je partagerai avec vous la méthode d'autorisation des fichiers lorsque PHP est exécuté sous Linux.

1. Autorisations et propriété des fichiers

1. Les fichiers ont trois types d'autorisations, ils peuvent être remplacés par des nombres, de cette façon, en ajoutant et en soustrayant des nombres. un seul numéro identifie les autorisations de ce fichier, par exemple 7=4+2+1, ce qui signifie qu'il a trois autorisations : lire, écrire et exécuter ; 6=4+2, ce qui signifie qu'il a lu, écrit et exécuté ; autorisations, etc.

2. Gestion des autorisations RBAC de l'application Web Lenovo, etc. Il existe également une gestion des autorisations des utilisateurs sous Linux. Les utilisateurs ont généralement des noms d'utilisateur et des groupes d'utilisateurs. utilisateur, un groupe du même nom sera créé en même temps.

Connectez-vous d'abord avec le compte root et créez un répertoire et un fichier à volonté

#新建目录
mkdir abc
#新建文件
touch abc.txt
#查看
ls -all
Copier après la connexion

Lorsque vous le cochez, vous trouverez :

#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
Copier après la connexion

Regardez dans la partie bleue ci-dessus, le premier bit est l'identifiant, supprimez le premier chiffre et séparez tous les trois chiffres par la suite. Prenez le dossier abc comme exemple : d | r-x | r-x

<. 🎜>, donc le dossier abc signifie que le propriétaire le possède rwx(7), le groupe possède rx(5), les autres possèdent rx(5).

De même, la partie rouge dans le fichier ci-dessus est le nom du propriétaire et le nom du groupe auquel il appartient. C'est-à-dire que le propriétaire du dossier abc est root et le groupe auquel il appartient. est racine. À ce moment :

a. Si l'utilisateur root accède au dossier abc, il est équivalent au propriétaire et dispose de 7 autorisations

b. Si un nouveau nom d'utilisateur est root. Accéder au dossier abc équivaut à un groupe, avec des autorisations de 5

c. Si un nouveau nom d'utilisateur test et que le groupe d'utilisateurs est test accède au dossier abc, cela équivaut à un autre, avec des autorisations de 5< 🎜. >

2. Le rôle de chaque autorisation de fichier

Au départ, je voulais le tester et l'expliquer, mais c'est trop compliqué, alors disons simplement les résultats. Vous pouvez créer vous-même un nouvel utilisateur puis modifier les autorisations pour le tester vous-même.

1. Répertoire

a. Entrez le répertoire, c'est-à-dire la commande cd, l'autorisation requise est l'autorisation d'exécution (x)

b. ls, les autorisations requises sont les autorisations de lecture (r)

c. Créer et supprimer des dossiers/fichiers dans le répertoire, c'est-à-dire nommés mkdir/touch, et les autorisations requises sont les autorisations d'écriture (w)

Au fait, le répertoire n'affecte que le niveau suivant, pas la génération. C'est comme un répertoire abc/sub/ Si abc n'a pas l'autorisation w, mais que sub a l'autorisation w, vous pouvez créer des fichiers dans sub. . Bien sûr, abc a également besoin Si vous disposez de x autorisations, sinon vous ne pourrez pas entrer, encore moins créer, mais tant que vous pouvez entrer (en changeant d'administrateur root), vous ne serez plus affecté par abc, seulement sous.

Généralement, nos répertoires recevront 5 autorisations (rx), qui sont des autorisations de lecture et d'exécution. Seuls les répertoires tels que le téléchargement d'images ou la mise en cache qui doivent être créés recevront 7 autorisations (rwx).

2. Fichier

a. Pour ouvrir le fichier, vous pouvez utiliser la commande cat/vim pour l'ouvrir. L'autorisation requise est l'autorisation de lecture (r)

b. le fichier, vous pouvez utiliser la commande cat/vim Ouvrir et enregistrer, les autorisations requises sont les autorisations d'écriture (w)

c. Exécution du fichier, vous pouvez exécuter directement ./abc.out, etc., le requis. les autorisations sont des autorisations d'exécution (x)

Ce qu'il faut expliquer ici, c'est que que PHP (ou shell, etc.) soit exécuté sur la ligne de commande ou côté Web, cela s'appelle exécution. le fichier et l'analyse dans le noyau PHP, donc tant que vous disposez de l'autorisation de lecture (r), il peut .

Généralement, nos fichiers recevront 4 (r) autorisations, qui sont des autorisations de lecture. Seuls les journaux, caches, etc. qui doivent écrire du contenu dans le fichier recevront 6 (rx) autorisations

La raison pour laquelle les autorisations 755, 777 et 644 ne sont pas mentionnées ci-dessus, mais seulement une seule autorisation, est que les autorisations de l'annuaire de votre site Web ne peuvent pas être garanties comme étant liées à l'utilisateur utilisé lors de l'exécution, ce qui signifie que le l'utilisateur lors de l'exécution peut être propriétaire, il peut s'agir d'un groupe ou autre

3. Autorisations lorsque php est exécuté

Lorsque nous nous connectons à Linux via ssh, nous devons avoir un nom d'utilisateur pour nous connecter. De même, pour PHP, le traitement des fichiers liés à PHP est également effectué sous un certain utilisateur. Où l'utilisateur est-il créé ou défini ? Il est généralement créé lors de l'installation de l'environnement PHP. Par exemple, Apache, nginx et d'autres environnements créeront des utilisateurs et des groupes d'utilisateurs. par défaut. , et cet utilisateur est utilisé lors de la lecture de php. Vous pouvez le confirmer en consultant le fichier de configuration :

ou visualiser le processus en nommant :

#apache在配置文件httpd.conf
User www
Group www
#nginx在配置文件nginx.conf
user www www;
Copier après la connexion

avec Apache. Par exemple, il affichera :

#查看apache进程
ps -ef|grep httpd
#查看nginx进程
ps -ef|grep nginx
#查看php-pfm进行
ps -ef|grep php-pfm
Copier après la connexion

La première ligne indique quel utilisateur l'exécute, principalement sous non-root. La description ci-dessus indique que l'utilisateur www exécute le processus Apache pour traiter les fichiers php.

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
Copier après la connexion
Il convient de noter ici que si php-pfm est installé, vous devez également vérifier le nom d'utilisateur et le groupe d'utilisateurs lorsque php-pfm est exécuté. (Il n'a pas été installé, donc je ne l'ai pas pratiqué)

La valeur par défaut peut être d'autres utilisateurs et groupes d'utilisateurs tels que personne ou apache. Celui ci-dessus a été modifié. À ce stade, vous devez utiliser ls-all dans le répertoire du site Web pour confirmer à quel utilisateur appartiennent les fichiers du site Web. Expliquons-le dans plusieurs situations :

a Par exemple, le propriétaire du site Web est comme ceci : <. 🎜>

Le propriétaire du site Web est www, et l'exécuteur php est également www, ce qui signifie qu'il dispose des autorisations de propriétaire. Le 55 en 755 dans le dossier système ci-dessus ne fonctionne pas du tout tant qu'il s'agit de 7xx. , il aura les autorisations de 7 (rwx) pour s'exécuter.

b. Si le propriétaire du site Web est comme ceci :
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
...
Copier après la connexion
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
...
Copier après la connexion

网站所有者为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
...
Copier après la connexion

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal