目录
1. 查看及读取权限信息
1.1 文件属性的查看
[root@localhost Desktop]$ ls -l file
- rw-rw-r-- . 1 root root 0 Jan 6 23:24 file
1 2 3 4 5 6 7 8 9
1、普通文件
2、文件权限
3、SELinux Context
4、文件硬链接个数
5、文件拥有者
6、文件拥有组
7、文件大小
8、文件最后一次被修改时间
9、文件名称
1.2 目录属性的查看
[root@localhost Desktop]$ ls -ld dir
d rwxrwxr-x . 2 root root 6 Jan 6 23:24 dir
1 2 3 4 5 6 7 8 9
1、表示目录
2、目录权限
3、SELinux Context
4、目录中子目录的个数
5、文件拥有者
6、文件拥有组
7、目录中自文件或子目录元数据大小
8、目录中的内容最后一次被修改的时间
9、目录名称
在这里要注意,第一个字符除了[-]、[d]之外还有[I]、[b]、[c],分别代表:
[I]:表示为连接文件
[b]:表示设备文件里面的可供存储的接口设备
[c]:表示设备文件里面的串行端口设备
2. 文件的拥有者及拥有组
在Linux中,创建一个文件时,该文件的文件拥有者就是创建该文件的用户,在文件用户下我们可以修改该文件的拥有者和拥有组。因为root为超级用户,因此可以修改文件的拥有者及用户组。在文件权限这块,分了三个部分,分别是:文件的拥有者所拥有的权限、该文件所在用户组的用户所拥有的权限、其他用户所拥有的权限。
2.1 对于文件的身份划分
由于Linux是一个多用户多任务的系统,同一台主机可以同时很多人来进行操作,那么这种情况下,为了保护个人隐私以及每个人不同习惯,我们就需要对用户进行分类。
根据文件身份划分可分为:
user:文件拥有者
group:文件所属组
other:其他人
2.2 更改文件拥有者及拥有组的办法
在这里我们首先要确认文件拥有者和拥有组只有超级用户root可以修改。
命令 | 作用 |
chown username file | 改变文件所有者 |
chown -R username directory | 改变目录所有者 |
chgrp groupname file | 改变文件所属用户组 |
chgrp -R groupname directory | 改变目录所属用户组 |
chown username:groupname file|directory | 将子目录下的文件文件所有者和目录所有者进行更改 |
3. 文件权限的理解
3.1 文件权限的读取
- rw- rw- r-- . 1 root root 0 Jan 6 23:24 file
U(红色):文件拥有者对文件的权限
G(蓝色):文件拥有组对文件的权限
O(橙色):其他人对于文件的权限
3.2 权限类型
- :权限关闭,即没有此位的权限。
r[readable]:查看权限。文件拥有此项权限可以查看文件的内容,目录拥有此项权限能够列出目录下文件的名称。
实例:文件拥有该权限和未拥有该权限的区别
实例:目录拥有该权限和未拥有该权限的区别
w[writeable]:可写权限。文件拥有此项权限可以更改文件中的内容,而目录拥有此项权限可以对目录中的文件进行删除和修改操作。
实例:文件拥有该权限和未拥有该权限的区别
实例:目录拥有该权限和未拥有该权限的区别
x[excutable]:执行权限。文件拥有此项权限可以通过调用文件名称来查看文件内记录的程序,目录拥有该项权限则可以进入目录。
实例:文件拥有该权限和未拥有该权限的区别
实例:目录拥有该权限和未拥有该权限的区别
4. 文件权限设定方式
4.1 字符方式设定文件权限
设定方式 | 命令 |
字符方式设定文件权限 | chmod [参数]... 权限模式[,权限模式]... 目标... |
4.2 数字方式设定文件权限
设定方式 | 命令 |
数字方式设定文件权限 | chmod [参数]... 权限值... 目标... |
权限 | 二进制 | 八进制 |
--- | 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.3 依照模板复制文件权限
设定方式 | 命令 |
依照模板复制文件权限 | chmod [参数]... --reference=模板 目标... |
5. 系统预留权限阀值
5.1 权限预留阀值的定义
资源的存在意义就是因为它可以分享,而权限开放的越大,共享的效果就越明显,但是安全性就越差。而对于系统安全的方面来说,那么开放的权力越小,相对来说系统就越安全。那么在这种情况下,开放应开放的权力,保留其中的一些会导致不安全因素的权力,来确保系统功能性及安全性。
5.2 权限预留阀值设定
查看阀值:umask,下图为系统默人文件阀值和目录阀值:
777-022(系统预留)=755(建立一个目录默认权限值)- 111(设备预留)= 644 (建立一个文件的默认权限值)
临时改变阀值:umask 阀值
## 临时改变
[root@workstation mnt]# umask 077
[root@workstation mnt]# umask
0077
永久改变阀值:
(1)vim /etc/bashrc
vim /etc/profile
(2)进入bashrc、profile配置界面中,修改umask值,修改后退出保存。要注意一点,我们修改过后阀值不是直接改变的,这个时候需要我们通过source /etc/bashrc、source /etc/profile来完成修改阀值的操作。
## 永久改变
[root@workstation mnt]# vim /etc/bashrc
[root@workstation mnt]# vim /etc/profile
[root@workstation mnt]# source /etc/bashrc
[root@workstation mnt]# source /etc/profile
[root@workstation mnt]# umask
0077
6. 特殊权限
6.1 特殊权限的定义及设定
SUID:只针对二进制可执行文件,拥有该权限的文件执行文件中程序时是以文件拥有者的身份去执行的。
特殊权限 命令 SUID chmod u+s TAG chmod 4原文件权限 TAG SGID:针对二进制文件,该命令发起的程序是以所有组的身份去执行的;针对目录,其中新建文件的所属组与该目录所有组保持一致,已经存在的文件所属组不变。
特殊权限 命令 SGID chmod g+s TAG chmod 2原文件权限 TAG STICKYID:针对文件,表示即使文件没有被调用也会被加载到交换空间中;而针对目录,表示当目录上有STICKYID权限时,所有用户在该目录下均可创建文件,但只有文件拥有者和root用户才可以删除该目录下文件。
特殊权限 命令 STICKYID chmod o+t TAG chmod 1原文件权限 TAG
6.2 特殊权限的设定实例
o+t实例:
g+s实例:
u+s实例:
采用ps ax用户查看进程信息 -o去指定进程的用户是谁进程属于哪个组以及进程的名字是什么
命令:watch -n 1 'ps ax -o user,group,comm|grep cat'
首先我们先查看,cat文件属于root用户和root组,在普通用户下执行该文件,可以发现结果是谁调用的cat程序就是谁开启的cat程序。
那么如何去设定并令在执行的时候必须用固定身份去执行,就牵扯到我们刚学习的GUID。
可以很明显的看出,在我们为该文件设定GUID权限后,能够保证文件使用者身份不会因为用户的改变而发生改变,而是通过固定的身份去运行的。
7. ACL权限列表
7.1 facl概述及注意情况
传统的权限三个身份(user、group、other)拥有着三种权限(r、w、x),但是若是多个用户或者多个组需要设置特定的权限的需求,这个时候就需要用到ACL(文件访问控制列表,Access Control List)机制。
注意:rhel6.0以及之前的版本默认不支持acl功能,因此没办法直接调用
7.2 facl的有关命令
(1)查看权限列表:getfacl
(2)设定权限列表:setfacl -m(设定权限)
setfacl -x(删除指定用户)
setfacl -b(关闭列表功能)
(3)实例:
setfacl -m(设定权限):
setfacl -x(删除指定用户):
setfacl -b(关闭列表功能):
1、通过acl设置多个用户权限
2、通过setfacl -b命令全部关闭
7.3 facl列表权限匹配顺序
资源拥有者 | |
特殊指定用户 | |
权限开放多的组 | |
权限开放少的组 | |
其他用户 |
7.4 facl的mask阀值
facl的mask阀值表示给指定用户最大的权限,而当我们通过chmod命令来改变文件权限的时候可能会修改facl的mask阀值。
设置mask阀值
修改文件权限影响mask阀值
还原mask阀值
7.5 facl的default权限
facl的default权限是指设置目录的默认权限列表。
通过"setfacl -m d:<user|group>:权限 权限目录"来对目录设置默认权限,在这里我们要注意的是default权限只对目录设定。
在这里我们可以看到目录的针对dsd2333用户拥有rwx权限,但是目录中文件权限列表中依旧没有dsd2333这个用户。
在这里我们在设置目录权限时通过-R来同时把特定用户权限下发到文件,但是当我们重新创建一个新文件时,会发现新的文件权限并没有改变,在这里我们就需要对其设置default默认权限。
通过上图我们可以很清楚的看到设置默认权限只影响目录中的新文件,对于目录本身和目录中的旧文件没有影响。