自动化运维之权限管理(五)

1,118 阅读8分钟

“母亲怀胎十月,父亲奋斗半生,我没资格说人间不值得,只能在人间苦苦凑数”

权限管理

能够非常清楚的知道某个文件或目录的权限结构

能够对文件或目录的权限进行修改

能够对文件或目录的所属用户所属组进行修改

一、权限概述

1、权限介绍

linux是一个多用户多任务的系统,为了让各个用户能够具有保密数据的文件。文档的权限管理就很重要。

权限是指某个特定用户具有特定的系统资源使用权利

linux系统中一般将文档存/取访问的身份分为3个类别:

owner(拥有者)、group(所属组)、others(其他用户)

三种身份各有read、write、execute的权限

read可读权限:
对于文件夹来说,读权限影响用户是否能够列出目录结构
对于文件来说,读权限影响⽤户是否可以查看文件内容

write可写权限:
对文件夹来说,写权限影响用户是否可以在⽂件夹下"创建/删除/复制到/移动到"文档
对于文件来说,写权限影响用户是否可以编辑文件内容

execute可执行权限:
一般都是对于⽂件来说的,特别脚本⽂件。
对于⽂件来说,执行权限影响⽂件是否可以运行。
对于⽂件夹来说,执行权限影响对应的⽤户是否可以在⽂件夹内执行指令。

2、身份介绍

owner,拥有者(所有者),默认为文档的创建者

group,所属组,一般是拥有者所属的主。

other,其他用户,拥有者和所属组内用户以外的用户

root用户,超级管理员,拥有最高权限的用户,设置文档权限不必考虑root用户。

二、权限管理

1、查看权限

[root@CaiChen ~]# ls -l readme.txt   
-rw-r--r--. 1 root root 15 3月  11 11:41 readme.txt
# 查看目录的权限
[root@CaiChen ~]# ll -d 目录         

档案类型及权限:

  • 第一位代表文件类型。linux不像windows使用扩展名表示文件类型。而是使用权限位第一位表示文件类型。常见类型有下列这些。

    -:普通文件。

    d:目录文件。linux中一切皆文件,目录也是文件的一种。

    l:软连接文件。相当于windows中的快捷方式。

    b:块设备文件。特殊设备文件,存储设备都是这种文件。

    c:字符设备文件。特殊设备文件,输入设备一般都是这种文件,如鼠标,键盘等。

  • 第2~4位代表文件所有者的权限。

    r:read,读取权限

    w:write,写权限

    x:execute,执行权限

    如果有字母,则代表拥有对应的权限;如果是"-",代表没有对应的权限。

  • 第5~7位代表文件所属组的权限

  • 第8~10位代表其他人的权限

2、设置权限

2.1 命令格式

命令 作用
chmod [选项] 权限模式 文档名 修改文档的权限

2.2 命令选项

选项 含义
-R 递归设置权限,文档类型为文件夹的时候

2.3 权限模式

文档需要设置的权限信息,文档可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径

注意:要给文档设置权限,操作者必须是root或者文档的拥有者

字母形式
权限设置三步走:
1. 给谁设置(用户身份)? 			u、g、o还是a
2. 怎么设置(赋予方式)?			用+、-还是=
3. 设置成什么样的权限?(权限)	用r、w还是x
  • 用户身份

    u:代表文档拥有者(user)

    g:代表所属组(group)

    o:代表其他人(other)

    a:代表全部身份(all)

  • 赋予方式

    +:加入权限

    -:减去权限

    =:设置权限

  • 权限

    r:读取权限(read)

    w:写权限(write)

    x:执行权限()

注:

  1. 在设置权限时没有指定身份,默认给所有身份设置
  2. 同时设置多个身份权限时,每个身份之间通过英文逗号分开

案例

# 1. 为word.txt文件设置权限(u=rwx, g=rw, o=r)
[root@CaiChen ~]# chmod u=rwx,g=rw,o=r word.txt

在权限设置中,如果有两部分权限一样可以合在一起写

chmod u=rwx,g=rwx 等价于 chmod ug=rwx

# 2. 创建hello.sh文件,添加x可执行权限
[root@CaiChen ~]# chmod ugo+x hello.sh

# 3. 为文件夹设置权限(删除o的x权限)
[root@CaiChen ~]# chmod -R o-x nginx
数字形式

数字形式是另一种设置权限的方式。在技术论坛中经常会看到类似于这样的权限设置chmod 777 test.txt, 这种形式就是数字权限

chmod 777 test.txt
第一个7为拥有者设置可读可写可执行的权限  4 + 2 + 1
第二个7为所属组设置可读可写可执行的权限
第三个7为其他人设置可读可写可执行的权限
  • 4:代表"r"权限
  • 2:代表"w"权限
  • 1:代表"x"权限
  • 0:没有权限

案例

# 1. 创建一个readme.txt文件,修改权限为:所属用户可读可写可执行,所属组可读可写,其他用户可读
[root@CaiChen ~]# chmod 766 readme.txt
[root@CaiChen ~]# chmod u=rwx,g=rw,o=rw readme.txt

# 2. 修改readme.txt文件,修改权限为:所属用户可读可写,所属组可读,其他用户可读
[root@CaiChen ~]# chmod 644 readme.txt
[root@CaiChen ~]# chmod u=rw,g=r,o=r readme.txt

# 3. 创建一个层级目录nginx/html/index.html,设置nginx目录及子文档的权限为:所有者、所属组及其他用户都是可读可写可执行
[root@CaiChen rh]# chmod -R 777 nginx
[root@CaiChen rh]# chmod -R u=rwx,g=rwx,o=rwx

面试题

用超级管理员设置文档的权限命令是chmod -R 731 nginx,请问这个命令有什么不合理的地方

拥有者:7 = 4 + 2 + 1 = 读 + 写 + 执行
所属组:3 = 2 + 1 = 写 + 执行
其他用户:1 = 执行

问题在731中的3权限,3表示写+执行权限,但是写必须能够打开才可以写,因此必须具备可读权限,因此此权限不合理

注:实际工作中不要设置这种单独出现2、3的问题权限。

练习题

  1. 使用root用户设置文件/root/nginx的权限为:拥有者全部权限,所属组读和执行权限,其他用户没有权限。
  2. 使用root用户设置文件/root/readme.txt文件的权限为:拥有者所有权限,所属组读写,其他用户只读。

3、特别说明

linux中,如果要删除一个文件,不是看文件有没有对应的权限。而是看文件所在的目录是否有写和执行权限。如果有才可以删除

三、所有者和所属组管理

1、chown

命令格式

命令 作用
chown [选项] 所有者[:所属组] 文件或目录 修改文件或目录的所有者和所属组

命令选项

命令 含义
-R 递归设置权限,为目录中的子目录及所有文件设置权限

注意:普通用户不能修改文件的所有者,即使自己是这个文件的所有者也不行

案例

# 1.修改readme.txt的所有者和所有组为CaiChen
[root@CaiChen ~]# chown CaiChen:CaiChen readme.txt

# 2.修改nginx目录的所有者为CaiChen
[root@CaiChen ~]# chown -R CaiChen nginx

2、chgrp

命令格式

命令 作用
chgrp [选项] 所属组 文件或目录 修改文件的所属组

命令选项

选项 含义
-R 递归设置权限

案例

# 修改nginx的所有组为CaiChen
[root@CaiChen ~]# chgrp -R CaiChen nginx

四、umask默认权限(了解)

使用umask可以获取新建文件和目录默认权限

umask表示文档权限的反向掩码,遮罩码。

1、查看umask权限

# 显示umask权限
[root@CaiChen ~]# umask
0022

2、umask权限计算

先了解下新建文件和目录的默认最大权限。

  • 对文件来讲,新建文件的默认最大权限是666,没有执行权限。因为执行权限(x)对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。
  • 对目录来讲,新建目录的默认最大权限是777,因为对目录而言,执行权限(x)仅仅代表进入目录,所以即使建立新目录时直接默认赋予,也没有什么危险。

按照字母方式来计算默认权限。

  • 文件默认权限最大只能是666,而mask的值是022

    "-rw-rw-rw-" 减去 "-----w--w-",等于"-rw-r--r--"

  • 目录的默认权限最大是777,而umask的值是022

    "drwxrwxrwx" 减去 "d----w--w-", 等于"drwx-r-xr-x"

按数字方式计算默认权限

  • 文件默认权限最大只能是666,而umask的值是022

    "666" 减去 "022",等于"644"

  • 目录的默认权限最大是777,而mask的值是022

    "777" 减去 "022", 等于"755"

                                   _____           _    _____   _
                                / ____|         (_)  / ____| | |
                               | |        __ _   _  | |      | |__     ___   _ __
                               | |       / _` | | | | |      | '_ \   / _ \ | '_ \
                               | |____  | (_| | | | | |____  | | | | |  __/ | | | |
                                \_____|  \__,_| |_|  \_____| |_| |_|  \___| |_| |_|
    

好了各位,以上就是这篇文章的全部内容了,能看到这里人啊,都是人才。

如果这个文章写得还不错,觉得「王采臣」我有点东西的话 求点赞👍求关注❤️求分享👥 对耿男我来说真的非常有用!!!

白嫖不好,创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

王采臣 | 文 【原创】 如果本篇博客有任何错误,请批评指教,不胜感激 !微信公众号: