6.linux系统中的权限管理
前言
本章主要对linux中的权限管理进行学习,对于系统权限的查看与读取、普通权限及其设定方法、系统默认权限设定方法、文件用户与用户组的管理、特殊权限的处理、acl权限列表和attr权限进行深入学习。
一、权限查看与读取
一、
1.权限查看
ls -l westos #查看文件权限
ls -l westosdir #查看目录权限
2.权限读取
文件权限信息
-| rw-r–r-- | . | 1 | root | root | 0 | Apr 12 10:57 | westos
目录权限信息
d| rw-r–r-- | . | 2 | root | root | 0 | Apr 12 10:57 | westosdir
每一位的解释:
1)- :文件类型
#- 普通文件
#d 目录
#l 软连接
#b 快设备
#c 字符设备
#s socket套接字
#p 管道 |
2)rw-r–r-- :用户权限
前三位代表拥有者,中间三位是组拥有者,最后三位是其他用户
3). :系统的selinux开启
4)1: 文件内容被系统记录的次数(硬链接个数);目录中子目录的个数
5)root:文件拥有者
6)root:文件拥有组
7)0:文件内容大小;目录中子文件的元数据大小
8)Apr 12 10:57: 文件内容被修改的时间
9)文件名称
二、普通权限的类型与应用
1.用户对文件的身份
u: #user 文件的拥有者 ,ls -l 看到的第五列信息
g: #group 文件拥有组 , ls -l 看到的第六列信息
o: #other 既不是拥有者也不是拥有组成员的其他用户的通称
user> group> other
2.权限类型
-:#权限未开启
r:#可读:可以读取文件的内容;可以ls列出目录中的文件。
w:#可写:可以更改文件内容;可以在目录中修改或删除文件。
x:#可执行:可以调用文件内的程序;可以进入目录中。
三、文件用户用户组管理
实验之前,先创建测试文件,然后监控它的ls -lR
文件所有人所有组修改
chown username file 修改拥有者为username
chgrp username file 修改组为username
chown username./:groupname file 修改拥有者和组同时为username(username与groupname中间有.或者:)
四、设定普通权限的方法
- chmod #设定修改文件权限
1.复制
- chmod --reference=/mnt/d /mnt/file #将d的权限复制给file
2.字符设定
- chmod u-rw /mnt/d #d文件拥有者减少读和写的权限
chmod g+w /mnt/d #d文件组拥有者增加写权限
chmod ug+wx /mnt/d #d文件拥有者与组拥有者增加写和执行权限
chomd a-r /mnt/d #d文件拥有者与组及其他所有身份均减少读权限
chmod u=rwx
/mnt/d #d拥有者权限为读写执行,组与其他身份权限为读与执行
3.数字设定
权限波尔指表示方式
rwx=111=7
rw-=110=6
r-x=101=5
r- -=100=4
-wx=011=3
-w-=010=2
- -x=001=1
“- - -”=000=0
chmod 600 /mnt/d d目录权限修改为 rw-------
修改目录里的内容 -R,-R表示递归。
五、系统默认权限设定
从安全角度来讲,系统共享的资源越少,开放的权力越小,系统安全性就会越高。
umask #查看系统保留权力
系统保留权力为022
规定,文件默认权限=777-umask-111。
目录默认权限=777-umask
计算得,文件与目录默认权限为644和755。
创建文件和目录,查看权限。
1.临时修改
umask 权限值 #临时设定系统预留权力
umask 066 将系统权限临时改为066,计算得到文件与目录权限应当为600和711。创建新的文件验证。
注:临时修改系统默认权限,重新打开shell将重置。
2.永久修改
vim /etc/profile #修改系统配置文件 60-62行进行修改
vim /etc/bashrc #修改shell配置文件 75行左右进行修改
将两个文件分别改为预留权限为000
保存退出。
source /etc/profile
source /etc/bashrc,source的作用使我们的更改立即被系统识别。创建文件和目录,查看权限进行验证。
注:实验测试完毕后请将权限改为默认值,方法同上。
六、特殊权限
1.粘制位(stickyid):
如果一个目录的粘制位开启,那么这个目录里的文件只能被所有人删除。
chmod o+t dir # 设定粘制位
chmod 1777 dir
首先,我们用root创建/westos目录和文件/westos/test,修改/westos目录权限为777。然后登陆普通用户westos发现可以删除root创建的文件/westos/test。
chmod o+t /westos 打开/wesots目录的粘制位,再次创建文件进行上述操作。
操作不被允许,粘制位添加成功,t权限设定成功。
2.强制位(sgid):
对于目录,目录中新建的文件归于所有组;对二进制可执行文件,执行身份均为所有组,与执行用户无关。(汽车工厂)
chmod g+s dir/file
chmod 2原属性 dir/file
目录强制位设定:
测试开始前添加监控,将目录的组改为westos,监控目录中生成文件的属性。
创建目录中的文件,
chmod g+s dir,再次创建文件
test1文件归于westos组中,其组复制了dir目录的组,强制位设定成功。
二进制可执行文件强制位设定:
监视进程,开启进程查看是谁的 /bin/cat,
watch -n 1 “ps ax -o user,group,comm | grep cat” “”中为进程调用,后续会讲到。
chmod g+s /bin/cat 再次看到监视窗口发生改变,/bin/cat变成了他的用户组root。
3.冒险位(suid):
对二进制可执行文件而言,无论是谁在执行文件,都是文件拥有者在执行,与执行者无关(尚方宝剑)。
chmod u+s
chmod 4原属性
强制位测试相似,得到修改后的监控窗口变化,/bin/cat 变成了文件拥有者root。(谁创建的谁就是拥有者)
七、acl权限列表
Access Control Lists 访问控制列表
需求:只让root 和hyl 写文件,在列表中可以设地年特殊用户与特殊文件有特殊权限
创建目录/westos
setfacl -m u:westos:0 /westos/ 设定用户westos在/westos中的特殊权限
setfacl -m g:westos:0 /westos/
设定权限只有root和hyl用户可以执行
getfacl /westos 打开/westos权限列表
setfacl -x u:westos /westos/ 删除用户westos的特定权限
setfacl -b /westos/ 关闭权限列表
权限优先级
拥有者>特殊指定用户>权限大的组>权限少的组>其他(记住!)
mask 能够给予指定用户最大的权限
给定用户权限后,输入ls -ld 查看的包括mask的权限
在acl中用chmod缩小文件拥有组的去权限,mask会发生变化
改变后的是在mask范围内生效,不会改变之前组的权限
setfacl -Rm u::目录与目录里的已存在文件均设定
setfacl -m d:u: :只对新生成的文件生效,对源文件和目录无效
八、attr权限
attr 权限限制所有用户
lsattr dir/file 查看attr权限
设定attr权限
chattr ±i 不能做任何的更改/取消不能做任何修改的限制
chattr ±a 能添加不能删除/取消限制
test
注:目录要进入就必须有执行权限。
1.组建立
2.用户建立
3.最后结果
4.增添第四问:
结果:
注:/pub被所有用户可操作,不需要给所有用户特定权限,只需要打开/pub文件的后三位rwx即可。
总结
本章主要学习了linux系统中的权限管理,结合之前学的内容,对文件和目录权限管理更见深入了解。