Linux基础之权限的设定(二)

一、权限类型及对权限的理解

1、权限类型

权限类型 含义
权限关闭
r(readable) 查看权限
w(writeable) 可写权限
x(excuteable) 执行权权限

2、理解

(1)“-”权限关闭:表示此位权限未开启。
(2)“r”查看权限:
对于文件:可查看文件中的内容。
对于目录:可列出目录中的文件名称。
(3)“w”可写权限:
对于文件:可更改文件记录的内容。
对于目录:可以在目录中添加、删除文件。
(4)“x”执行权权限:
对于文件:可用文件名称调用文件中记录的程序。
对于目录:可进入目录。

二、文件权限的设定方式

文件权限的设定方式有三种,分别是字符方式设定文件权限,数字方式设定文件权限和依照模板复制文件权限。

1、依照模板复制文件权限

chmod --reference=想复制属性所在文件 目标 

eg:
step1:
用watch命令进行监控,并新建文件和目录作为实验环境。

[root@localhost Desktop]# watch -n 1 ls -lR /mnt/

step2:
给文件file设定满权限,再以file的权限作为模板复制到文件file1上。
在这里插入图片描述
注意:
可以用cp -p file file1来把文件file的权限复制到文件file1,但是在复制权限的同时,也会把文件file中的内容复制到文件file1,会覆盖掉文件file1中原有的内容。

2、字符方式设定文件权限

chmod <u|g|o|a><+|-|=><r|w|x> 目标

eg:
可以使用单个的chmod <u|g|o|a><+|-|=><r|w|x> 来设定权限
在这里插入图片描述
也可以同时设定几个权限
在这里插入图片描述
可以用+r/w/x,表示所有都加r/w/x权限(相当于all+r/w/x)
先把文件Linux1、Linux2、Linux3都设定为0权限,再修改权限
在这里插入图片描述

3、数字方式设定文件权限

把权限开用1表示,权限关用0表示,则权限可以用一个八进制的数子来表示:

权限 二进制 八进制
- - - 000 0
- - x 001 1
- w - 010 2
- w x 011 3
r - - 100 4
r -x 101 5
r w - 110 6
r w x 111 7
chmod 数字 目标

eg:
step1:
先把文件Linux1、Linux2、Linux3都设定为0权限
step2:
修改权限
在这里插入图片描述

三、系统预留权限阈值

1、对于系统预留权限阈值的理解

资源存在的意义在于共享,权限开放的越大,共享的效果越明显,越好,但是随之而来的是安全性会变差。
对于系统而言,开放的权利越少,系统就越安全。
权衡安全和共享,在系统中,我们应该开放应开放的权利,保留不安全的权利以确保系统功能性的同时保证系统的安全性。

2、权限阈值的设定

(1)临时设定

a.系统中使用umask来预留权限
b.在shell中可以使用umask来查看或设定预留权限阈值:
umask:查看预留权限阈值;
umask 预留阈值:设定预留权限阈值
eg:
用umask查看当前权限阈值
在这里插入图片描述
当前权限阈值是022,创建出来的文件权限应为777-022=755,但是文件系统为了安全,也会保留一部分权限,一般为111(文件系统不同,保留的权限值不同),故最后生成的文件权限是777-022-111=644,即rw-r–r--。

(2)永久设定

分别更改以下两个文件中的umask值:
a.shell配置文件:/etc/bashrc
b.系统环境配置文件:/etc/profile
eg:
step1:
更改文件/etc/bashrc和/etc/profile中的umask值
在这里插入图片描述
注意:
第一行是普通用户,第二行是超级用户。
step2:
用source调用/etc/bashrc和/etc/profile文件,再查看权限阈值和生成文件
在这里插入图片描述
注意:
新打开一个shell时,会自动加载/etc/bashrc和/etc/profile文件,更改权限阈值。但是对于已经打开的shell不会更改,需要用source调用/etc/bashrc和/etc/profile文件后,权限阈值才会更改。

四、特殊权限

1、对特殊权限的理解

特殊权限 理解
SUID 只针对二进制可执行文件:调用拥有 SUID 标识的文件时,以文件拥有者的身份去执行
SGID 针对二进制可执行文件:调用拥有 SGID 标识的文件时,以文件所有组的身份去执行
针对目录:在目录中新建文件的所有组与该目录的所有组保持一致
STICKYID 针对文件:表示文件即使没有被程序调用也会被加载到交换空间中(现在已经不这么使用)
针对目录:当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件

2、对特殊权限的设定

(1)STICKYID

a.字符方式:

chmod o+t 目标

b.数字方式:

chmod 1原文件属性对应的数字 目标

eg:
step1:
使用useradd创建新用户yang和lulu,在用户yang的身份下创建文件,在用户lulu的身份下创建文件。
在这里插入图片描述
step2:
在用户lulu的身份下分别删除两个文件,在可以删除自己创建的文件的同时,也可以删除用户yang创建的文件
在这里插入图片描述
step3:
用o+t设置权限后,只能删除自己创建的文件
在这里插入图片描述

(2)SUID

a.字符方式:

chmod u+s 目标

b.数字方式:

chmod 4原文件属性对应的数字 目标

eg:
step1:
把指令rm所在文件的拥有者和拥有组改为yang和yang
step2:
在root身份下创建和删除文件,文件可以被删除
在这里插入图片描述
step3:
用u+s设定命令rm所在文件的权限
step4:
在root身份下创建和删除文件,文件不能被删除(在调用rm所在文件时,用的是文件所有者的身份,即yang,故不能删除)
在这里插入图片描述
step5:
用u-s修改权限后,文件可以被删除
在这里插入图片描述

(3)SGID

a.字符方式:

chmod g+s 目标

b.数字方式:

chmod 2原文件属性对应的数字 目标

eg:
step1:
创建文件观察拥有组
在这里插入图片描述
step2:
用ug+s(直接用g+s就可以,u+s对目录没用),设定权限
在这里插入图片描述
step3:
创建文件,文件的拥有组与目录的拥有组保持一致(从lulu变为root)
在这里插入图片描述

五、ACL权限列表

传统的权限只有三种身份(owner,group,other)搭配三种权限(r,w,x),没有办法单纯的针对某一个使用者或者某一个群组来设置特定的权限需求,为了实现这个目的,需要使用ACL(Access Control List文件访问控制列表)来实现。
注意: 目前ACL几乎已经默认加入到所有常见的 Linux 文件系统的挂载参数中(ext2/ext3/ext4/xfs 等等 ),但 rhel6.0以及之前的版本默认不支持 ACL 功能。

1、查看权限列表

getfacl

eg:
用命令行监控权限列表

[root@localhost Desktop]# watch -n 1 'ls -l /mnt/file;getfacl /mnt/file'

2、设定权限列表

setfacl
-m  设定权限
-x  删除指定用户
-b  关闭列表功能

eg:
step1:
用命令行监控权限列表
step2:
用-m 设定权限,权限列表中出现对应权限
在这里插入图片描述
step3:
用-x删除权限,权限列表中对应权限消失
在这里插入图片描述
注意:
虽然添加的权限被删除了,权限列表中没有附加的权限,但是权限列表还是打开状态。
step4:
用-b关闭权限列表,“+”和“mask”标识消失
在这里插入图片描述

发布了15 篇原创文章 · 获赞 3 · 访问量 686

猜你喜欢

转载自blog.csdn.net/weixin_42006882/article/details/103882369