Linux 权限

∥☆過路亽.° 提交于 2020-01-15 04:39:25

查看文件及目录属性

1.使用 ls -l filename查看文件属性
注意:文件属性各字段的含义如下
1.第1位-:表示普通文件
2.第2-10位:三位一组,表示三组文件权限。第一组是文件所有者的权限,第二组是同组用户的权限,第三组是其他用户的权限。(r表示读权限,w表示写权限,x表示执行权限,-表示没有权限)
3.第3字段:SELinux Context
4.第4字段:文件硬链接个数
5.第5字段:文件拥有者
6.第6字段:文件拥有组
7.第7字段:文件大小
8.第8字段:文件最后一次被修改的时间
9.第9字段:文件名称
2.使用 ls -ld directory查看目录属性
注意:目录属性各字段含义如下
1.第1位d:表示目录文件
2.第2-10位:三位一组,表示三组目录权限。第一组是文件所有者的权限,第二组是同组用户的权限,第三组是其他用户的权限。(r表示读权限,w表示写权限,x表示执行权限,-表示没有权限)
3.第3字段:SELinux Context
4.第4字段:目录中子目录的个数
5.第5字段:目录拥有者
6.第6字段:目录拥有组
7.第7字段:目录中子文件或子目录元数据大小
8.第8字段:目录最后一次被修改的时间
9.第9字段:目录名称
在这里插入图片描述

更改文件拥有者和拥有组

1.chown 用户名 文件					#文件所有者改为指定用户
2.chgrp 组名称 文件					#文件所有组改为指定组
3.chown -R 组名称 目录				#目录及目录下文件所有者改为指定用户
4.chgrp -R 组名称 目录				#目录及目录下文件所有组改为指定组
5.chown 用户名:组名称 文件|目录		#同时更改文件或目录的所有者和所在组

使用 watch -n 1 ‘ls -lR /mnt’ 进行监控
在这里插入图片描述
更改文件拥有者
在这里插入图片描述
更改文件拥有组
在这里插入图片描述
在这里插入图片描述
注意:文件拥有者和拥有组只有超级用户root可以修改

设定文件权限

1.字符方式设定文件权限
使用 chmod <u|g|o|a><+|-|=><r|w|x> 文件名 指令
u:拥有者 g:拥有组 o:其他用户
+:添加权限 -:去掉权限 =:给予权限
r:读文件的权限 w:写文件的权限 x:执行文件的权限(文件)
r:使用ls 命令将该目录下的子目录和文件罗列出来的权限 w:表示用户可在该目录下创建子目录或文件的权限 x:表示可以用cd进入该目录的权限(目录)

1.chmod u=rw file					#对file文件的拥有者增加读写权限
2.chmod ug-w,o+x file				#对file文件的拥有者和拥有组去掉写权限,其他用户增加执行权限
3.chmod a-w file					#对file文件的所有用户去掉写权限

对文件拥有者的更改
在这里插入图片描述
对文件拥有组、其他用户的更改
在这里插入图片描述
去掉目录拥有者的写权限,发现无法列出目录内容
在这里插入图片描述
去掉目录拥有者的写权限,发现无法在该目录下建立文件
在这里插入图片描述
去掉目录拥有者的执行权限,发现无法使用cd进入该目录
在这里插入图片描述
2.数字方式设定文件权限
使用 chmod 数字 文件 指令
权限可以用一个八进制数字来表示:

权限 二进制 八进制
- - - 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

在这里插入图片描述
其中 -R 表示递归修改目录权限
3.依照模板复制文件权限
使用 chmod --reference=属性源文件 文件名 指令

chmod --reference=/mnt/westos westos1

在这里插入图片描述
将 redhat3 的权限复制给 redhat1

预留阈值设定权限

系统中使用umask来预留权限,umask值越高,系统越安全。
1.设置本shell的umask值(临时)

1.umask								#查看预留阈值
2.umask 预留阈值						#设置本shell的预留阈值

在这里插入图片描述可以发现设置的umask值只能在本shell内有效
2.设置系统所有进程的umask值(永久)

vim /etc/bashrc						#修改shell配置文件
vim /etc/profile					#修改系统配置文件
source /etc/bashrc					#读取文件执行语句,使设置立即生效
souce /etc/profile					#读取文件执行语句,使设置立即生效

/etc/bashrc/etc/profile 都用于保存用户的环境信息
/etc/bashrc 用于交互式 non-login shell,为每一个运行bash shell 的用户执行此文件
/etc/profile 用于交互式 login shell,用户第一次登录时执行此文件
注意:文件的默认权限是666,目录的默认权限是777
我们可以修改umask值来更改权限,例如当umask值为022时:
文件权限为:666-022=644 即表明文件拥有者可以读写文件,而拥有组和其他用户只能读取文件。
目录权限为:777-022=755 即表明目录拥有者具有读写执行的满权限,而拥有组和其他用户只能进入目录列出文件并读取文件。
在这里插入图片描述
修改 /etc/bashrc 文件,将umask值改为077
在这里插入图片描述
使用 source指令使其立即生效
在这里插入图片描述
同样,编辑/etc/profile文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特殊权限的设置

权限的提升

SUID(setuid):只针对二进制可执行文件,使文件所有者在执行阶段具有文件所有者的权限

1.chmod u+s 文件名					#为文件加上setuid标志
2.chmod 4原文件属性 文件名			#添加setuid标志

SGID(setgid):针对二进制可执行文件,使文件所有组在执行阶段具有文件所有组的权限;对于目录,目录新建文件的所属组与该目录的所有组保持一致。

1.chmod g+s 文件名|目录名			#添加setgid标志
2.chmod 2原文件属性 文件名|目录名		#添加setgid标志

1.第一种方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.第二种方式
在这里插入图片描述

权限的下放

sudo 能把某些超级权限针对性的下放,并且不需要当前用户知道root密码
sudo 的流程:当前用户切换到root身份,以root身份执行命令。执行完成后,直接退回至当前用户。
在这里插入图片描述
切换到linux身份,发现无法进行用户添加删除操作,于是使用root身份编辑visudo文件进行设置。
在这里插入图片描述
进行下一步操作前,需要知道linux的主机名
在这里插入图片描述
在visudo文件第100行处,添加 linux hostname =(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel 指令
在这里插入图片描述
可以发现linux可以进行用户添加、删除操作了(注意要使用sudo命令)

补充

STICKYID(粘滞位):对于文件,表明文件即使没有被程序调用也会被加载到交换空间中;对于目录,表明所有用户在该目录下均可创建文件,但只有文件拥有者和root用户可以删除该目录下的文件。

1.chmod o+t 文件|目录				#添加STICKYID权限
2.chmod 1原文件属性 文件|目录			#添加STICKYID权限

在这里插入图片描述
可以发现,用户不仅可以删除自己创建的文件,还可以删除别人创建的文件
在这里插入图片描述
使用 chmod o+t 指令,解决了这一问题
在这里插入图片描述

特定权限的设置

ACL(访问控制列表):可以针对某一个使用者,某一个群组来设定特定的权限需求。

1.getfacl							#查看权限列表
2.setfacl -m d:u:ly:rwx 目录		#对用户ly的目录设置默认读写执行权限
3.setfacl -m u:ly:rwx 文件|目录		#对文件或目录的拥有者ly设定读写执行权限
4.setfacl -m g:test:rw 文件|目录		#对文件或目录的拥有组test设定读写权限
5.setfacl -x u:ly 文件|目录			#删除用户ly的acl权限
6.setfacl -b 文件|目录				#关闭列表功能

注意:设置默认ACL权限的作用如下
如果给父目录设定了默认ACL权限,那么父目录中新建的文件或子目录都会继承父目录的ACL权限。(对目录本身不生效,对目录中原有文件不生效)
在这里插入图片描述
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!