Linux 是一个多用户系统,整体文件结构是一个从 / 开始的庞大的目录树,而用户的权限不同就是对这些文件有着不同的执行权限, Linux 有一些所有既是文件的意思,例如 Linux 的配置大多是以文件形式存在(小白自己的理解)
Linux 用户是以组划分的,一个组可以包含多个用户,反之,一个用户也可以属于多个组。
而 Linux 中一个目录或者文件的权限就分为这个文件/目录所有者的权限、所有者同组用户的权限、其他用户的权限。其中 root 是掌握生杀大权的用户,甚至可以干掉自己,可以用
ls -ahl
查看详细信息。
例如
ls -ahl
total 21M
drwxr-xr-x 3 root root 4.0K Aug 2 23:15 .
drwxr-xr-x. 8 root root 4.0K Jul 28 08:50 ..
-rwxr-x--x 1 admin admin 10M Jul 14 20:05 frpc
-rw-rw-r-- 1 admin admin 6.7K Jul 14 20:10 frpc_full.ini
-rw-rw-r-- 1 admin admin 126 Jul 14 20:10 frpc.ini
-rwxrwxr-x 1 admin admin 11M Jul 14 20:05 frps
-rw-rw-r-- 1 admin admin 2.3K Jul 14 20:10 frps_full.ini
-rwxrwxr-x 1 admin admin 239 Aug 2 23:15 frps.ini
-rw-rw-r-- 1 admin admin 12K Jul 14 20:10 LICENSE
-rw------- 1 root root 239K Jul 28 11:18 nohup.out
drwxrwxr-x 2 admin admin 4.0K Jul 14 20:10 systemd
第一列就表示了此文件和目录的权限。d 代表此行是表示目录(Directory),横线就代表是文件了。而之后的每三个字母组成一组,分别代表 所有用户 所有用户所在组的其他用户 其他用户 的权限,r 是指 read (读), w 是指 write (写) , x 是指 excute (执行)。而后面的 root 和 root 就代表该文件/目录的所有用户和所用用户所在组。
例如上面例子中的 frpc 的 -rwxr-x--x 1 admin admin 10M Jul 14 20:05 frpc 就代表 frpc 这个文件是 admin 所用,所在组是 admin ,这是一个文件(-),所有用户对此文件有读(r) 写(w) 执行(x) 权;而 admin 所在组其他用户只有读和执行权限(r-x);其他用户只有执行权限(--x).
(notes: . 指本目录, .. 指上级目录)
权限也可以用数字表示,只需要把一个组内权限代表的数字加和便代表了这个组的权限。4 代表 读(r) , 2 代表 写(w) , 1 代表 执行(x),0 就是没有权限。
例如上述 frpc 的权限就可以写成 751 (7=4+3+1 , 5=4+0+1, 1=0+0+1 )
(至于为什么是 4 3 1 ,我想是因为这三个数字组合出来的每一个数字都可以唯一代表一种权限组合吧)
chmod 777 path
# 更改文件/目录权限,root用户可更改权限,数字是权限代码, path 是目录。
# 常用参数 -R 可以递归更改某个目录下面所有文件/目录的权限
chown user:group path
# 更改文件/目录所有者和组,(这里我其实有个疑问,如果这里指定用户不在的组会是怎样,跟自己的认知有矛盾了,文件/目录可以单独指定一个用户组?)
chgrp 属组 目录
# chgrp (change group)可以单独更改组。
usermod -G user
# 可以和更改用户所在组,-G 参数是覆盖设置, 如果不覆盖可以加上 -a 参数
使用 lnmp 安装 nginx 一般会创建一个 www 用户和 www 用户组来供 nginx 使用, nginx 就通过这个用户(www)来执行操作,网站访客发起请求,而 nginx 接受这个请求后通过 www 用户执行相应操作,然后再把动作结果返回给网站访客。