如何查看及读取权限信息
查看文件属性
对于属性各字段的理解
对于文件属性字段的理解 | 对于目录属性字段的理解 |
---|---|
1 类型 | 1 类型 |
2 文件权限 | 2 目录权限 |
3 SELinux Context | 3 SELinux Context |
4 文件硬链接个数 | 4 目录中子目录的个数 |
5 文件拥有者 | 5 文件拥有者 |
6 文件拥有组 | 6 文件拥有组 |
7 文件大小 | 7 目录中自文件或子目录元数据大小 |
8 文件最后一次被修改的时间 | 8 目录中的内容最后一次被修改的时间 |
9 文件名称 | 9 目录名称 |
文件的拥有者及拥有组
文件的拥有者及拥有组
linux是一个多用户多任务的系统,经常会出现很多人使用一台主机进行工作,为了每个人的隐私权以及喜爱的工作环境,对用户进行分类。
用户对文件的划分 文件的拥有者 文件的所属组 其他人
更改文件拥有者及拥有组的方法
- 文件拥有者及拥有组只有超级用户root可以修改
- 更改方式如下
chown 用户名 文件
chgrp 组名称 文件
chown –R 用户名 目录
chgrp –R 组名称 目录
chown 用户名 : 组名称 文件 | 目录
在/mnt/ 下建立3个文件和一个目录,在目录中在建立3个文件,然后对其拥有者和所属组进行更改
建立好以后,利用watch命令来对目录以及文件进行监控
- chown haha /mnt/haha1 ##更改文件的所有者
- chgrp haha /mnt/haha2 ##更改文件的所有组
- chown haha.tom /mnt/haha3 ##更改文件的所有者和所有组
- chown haha /mnt/pipidir/ 更改目录拥有者(文件内的拥有者不变)
- chown root /mnt/pipidir/
- chown -R haha /mnt/pipidir/ 批量管理目录拥有者(文件内的拥有者全部改变)
- chgrp -R haha /mnt/pipidir/ 批量管理目录所属祖(文件内的所属组全部改变)
文件权限的理解
文件权限读取
权限类型
权限类型 | 权限含义 |
---|---|
- 关闭权限 | 此位权限 未开启 |
r readable 查看权限 | 1.对于文件 可查看文件中的内容 2.对于目录 可列出目录中的文件名称 |
w writeable 可写权限 | 1.对于文件 可更改文件记录的内容 2.对于目录 可更改目录中文件元数据 |
x excutable 执行权权限 | 1.对于文件 可用文件名称调用文件内记录的程序 2.对于目录 可进入目录 |
文件权限的设定方式
设定权限的方式
设定方式 | 用法 |
---|---|
字符方式设定文字权限 | chmod 参数 权限模式 目标 |
数字方式设定文字权限 | chmod 参数 权限值 目标 |
依照模板复制文字权限 | chmod 参数 - -reference=模板 目标 |
字符方式设定权限
chmod <u/g/o/a> <+/-/=><r/w/x> 目标
例如:
chmod u=rw file1
chmod ug-w,o+x file2
chmod -r|-x|-w haha
chmod a-w haha
数字方式设定文件权限
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 |
实验一
让file1权限变成file2
让file3的权限变为rwxrwxr-x
依照模板复制文件权限
chmod 参数 - -reference=模板 目标
实验二
复制file2的权限给file1
系统预留权限阀值
对于权限预留阀值的理解
资源存在意义是为了共享,权限开放越大共享越多,但安全性也更小;权限开放越小,系统也就越安全,但共享资源变少。因此,在系统中,我们需要开放应该开放的权利,保留不安全的权利以确保系统的安全性和功能性。
权限预留阀值设定
1.umask——系统中使用umask来查看并设定预留权限阈值
级别越高系统越安全,权限越小。
说明:用户身份不同,安全级别也不同。
预留阀值是022,系统的满权限是777,所以,建立目录的权限是777-022=755,建立的文件的权利是755-111=644(其中111是文件系统保留权限,是硬盘软件设定的不能改,不同文件系统的预留权限不一样)
2.更改预留权限的阀值
临时更改权限阀值 umask + 数字
但是,在重新打开一个shell之后,设定就会被修改
永久改变权限阀值
shell配置文件(/etc/bashrc)+ 系统环境配置文件(/etc/profile)
vim /etc/bashrc vim /etc/proofile
source /etc/bashrc source /etc/proofile
打开/etc/bashrc文件
注意观察if语句所给出的先决条件,来判断else语句之前和之后的内容分别对应哪一类用户
如图中所示,else语句之前表示普通用户,之后表示超级用户
修改超级用户umask为077
wq退出保存
打开/etc/profile文件
同样按照上图内容进行修改,不在赘述
注意:内容的设定必须完全一致!!!
更改完成后需要用source调用
Linux中的特殊权限
对特殊权限的理解
特殊权限 | 用法 |
---|---|
SUID | 只针对二进制的可执行文件,发起使用suid权限的文件时,都以文件所有人身份执行 |
SGID | 针对二进制可执行文件,发起时以文件所有组身份执行,和是谁发起无关;针对目录,目录中新建文件所属组会自动与目录所有组保持一致 |
STICKYID | 对于文件,即使文件没有被程序调用也会被加载到交换空间;对于目录,有stickyid权限时,所有用户在该目录下均可创建文件,但只有文件拥有者和root用户可以删除该目录下的文件 |
stickyid(粘滞位) chmod o+t directory
other位t权限开启时,针对目录,目录里的文件只能被文件所有人删除,否则不行;
t权限开启时,对于文件,即使没有被程序使用也会自动加载到系统内存中。
实验三
在/mnt下建立一个权限全部开放的目录public,用户haha在目录下建立一个文件file1,用户westos在目录下建立一个文件file2
用户westos不仅可以删除自己建立的文件,也可以删除用户haha建立的文件
利用chmod o+t directory
命令让用户只能删除自己的文件
suid(冒险位)chmod u+s TAG
设定命令在执行的时候必须用一个固定的用户身份去执行,使用时发起以文件所有人身份执行。
实验四
利用watch -n 1 "ps ax -o user,group,comm |grep cat"
来观察进程
注意:进程的所有人和文件的所有人是没有关系的,谁执行的动作产生的进程就是谁的
设定suid在二进制可执行文件/bin上
sgid(强制位)chmod g+s TAG
针对二进制可执行文件 该命令发起的程序以命令的所有组身份执行;针对目录 ,目录新建文件的所属组与该目录的所有组保持一致
实验五
以文件的所有人和所有组身份执行:
对特殊权限的设定
1.字符方式
suid: chmod u+s TAG
sgid: chmod g+s TAG
stickyid:chmod o+t TAG
特殊权限 | 理解 |
---|---|
u+s | 不管命令是谁发起的,以文件所有人身份执行 |
g+s | 不管命令是谁发起的,以文件所有组身份执行 |
g+s | 在目录下新建文件,文件所属组与目录所属组相同,与建立者无关 |
o+t | 目录下的文件,只能删除属于自己的文件 |
2.数字方式
suid: chmod 4原文件属性 TAG
sgid: chmod 2原文件属性 TAG
stickyid:chmod 1原文件属性 TAG
ugo | 二进制 | 八进制 |
---|---|---|
- - t | 001 | 1 |
- s - | 010 | 2 |
- s t | 011 | 3 |
s - - | 100 | 4 |
s - t | 101 | 5 |
s s - | 110 | 6 |
s s t | 111 | 7 |
ACL列表
facl概述及注意事项
传统的权限仅有 owner,group,othe三种身份,搭配 r,w,x三种权限,。并没有办法单纯的针对某一个使用者或某一个群组来设置特定的权限需求 , 此时就得要使用 ACL( Access Control List 文件访问控制列表) 这个机制。
注意:
因此目前 ACL 几乎已经默认加入在所有常见的 Linux 文件系统的挂载参数中(ext2/ext3/ext4/xfs 等等 ), 但 rhel6.0以及之前的版本默认不支持 acl 的功能。
有关facl的命令
查看权限列表 getfacl filename
权限最后一位不是.是 +代表权限列表开启
权限列表开启后不再看普通权限,用getfacl查看真实权限.
包括:文件的名称;文件的所有组,文件的所有人的权限;特殊用户的权限;文件的组成员的权限;其他人的权限。
mask表示能赋予特殊用户最大权利的值。
getfacl | 查看权限列表 |
---|---|
setfacl -m | 设定权限 |
setfacl -x | 删除指定用户 |
setfacl -b | 关闭列表功能 |
实验六
在/mnt下创建文件file,使得普通用户student对file文件可写
清空实验环境,在/mnt下建立文件file,并通过监控命令查看目录中文件以及查看权限列表
这个文件对于用户westos来说是没有权限的
我们可以利用getfacl命令来下放权限