最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Linux:目录和文件的权限管理一

XAMPP相关 admin 498浏览 0评论
Linux系统的权限管理,整体上可分为:普通权限、默认权限、ACL权限、文件特殊权限、文件系统属性chattr权限、系统命令sudo权限等。今天,梳理和总结下普通权限和默认权限有关的知识点:

一、普通权限

我们知道,用户对文件只有三种身份:所属主、所属组和其他人;每种用户身份拥有读(read)、写(write)和执行(execute)三种权限,这就是普通权限。

<1>. 查看权限:

[weixiangxiang@localhost /]$ ll
总用量 36
lrwxrwxrwx.   1 root root    7 7月  22 02:37 bin -> usr/bin
drwxr-xr-x.   3 root root   21 8月   1 10:28 data
drwxr-xr-x. 138 root root 8192 8月   1 19:35 etc
drwxr-xr-x.   6 root root   65 7月  31 17:33 home
lrwxrwxrwx.   1 root root    7 7月  22 02:37 lib -> usr/lib
drwxr-xr-x.   8 root root  182 7月  31 19:28 opt
dr-xr-x---.  17 root root 4096 8月   1 19:36 root
drwxr-xr-x.  14 root root  167 7月  12 2017 usr
......
权限位说明:

dqz67

第0位表示文件类型:

类型 含义
解释
普通文件
b 块设备文件 是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。
c 字符设备文件 是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。
d 目录文件
l 软链接文件
p 管道符文件 是一种非常少见的特殊设备文件。
s 套接字文件 是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。

第1~3位表示属主权限(user):

表示文件的所有者权限,即当前用户拥有的权限~

第4~6位表示属组权限(group):

表示当前用户的用户组,除了当前用户外其他用户拥有的权限~

第7~9位表示其他人权限(others):

表示其他人拥有的权限~
类型
含义
-:none 无读写执行权限
r:read 可读权限
w:write 可写权限
x:execute 可执行权限

<2>. 修改权限:

  • 命令格式:chmod  [选项]  权限模式  文件/目录
  • 含义:change file mode bits
  • 路径:/bin/chmod
  • 功能:修改文件的权限模式

权限模式

格式为“[ugoa][[+-=][perms]]”,即“[用户身份][[赋予方式][权限]]”的格式。其中,用户身份有所属主(user)、所属组(group)、其他人(others)可分别简写为u、g、o,而a表示全部身份;赋予权限有+、-、=分别表示增加权限、减掉权限、设置权限;权限则指的是可读可写可执行了。
举例:

创建一个test.txt文件,并查看权限,修改权限

# 创建测试文件
[weixiangxiang@localhost ~]$ touch test.txt
[weixiangxiang@localhost ~]$ ll
总用量 8
-rw-rw-r--. 1 weixiangxiang weixiangxiang    0 8月   2 21:25 test.txt

# 属主添加x权限,属组减掉w权限,其他人增加w权限
[weixiangxiang@localhost ~]$ chmod u+x,g-w,o+w test.txt
[weixiangxiang@localhost ~]$ ll
总用量 8
-rwxr--rw-. 1 weixiangxiang weixiangxiang    0 8月   2 21:25 test.txt

# 不需要关心原来权限是什么,直接通过=设置权限需要的权限
[weixiangxiang@localhost ~]$ chmod u=rwx,g=rw,o=rw test.txt 
[weixiangxiang@localhost ~]$ ll
总用量 8
-rwxrw-rw-. 1 weixiangxiang weixiangxiang    0 8月   2 21:25 test.txt
数字权限:

简化字母赋予权限的方式,使用数字表示,比如属主权限中:r表示4,w表示2,x表示1,组合的话进行相加即可,即7=4+2+1表示可读可写可执行,同理5=4+1表示可读可执行。

  • 412:属主可读、属组可执行、其他人可写;
  • 666:文件默认最大的权限,表示属主、属组、其他人都是可读可写;
  • 777:目录默认最大的权限,表示属主、属组、其他人都是可读可写可执行;
[weixiangxiang@localhost ~]$ mkdir test_20210802
[weixiangxiang@localhost ~]$ ll
总用量 8
drwxrwxr-x. 2 weixiangxiang weixiangxiang    6 8月   2 21:47 test_20210802
-rwxrw-rw-. 1 weixiangxiang weixiangxiang    0 8月   2 21:25 test.txt

# -R表示递归设置权限
[weixiangxiang@localhost ~]$ chmod -R 777 test_20210802
总用量 8
drwxrwxrwx. 2 weixiangxiang weixiangxiang    6 8月   2 21:47 test_20210802
-rwxrw-rw-. 1 weixiangxiang weixiangxiang    0 8月   2 21:25 test.txt

666,777都是最高的权限,为了安全性实际上不建议这么设置!!!

<3>. 修改文件所属主的权限:

  • 命令格式:chown  [选项]  所属主:所属组  文件/目录
  • 含义:change file owner and group
  • 路径:/bin/chown
  • 功能:修改文件和目录的所有者和所属组

举例

使用root用户创建一个日志文件,通过ll命令显示对用户组及其他用户只读,修改文件的所属主 或 所属主和所属组

[root@localhost home]# touch test001.log
[root@localhost home]# ll
总用量 2
drwx------.  3 mysql         mysql           78 7月  31 17:33 mysql
-rw-r--r--.  1 root          root             0 8月   2 22:04 test001.log
drwx------. 17 weixiangxiang weixiangxiang 4096 8月   2 22:04 weixiangxiang

# 将该文件的属主权限修改为 weixiangxiang, 该用户则具有了 rw 权限
[root@localhost home]# chown weixiangxiang test001.log
总用量 2
drwx------.  3 mysql         mysql           78 7月  31 17:33 mysql
-rw-r--r--.  1 weixiangxiang root             0 8月   2 22:04 test001.log
drwx------. 17 weixiangxiang weixiangxiang 4096 8月   2 22:04 weixiangxiang

# 将该文件的属主权限修改为 weixiangxiang, 所属组也修改为 weixiangxiang
[root@localhost home]# chown weixiangxiang:weixiangxiang test001.log
总用量 2
drwx------.  3 mysql         mysql           78 7月  31 17:33 mysql
-rw-r--r--.  1 weixiangxiang weixiangxiang    0 8月   2 22:04 test001.log
drwx------. 17 weixiangxiang weixiangxiang 4096 8月   2 22:04 weixiangxiang

注意:root用户拥有超级管理员的权限,可以修改任意文件的权限,但普通用户只能修改自己目录下的文件权限,否则报权限不足!!!

<4>. 修改文件所属组的权限:
  • 命令格式:chgrp  [选项]  权限模式  文件名
  • 含义:change group ownership
  • 路径:/bin/chgrp
  • 功能:修改文件和目录的所属组

举例

接着<3>,修改所属组为mysql

# 将该文件的所属组修改为 mysql
[root@localhost home]# chown weixiangxiang:weixiangxiang test001.log
总用量 2
drwx------.  3 mysql         mysql           78 7月  31 17:33 mysql
-rw-r--r--.  1 weixiangxiang mysql            0 8月   2 22:04 test001.log
drwx------. 17 weixiangxiang weixiangxiang 4096 8月   2 22:04 weixiangxiang

二、默认权限

Linux是一个比较安全的操作系统,而安全的基础就是权限,因此,在Linux中所有的文件和目录都要有基本的权限,新建的文件和目录当然也要有默认的权限。在Linux系统中,通过umask默认权限来给所有新建立的文件和目录赋予初始权限。

<1>. 查看默认权限
[root@localhost /]# umask
0022
# 八进制显示
[root@localhost /]# umask -S
u=rwx,g=rx,o=rx
说明:
很明显,八进制更能清晰的辨别所属主、所属组及其他人的权限类型,而0022,第一位0代表文件的特殊权限(这个后面再说吧),022表示的才是umask默认权限。那么,默认权限是如何计算得到的呢?
umask默认权限一定不是直接使用权限数字相减得到的,而是通过二进制逻辑与和逻辑非联合运算得到的,最简单的办法还是使用权限字母来计算,比如:
  • 文件的默认权限最大只能是666,换算成字母就是“-rw-rw-rw-”;而umask的值是022,也换算成字母就是“—–w–w-”。把两个字母权限相减,得到的就是新建文件的默认权限:(-rw-rw-rw-)-(—–w–w-)=(-rw-r–r–)。
  • 目录的默认权限最大可以是777,换算成字母就是“drwxrwxrwx”;而umask的值是022,也换算成字母就是“d—-w–w-”。也把两个字母权限相减,得到的就是新建目录的默认权限:(drwxrwxrwx)-(d—-w–w-)=(drwx-r-xr-x)。
以weixiangxiang用户为例:
[root@localhost weixiangxiang]# su weixiangxiang
[weixiangxiang@localhost ~]$ umask
0002

[weixiangxiang@localhost ~]$ touch 1.log
[weixiangxiang@localhost ~]$ ll
-rw-rw-r--. 1 weixiangxiang weixiangxiang    0 8月   2 22:48 1.log

[weixiangxiang@localhost ~]$ mkdir ttt/
[weixiangxiang@localhost ~]$ ll
drwxrwxr-x. 2 weixiangxiang weixiangxiang    6 8月   2 22:51 ttt
当umask=0002时,按照上面的计算规则,新建文件默认的权限为:-rw-rw-r– ;新建目录默认的权限为:drwxrwxr-x 。
<2>. 修改默认权限
临时性的修改:(重启机器或重新登录时,该修改会失效)
[weixiangxiang@localhost ~]$ umask 0022
永久性的修改:
vi /etc/profile

dqz067

就到这~

转载请注明:XAMPP中文组官网 » Linux:目录和文件的权限管理一

您必须 登录 才能发表评论!