一.对文件权限的理解
1.文件权 限 的理解
以file1文件信息为列: rw- r-- r-- 三个字符为一组
rw- 文件拥有者user对文件的权限
r-- 文件所属组(group)对文件权限
r-- 其他人(other)对文件的权限
权限类型分类 r可读 w可写 x 可执行 - 权限封闭
如下图:
用户westos的uid与文件fille1的uid匹配所以属于前三位权限 ——所有人对文件权限(rw-)
用户root的所有组名称root与文件file1组的身份匹配所以属于中间三位权限 ——所有组对文件权限(r- -)
用户lee的所有组以及所有人都不属于文件file1,与文件所有的身份都不匹配所以属于后三位权限 ——其他人对文件权限(r - -)
对于文件权限的深入理解
进入/mnt创建相关实验所需文件并切换到用户westos
更改读,写,执行权限,查看用户westos下对于文件(file1)的权限影响
更改读的权限 r
vim 进入file1写入内容123并查看文件内容
再次向文件内容写入123456
当把r珊除掉 westos用户则无法读取文件内容
恢复r权限后则可查看
更改文件file1写的权限w
文件内容更改为123并查看
当把w珊除掉再次写入456
此时 westos用户则无法在文件写入内容,权限被拒
更改文件file1执行权力x
向文件写入date命令并调用
当把x珊除掉 westos用户则无法调取文件内的命令程序
对目录权限的深入理解
目录执行权力的理解 x
删除x即无法进入目录(/mnt/linux)
目录写的权力的理解 w
写的权限基于执行权限之上 进不去则无法写入内容
对于目录而言删除写的权限w即无法创建删除文件
读取内容权限的理解r
删除r对目录而言无法产看目录内的详细内容
二.文件权限设定的方式
1.字符 方 式 设 定 权 限
chmod <u|g|o|a><+|-|=><r|w|x|> 目标
+:添加
-: 撤销
=:设定
同时设定文件所有人所有组其他人的权限
也可用(-r,-x,同时取消或添加权限也可以添加参数a, 只有w权限设定时必须加a才可统一设定)
数字方式管理权限
权限可以用一个八进制数字来表示
权限 二进制 八进制
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
权限管理方法:
chmod 数字 文件|目录
r=4 w=2 x=1
采取数字管理权限(快捷)如下:
权限复制
复制权限方式 chmod --reference=属性源文件 TAG
如下:把file1文件的权限复制到file2
复制
三.系统预留权限阀值
对权限预留阀值的理解:
资源存在意义在于共享,权限开放越大,共享效果越明显,但是安全性越差;
对于系统安全而言,开放权利越小,系统越安全;
在系统中开放应开放的权利,保留不安全的权县以确保系统功能性及安全性;
(开放的权限开放,不开放的权限关闭)
查看系统权限阀值 umask
满权限:777
2权限 预 留 阀 值 设 定
umask 参数
临时设定:系统中使用umask来设定预留权限 •umask 预留阀值
永久改变权限阀值:shell配置文件/etc/bashrc 系统环境配置文件/etc/profile
在shell中可以使用umask来查看并设定预留权限阀值
预留权限值越大文件越安全,但功能越少
当前权限预留阀值为:022
建立目录的预留阀值:
777-022=755
建立文件的预留阀值:
文件权限预留阀值与umask有一定关系,linux中文件系统会自动去掉111
777-022=755-111=644
更改权限预留阀值
在shell中设定权限预留阀值为:075
即:创建目录的权限阀值为702
创建文件的权限阀值为602
临时设定权限预留阀值只在当前shell中保留关闭或打开新的shell则会恢复原值
永久设定权限预留阀值
进入/etc/bashrc /etc/profile 设定统一值075
if语句下的是普通用户的权限预留阀值设定参数
else下是超级用户的权限预留阀值设定参数
当设定完成后查看权限预留阀值未改变
此时需关闭当前shell重新打开即可或使用source调用
四.特殊权限
对特殊权限的理解
SUID 只针对于二进制可执行文件 , 使用拥有SUID权限的文件发起记录的程序时以文件拥有者的身份去执行
SGID 针对二进制可执行文件 : 该命令发起的程序是以该命令所有组的身份去执行
针对目录 : 目录新建文件的所属组与该目录的所有组保持一致
STICKYID 对于文件:表示文件即使没有被程序调用也会被加载到交换空间中,
对于目录:表示当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件
1.对于STICKYID的理解如下:
创建实验环境实时监控:[root@workstation Desktop]# watch -n 1 'ls -ld /mnt/linux;ls -l /mnt/linux/'
设置/mnt/linux的目录权限为全部开放
切换到westos用户可在/mnt/linux/创建文件
切换到lee用户可在/mnt/linux/创建文件或删除其他用户文件
设置当前创建的文件只能由创建用户自己删除,其他用户不可删除
2.对SUID 和SGID 深入理解
SUID只针对于二进制可执行文件 , 使用拥有SUID权限的文件发起记录的程序时以文件拥有者的身份去执行
SGID针对二进制可执行文件 : 该命令发起的程序是以该命令所有组的身份去执行
首先设置实时查看系统中的某一进程 [root@workstation Desktop]# watch -n 1 'ps ax -o user,group,comm | grep cat'
user:所有人 group:所有组 comm:进程名称 grep cat : 单独查看cat进程
/bin/cat命令属于超级用户组和超级用户所有人
默认情况下某一用户执行该命令则产生的进程显示所有人所有组都属于该用户
当设定成suid与sgid权限时则不管那一用户执行该命令其所有人和所有组都属于超级用户root
当被执行命令拥有suid权限时,则拥有超级用户部分权限,列如查看文件内容
3.SGID针对目录 : 目录新建文件的所有组与该目录的所有组保持一致
创建实验环境:[root@workstation mnt]# watch -n 1 ls -lR /mnt/
创建一个权限全部开放的目录,在创建文件file
切换到westos用户创建file1,更改目录权限再次创建文件file2及与目录所有组一致都为root
4.特殊权限的字符与数字设定方式
SUID chmod u+s TAG
chmod 4原文件属性 TAG
SGID chmod g+sTAG
chmod 2原文件属性 TAG
STICKYID chmod o+tTAG
chmod 1原文件属性 TAG
创建实验环境:
[root@workstation mnt]# watch -n 1 ls -lR /mnt/
[root@workstation Desktop]# cd /mnt
[root@workstation mnt]# touch file
[root@workstation mnt]# touch file1
字符设定权限:
数字设定权限:
五.ACL权限列表
传统的权限仅有三种身份 (owner,group,othe)搭配三种权限 (r,w,x), 并没有办法单纯的针对某一个使用者或某一个群组来设置特定的权限需求此时就得要使用 ACL( 文件访问控制列表 ,Access Control List) 这个机制
注意: 因此目前 ACL 几乎已经默认加入在所有常见的 Linux 文件系统的挂载参数中(ext2/ext3/ext4/xfs 等等 ), 但 rhel6.0以及之前的版本默不支持 acl 的功能
有关 facl的命令
查看权限列表 : getfacl
设定权限列表:
• setfacl
• -m 设定权限
• -x 删除指定用户
• -b 关闭列表功能
设置某一个文件指定某一个用户拥有某种权限的设置方法如下:
设置westos用户对文件拥有读写权限
[root@workstation mnt]# setfacl -m u:westos:rw /mnt/file
[root@workstation mnt]# getfacl /mnt/file
getfacl: Removing leading '/' from absolute path names
# file: mnt/file
# owner: root
# group: root
user::rw-
user:westos:rw-
group::r--
mask::rw-
other::r--
验证特定用户是否可以进行读写操作
此文件只对超级用户和westos用户可写
切换到普通用户westos 并写入123,查看
切换到普通用户lee进入文件无法编写内容并保存权限被拒
建立删除指定用户westos,lee
关闭权限列表
+消失
六.facl 列 表 权 限 匹 配 顺 序
资源拥有者
特殊指定用户
权利开放多的组
权利开放少的组
其他用户
1.理解:资源拥有者高于特殊指定用户
更改文件file的所有人和所有组为westos,指定文件的所有人也为westos且权限封闭,切换到westos 在文件file中可以正常写入内容
2.对于组成员而言:权利开放多的组高于权利开放少的组
如下特殊指定的组能够对文件进行编辑
当前文件file的组没有写的权限,指定lee用户组有读写执行的权力,切换到lee可以编辑文件内容
用户的组的权力大则属于那个用户组
可以编辑内容
七.f a cl 的m a sk 阀 值
[root@workstation mnt]# getfacl /mnt/file
getfacl: Removing leading '/' from absolute path names
# file: mnt/file
# owner: westos
# group: westos
user::rw-
group::r--
group:lee:rwx
mask::rwx ~ mask阀值
other::r--
mask阀值是指定用户能够获取的最大有效权限
当设定过facl列表后用chmod缩减文件权限很可能会损坏mask
缩减文件权限mask值会损坏:如下
恢复mask值:mask的设定 setfacl –m m:权限值 TAG
八f a cl 的d ef a u l t 权 限
default权限特性
1只对目录设定
2只对目录中新出现的文件或目录生效
3对目录本身不生效
4对目录中原有文件不生效
在/mnt/创建目录linux及文件file
指定用户westos对目录linux拥有rwx权限,对目录里面文件没有权限
加入参数-R只是针对与目录中已有的文件递归设置权限,设定的权限对新建文件不生效
对新创建的文件file3设定权限,原已有的文件不对该设定生效:
[root@workstation mnt]# setfacl -m d:u:westos:rwx /mnt/linux/
对原亦有的文件file2不生效
知识点补充:
linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发现。
当某个用户在权限满足的情况下但是却无法删除某一文件或这只能在文件内容后面追加内容而不能覆盖/修改/删除内容。此时文件则被设置了隐藏权限
chattr命令:用于设置文件的隐藏权限,格式为:“chattr 参数 文件”
给文件添加隐藏权限则在命令后“+参数”反之删除“-参数”
以参数“a"为列:
创建文件file 并删除,成功执行
设置隐藏权限a则不能删除和覆盖该文件
lsattr:用于显示文件的隐藏权限,格式:“lsattr 参数 文件”
文件的隐藏权限必须用该命令查看,ls之类查看权限的命令无法看出