Maison > Article > développement back-end > Méthode d'autorisation de fichier lorsque PHP est exécuté sous Linux
L'éditeur suivant vous apportera un article pour clarifier les autorisations des fichiers lorsque PHP est exécuté sous Linux. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour jeter un œil
1. Autorisations et propriété des fichiers
1. Les fichiers ont trois types d'autorisations. , peut être remplacé par des nombres, de sorte qu'en ajoutant et en soustrayant des nombres, un nombre puisse être utilisé pour identifier les autorisations de ce fichier. Par exemple, 7=4+2+1 signifie qu'il existe trois autorisations pour la lecture, l'écriture et l'exécution. , 6=4+ 2. Cela signifie qu'il y a une autorisation de lecture et d'écriture mais pas d'autorisation d'exécution, etc.
2. gestion des autorisations rbac de l'application Web Lenovo, etc. est également la gestion des autorisations des utilisateurs sous Linux. Les utilisateurs ont un nom d'utilisateur et un groupe d'utilisateurs. Généralement, lorsqu'un utilisateur est créé, un groupe auquel appartient l'utilisateur du même nom.
Connectez-vous d'abord avec le compte root et créez un répertoire et un fichier
#新建目录 mkdir abc #新建文件 touch abc.txt #查看 ls -all
Lorsque vous. vérifiez-le, 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
Regardez d'abord la partie bleue ci-dessus, le premier chiffre est l'identifiant, supprimez le premier chiffre et séparez tous les trois chiffres derrière, avec les dossiers abc Par exemple : d | r-x | r-x
Donc, le dossier abc signifie que le propriétaire possède rwx (7), le groupe possède rx (5 ), et d'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 groupe d'utilisateurs de test de 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 en parler, mais c'est trop gênant, alors parlons-en 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 Les autorisations requises sont les autorisations d'exécution (x) <.>
b. Affichez les fichiers dans le répertoire, c'est-à-dire la commande ls, l'autorisation requise est l'autorisation de lecture (r) c. Créez et supprimez des dossiers/fichiers dans le répertoire, c'est-à-dire la dénomination mkdir/touch. , les autorisations requises sont les autorisations d'écriture (w) D'ailleurs, le répertoire n'affecte que le niveau suivant, et n'affecte pas les générations. Par exemple, un répertoire abc/sub/, si abc n'a pas l'autorisation w. , mais sub a l'autorisation w, Vous pouvez créer des fichiers dans sub. Bien sûr, abc doit également avoir , ne sera affecté que par sub. 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. Le fichier peut être ouvert avec la commande cat/vim, l'autorisation requise est l'autorisation de lecture (r)
b. La modification du fichier peut être ouverte et enregistrée avec la commande cat/vim. Les autorisations requises sont les autorisations d'écriture (w)
c. L'exécution du fichier peut être exécutée directement./abc.out etc. les autorisations sont Pour l'autorisation d'exécution (x)
Ce qu'il faut expliquer ici, c'est que PHP (ou shell, etc.), qu'il s'agisse d'une exécution en ligne de commande ou d'une exécution Web, est appelé exécution. Il lit en fait le fichier. et l'analyse dans le noyau PHP, tant que vous disposez de l'autorisation de lecture (r).
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 lors de l'exécution de phpNous devons l'avoir lorsque nous nous connectons. vers Linux via ssh Vous devez avoir un nom d'utilisateur pour vous connecter. De même, si PHP souhaite traiter des fichiers liés à PHP, il doit être exploité sous un certain utilisateur. Où l'utilisateur est-il créé ou défini? Il est généralement créé lors de l'environnement PHP. est installé, par exemple. Les environnements tels qu'apache et nginx créeront des utilisateurs et des groupes d'utilisateurs par défaut. Cet utilisateur est utilisé lors de la lecture de PHP. Vous pouvez le confirmer en consultant le fichier de configuration :
.
#apache在配置文件httpd.conf User www Group www #nginx在配置文件nginx.conf user www www;
Ou visualisez le processus par son nom :
#查看apache进程 ps -ef|grep httpd #查看nginx进程 ps -ef|grep nginx #查看php-pfm进行 ps -ef|grep php-pfm
En prenant Apache comme exemple, il affichera :
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
La première ligne montre quel utilisateur l'exécute, principalement sous un utilisateur non root. La description ci-dessus indique que l'utilisateur www exécute le processus Apache pour traiter les fichiers php.
这里需要注意的是,如果有安装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的用户和用户组,二是修改网站文件的所有者和所有组这两个方向来修改,以确保网站的安全。
以上,只是基础的权限说明。
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!