一、如何查看及读取权限信息
1. 查看属性
ls -l filename #查看文件属性
- | --------- | . | 1 | root | root | 1339 | Jan 1 12:53 | /etc/shadow |
---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
ls –ld directory #查看目录属性
ls -lR directory ##递归文件也能查看到
d | rwxr-xr-x | . | 139 | root | root | 8192 | Jan 1 12:53 | /etc |
---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
2. 对于属性各字段的理解
- 对于文件属性字段的理解
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
类型 | 文件权限 | SELinux Context | 文件硬链接个数 | 文件拥有者 | 文件拥有组 | 文件大小 | 文件最后一次被修改的时间 | 文件名称 |
- 对于目录属性字段的理解
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
类型 | 目录权限 | SELinux Context | 目录中子目录的个数 | 文件拥有者 | 文件拥有组 | 目录中自文件或子目录元数据大小 | 目录中的内容最后一次被修改的时间 | 目录名称 |
- 文件类型的分类
属性表示 | - | d | l | b | c | s | p |
---|---|---|---|---|---|---|---|
文件类型 | 普通文件 | 目录 | 软链接 | 块设备文件 | 字符设备 | socket套接字 | 命名管道 |
二、文件的拥有者及拥有组
1. 文件的拥有者及拥有组
- Linux 是个多用户多任务的系统,常常会有多人同时使用同一主机来进行工作,为了考虑每个人的隐私权以及每个人喜好的工作环境,对用户进行分类
- 用户对于文件的身份划分:文件拥有者(user);文件所属组(group);其他人(other)
2. 更改文件拥有者及拥有组的方法
- 文件拥有者及拥有组只有超级用户root可以修改
- 更改方式
chown 用户名 文件
chgrp 组名称 文件
chown –R 用户名 目录
chgrp –R 组名称 目录
chown 用户名:组名称 文件|目录
实践:第一步,创造实验环境
第二步,使用 watch -n 1 ls -lR /mnt/ 命令,实时监控,并执行命令
3. 文件权限的理解
rwx | r-x | r-x |
---|---|---|
U | G | O |
文件拥有者对文件的权限 | 文件拥有组对文件的权限 | 其他人对于文件的权限 |
权限类型:
权限类型 | 表示含义 | 针对文件 | 针对目录 |
---|---|---|---|
- | 权限关闭 | ||
r | 查看权限 | 可查看文件中的内容 | 可列出目录中的文件名称 |
w | 可写权限 | 可更改文件记录的内容,不能更改文件属性 | 可对目录里面的文件进行删除,新建,改变文件名称 |
x | 执行权权限 | 可用文件名称调用文件内记录的程序 | 可进入目录 |
注意:只有文件的拥有者和超级用户可以更改文件属性
4. 文件权限设定方式
4.1 文件权限设定方式
- 字符方式设定文件权限:chmod [参数]… 权限模式[,权限模式]… 目标
- 数字方式设定文件权限:chmod [参数]… 权限值… 目标
- 依照模板复制文件权限:chmod [参数]… --reference=模板 目标
4.2 字符方式设定权限
chmod <u|g|o|a><+|-|=><r|w|x> 目标
特别注意:+w只针对于拥有者
a+w 针对于所有人
4.3 数字的方式管理权限
chmod 数字 TAG
权限可以用一个八进制数字来表示
权限 | 二进制 | 八进制 |
---|---|---|
— | 000 | 0 |
–X | 001 | 1 |
-W- | 010 | 2 |
-WX | 011 | 3 |
r– | 100 | 4 |
r–X | 101 | 5 |
rW- | 110 | 6 |
rWX | 111 | 7 |
4.4 权限复制
chmod --reference=属性源文件 TAG
5. 系统预留权限阀值
5.1 对于权限预留阀值的理解
- 资源存在意义在于共享,权限开放越大,共享效果越明显,但是安全性越差;
- 对于系统安全而言,开放权利越小,系统越安全;
- 在系统中开放应开放的权利,保留不安全的权利以确保系统功能性及安全性。
对于目录:预留权限=777-022=755 022是系统设定的预留权限
对于文件:预留权限=777-022=755-111=644 111是硬盘软件设定的预留权
限。
注意:不同的硬盘所对应的软件设定的预留权限不同
5.2 权限预留阀值设定
umask #系统中使用umask来预留权限
在shell中可以使用umask来查看并设定预留权限阀值 umask 预留阀值
设定是暂时设定
永久改变权限阀值
/etc/bashrc shell配置文件
/etc/profile 系统环境配置文件
注意 更改完成后需要source运行更改
6. 特殊权限
6.1 对特殊权限的理解
1.SUID(冒险位):
只针对于二进制可执行文件
使用拥有SUID权限的文件发其中记录的程序时以文件拥有者的身份去执行
3. SGID(强制位)
针对二进制可执行文件 : 该命令发起的程序是以该命令所有组的身份去执行
针对目录 : 目录新建文件的所属组与该目录的所有组保持一致
4. STICKYID(粘滞位):
对于文件:表示文件即使没有被程序调用也会被加载到交换空间中,
对于目录:表示当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件
6.2 对特殊权限的设定
SUID | chmod u+s TAG |
---|---|
chmod 4原文件属性 TAG | |
SGID | chmod g+s TAG |
chmod 2原文件属性 TAG | |
STICKYID | chmod o+t TAG |
chmod 1原文件属性 TAG |
STICKYID设定:
SGID设定:
实验环境
新建文件所属组仍为root
执行SGID设定
新建文件的所属组与目录的所有组保持一致
SUID设定:
实时监控二进制可执行文件cat
在student用户中执行文件,文件以student身份执行
在root中设定SUID权限
在student用户中再次执行文件,文件以root身份执行
7. ACL权限列表
7.1 facl概述及注意事项
- 传统的权限仅有三种身份 (owner,group,other)搭配三种权限 (r,w,x),并没有办法单纯的针对某一个使用者或某一个群组来设置特定的权限需求,此时就得要使用 ACL( 文件访问控制列表Access Control List) 这个机制。
- 注意:因此目前 ACL 几乎已经默认加入在所有常见的 Linux 文件系统的挂载参数中(ext2/ext3/ext4/xfs 等等 ), 但 rhel6.0以及之前的版本默认不支持 acl 的功能。
7.2 有关facl的命令
getfacl #查看权限列表
setfacl
setfacl -m ##设定权限
setfacl -x ##删除指定用户
setfacl -b ##关闭列表功能(+变成.)
创造实验环境 ,实时监控
在root用户下对westos文件可进行读写操作
切换到student用户中,由于没有读写权限,所以对文件不可进行操作
切换回root用户,执行命令,给student用户设定读写权限
再次切换回student用户,可对文件westos执行读写操作
删除student用户,关闭列表
7.3 facl列表权限匹配顺序
资源拥有者>特殊指定用户>权力开放多的组>权力开放少的组>其他用户
- 针对组,谁有权力谁优先
- 特殊指定组的优先级高于文件默认组的优先级
7.4 facl的mask阀值
- 定义:mask阀值是指定用户能够获取的最大有效权限。
- 当设定过facl列表后用chmod缩减文件权限很可能会损坏mask。
- mask的设定:setfacl –m m:权限值 TAG
7.5 facl的default权限
- default权限特性:只对目录设定,只对目录中新出现的文件或目录生效, 对目录本身不生效,对目录中原有文件不生效
- default权限设定方式:setfacl –m d:<u|g>:权限目录
设定指定用户的指定权限目录,但是目录里面的内容权限不会一起变化
在设定权限列表的时候,在命令中加上–R【setfacl –R –m d:<u|g>:权限目录】,权限列表会递归到目录中的所有子文件(file1)或者子目录中
但是对于新建的文件(file2)依旧不生效
可以通过设定默认权限让新建的文件(file3)也可以生效权限,但是对于文件中原本存在的文件(file2)是不生效的
8. chattr权限
- 含义:针对所有用户更改权限,包括root超级用户
-
chattr +a 只能建立但不能删除
chattr +i 不能删除也不能建立