https://www.cnblogs.com/zrp2013/p/4183546.html
有关权限说明:
-rwxrw-r‐-1 root root 1213 Feb 2 09:39 50.html
第一个字符:
-(文件),d(目录),l(链接)
其他3个一组,
u第一组rwx:文件所有者是读写执行
g第二组rw-:文件所有者所在的组的其他用户有读写权限
o第三组r--:其他组的用户只有读的权限
r=4,w=2,r=1
nginx php-fpm mysql用户权限解析
nginx是源码安装的,php是yum安装的。mysql是用源码安装的。
nginx
处理静态页面,nginx自身处理,结果返回给客户端
处理php页面,转发给fastcgi,fastcgi管理进程选择cgi的子程序处理,
把处理结果返回给nginx
涉及到两个用户,nginx用户和php-fpm用户
nginx访问静态文件,对该文件有读或者读写权限
访问php文件,首先nginx对运行的用户有读权限,
发现是php文件,转发给php-fpm,需要php-fpm用户有读权限或者读写权限。
[root@master1 html]# ps aux | grep nginx
root 3102 0.0 0.0 44640 1896 ? Ss 08:08 0:00 nginx: master process /usr/local/nginx/sbin/nginx
www 3431 0.0 0.1 45020 2228 ? S 09:09 0:00 nginx: worker process
root 3793 0.0 0.0 103324 892 pts/1 S+ 10:45 0:00 grep nginx
nginx的父进程在root用户下,子进程在www用户下,只有一个子进程,
和nginx配置文件中一致。
vi /usr/local/nginx/conf/nginx.conf
user www;
worker_processes 1;
nginx没有使用配置文件运行用户时,默认是nobody用户运行。
使用www运行nginx安全性比较高。
ps aux | grep php-fpm
root 3155 0.0 0.3 499956 6604 ? Ss 08:16 0:00 php-fpm: master process (/etc/php-fpm.conf)
apache 3156 0.0 0.9 502364 18920 ? S 08:16 0:03 php-fpm: pool www
apache 3157 0.0 0.9 502112 19132 ? S 08:16 0:04 php-fpm: pool www
apache 3158 0.0 0.9 503892 19992 ? S 08:16 0:03 php-fpm: pool www
apache 3159 0.0 0.9 502380 20164 ? S 08:16 0:04 php-fpm: pool www
apache 3160 0.0 1.1 503892 23284 ? S 08:16 0:04 php-fpm: pool www
apache 3432 0.0 0.9 502376 19756 ? S 09:09 0:04 php-fpm: pool www
apache 3573 0.0 0.9 502868 18408 ? S 09:42 0:02 php-fpm: pool www
root 3829 0.0 0.0 103324 896 pts/1 S+ 10:52 0:00 grep php-fpm
php-fpm父进程在root下,子进程在apache用户下。
ps aux | grep mysql
ps aux | grep mysql
root 1252 0.0 0.0 108320 1696 ? S 06:18 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/mysql.pid
mysql 1615 0.2 13.5 1200108 275588 ? Sl 06:18 0:42 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin
--user=mysql --log-error=/usr/local/mysql/mysql-error.log --pid-file=/usr/local/mysql/mysql.pid --socket=/usr/local/mysql/mysql.sock --port=3306
root 3839 0.0 0.0 103324 896 pts/1 S+ 10:55 0:00 grep mysql
more /usr/local/mysql/mysql.pid
1615
mysql运行在mysql用户下,其pid确定和/usr/local/mysql/mysql.pid一样
在生产环境下
一般配置nginx和php-fpm都运行在www用户下,
网站的根目录也要属于www用户,
并且根目录对www用户有所以权限
访问静态页面,能正常访问,但是访问动态页面,也就是php页面,
不能访问是因为php-fpm运行在apache用户下,appache用户对网站的根目录
没有访问权限,也没有写入权限。
所以需要统一nginx和php的运行用户www,把nginx的网站根目录对www用户
和www用户组具有所有权限
该php用yum安装的,使用的是默认配置,配置文件是/etc/php-fpm/www.conf
php用yum的情况下,查看php的相关安装文件
rpm -ql php-fpm
/etc/logrotate.d/php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/rc.d/init.d/php-fpm
/etc/sysconfig/php-fpm
/usr/sbin/php-fpm
/usr/share/doc/php-fpm-5.6.32
/usr/share/doc/php-fpm-5.6.32/fpm_LICENSE
/usr/share/doc/php-fpm-5.6.32/php-fpm.conf.default
/usr/share/fpm
/usr/share/fpm/status.html
/usr/share/man/man8/php-fpm.8.gz
/var/lib/php/session
/var/lib/php/wsdlcache
/var/log/php-fpm
/var/run/php-fpm
vi /etc/php-fpm/www.conf
user=www
group=www
编辑完成重启。/etc/init.d/php-fpm
ps aux | grep php-fpm
[root@master1 zabbix]# ps aux | grep php-fpm
root 4053 0.0 0.3 499956 6604 ? Ss 11:43 0:00 php-fpm: master process (/etc/php-fpm.conf)
www 4054 0.0 0.7 500552 14976 ? S 11:43 0:00 php-fpm: pool www
www 4055 0.3 0.9 502616 18712 ? S 11:43 0:00 php-fpm: pool www
www 4056 0.2 0.8 500844 16932 ? S 11:43 0:00 php-fpm: pool www
www 4057 0.1 0.8 500824 16636 ? S 11:43 0:00 php-fpm: pool www
www 4058 0.3 0.8 501332 18020 ? S 11:43 0:00 php-fpm: pool www
root 4063 0.0 0.0 103320 888 pts/1 S+ 11:44 0:00 grep php-fpm
php-fpm已经在nobody用户下运行。
给虚拟主机server中的路径(root)修改权限
用yum安装的情况下:
查看相关安装文件:
rpm -ql 程序名
以php为例:
rpm -qa | grep php-fpm
rpm -ql php-fpm-5.6.32-1.el6.remi.x86_64
rpm默认安装路径
/etc 一些设置文件放置的目录比如/etc/crontab
/usr/bin 一些可执行文件
/usr/lib 一些程序使用的动态函数库
/usr/share/doc 一些基本的软件使用手册和帮助文档
/usr/share/man/ 一些man page文件
如果用源码安装情况下:
不清楚文件安装在哪些地方,放在哪些文件里,查看所有文件路径。
相关程序:whereis 程序名
php:
php -i | grep configure 查看编译安装的内容可以找到配置文件。
php主要的配置文件:
/etc/php-fpm.conf
/etc/php-fpm.conf
/etc/php-fpm.d/www.conf
/usr/share/doc/php-fpm-5.6.32/php-fpm.conf.default
在/etc/php-fpm.conf和php-fpm.conf.default中都可以定义include
在www.conf中定义php-fpm要监听的地址和端口,运行php-fpm进程时的用户和用户组。
listen=127.0.0.1
listen.allowed_clients=127.0.0.1
user=www
group=www
进一步优化可以使用php-fpm.conf.default
more /usr/share/doc/php-fpm-5.3.3/php-fpm.conf.default
include=/etc/fpm.d/*.conf