文章目录
1.如何查看及读取权限信息
ls -l 文件名 #查看文件属性(=ll 文件名)
ls -ld 目录名 #查看目录属性
对于属性各字段的理解
对于文件属性字段的理解 | 对于目录属性字段的理解 | |
---|---|---|
1 | 类型 | 类型 |
2 | 文件权限 | 目录权限 |
3 | SELinux Context(安全上下文) | SELinux Context |
4 | 文件硬链接个数,即文件被系统记录的次数 | 目录中子目录的个数 |
5 | 文件拥有者 | 目录拥有者 |
6 | 文件拥有组 | 目录拥有组 |
7 | 文件大小 | 目录大小 |
8 | 文件最后一次被修改的时间 | 目录最后一次被修改的时间 |
9 | 文件名称 | 目录名称 |
示例
2. 文件的拥有者及拥有组
Linux 是个多用户多任务的系统 , 常常会有多人同时使用同一主机来进行工
作 , 为了考虑每个人的隐私权以及每个人喜好的工作环境 , 对用户进行分类
用户对于文件的身份划分:
文件拥有者(user)文件所属组(group) 其他人(other)
更改文件拥有者及拥有组的方法
• 文件拥有者及拥有组只有超级用户root可以修改
• 更改方式如下
chown 用户名 文件 #修改文件的拥有者
chgrp 组名称 文件 #修改文件的拥有组
chown 用户名 目录 #修改目录的拥有者,但不修改目录里面内容的所有人
chgrp 组名称 目录 #修改目录的拥有组,但不修改目录里面内容的所有组
chown –R 用户名 目录 #修改目录的拥有者,同时递归修改目录里面内容的所有人
chgrp –R 组名称 目录 #修改目录的拥有组,同时修改目录里面内容的所有组
chown 用户名:组名称 文件 | 目录 #同时修改所有人和所有组(其中的“:”也可以用“.”)
(1)、先打开一个shell输入监控命令
watch -n 1 ls -Rl /mnt
(2)、重新打开一个shell,在/mnt下建立一些文件和文件夹
(3)、用root身份对文件的所有人和所有组进行修改
3. 文件权限的理解
文件权限的读取
权限类型
- | 关闭权限,表示此位权限未开启 |
---|---|
r | 读权限,对于文件可查看文件内容,目录可列出目录中的文件名称 |
w | 写权限,对于文件可更改文件中的内容,对于目录,只能增加或删除文件,不能更改文件中的内容 |
x | 执行权限,对于文件,可用文件名称调用文件内记录的程序,对于目录可进入目录(cd切换) |
4. 文件权限设定方式
用命令 chmod 对文件权限进行设置,chmod 命令的工作方式有三种:
1、字符方式设定文件权限
chmod [参数]... 权限模式[,权限模式]... 目标...
chmod <u|g|o|a><+-=><rwx> 目标
eg:chmod u+x 目标
chmod u=rw
chmod a-w 目标 #文件拥有者、拥有组、其他人都去掉写的权限
chmod ug+x #文件的所有者和所有组都添加执行的权限
2、数字方式设定文件权限
权限可用一个八进制数字来表示:
权限 | 二进制 | 八进制 |
---|---|---|
- - - | 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 数字 目标
3、依照模板复制文件权限
• chmod [参数]... --reference=模板 目标...
复制权限方式: chmod --reference=属性源文件 目标文件
例: chmod --reference=/mnt/westos westos1
修改前文件的权限:
修改后文件的权限:
5.系统预留权限阀值
1、资源存在意义在于共享,权限开放越大,共享效果越明显,但是安全性越差。对于系统安全而言开放权利越小,系统越安全。在系统中开放应开放的权利,保留不安全的权利以确保系统功能性及安全性。
2、可以使用 umask 命令查看系统中预留权限阀值,如下图:
从图中可以看到,不同用户身份的权限预留阀值是不同的,以root用户的权限预留阀值为例,第一个0表示特殊权限的预留阀值,先忽略它,可以看到root用户的权限预留阀值为022,系统里的满权限为777,减去权限预留阀值022,结果为755,因此可知root用户建立的目录的权利为755,建立文件的权利为777-755-111=644,可由下图观察到(监控命令为 watch -n 1 ls -Rl /mnt)
权限预留阀值设定
系统中使用 umask 命令来预留权限
umask #查看预留权限阀值
umask 预留阀值 #设定预留权限阀值,为临时设定,只在当前shell中有用,关闭当前shell再重新打开以后就没啦
永久改变权限预留阀值:
vim /etc/bashrc #改变shell配置文件
vim /etc/profile #改变系统环境配置文件
注意:一定要两个文件一起改,并且修改的值也要相同
永久改变权限预留阀值过程:
1、 vim /etc/bashrc
shell配置文件部分截屏
要想改超级用户的权限预留阀值就需要else语句后面的umask的值,值越大,代表预留权限越多,则对用户的权限就越小,安全性就越高
2、vim /etc/profile
系统配置文件部分截屏
系统配置文件和shell配置文件预留权限阀值是同步的,因此和shell配置文件的修改也一样
3、修改root用户的预留阀值为077,修改完成以后需要用source命令让我们的更改生效
4、可以看到修改以后root用户建立的目录的权限为700(777-077=700),建立的文件的权限为600(777-077-111=600),结束!
6. 特殊权限
对特殊权限的理解
SUID
• 只针对于二进制可执行文件 , 使用拥有SUID权限的文件发其中记录的程序时以
文件拥有者的身份去执行
SGID
• 针对二进制可执行文件 : 该命令发起的程序是以该命令所有组的身份去执行
• 针对目录 : 目录新建文件的所属组与该目录的所有组保持一致
STICKYID
• 对于文件:表示文件即使没有被程序调用也会被加载到交换空间中,
• 对于目录:表示当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件
对特殊权限的设定
SUID
chmod u+s 目标文件(chmod 4原文件属性 目标文件)
例如:chmod u+s /bin/cat = chmod 4777 /bin/cat
观察过程:
1、设置观察环境
watch -n 1 ‘ps ax -o user,group,comm | grep cat’
#显示系统中调用cat命令的进程的用户,组,进程名字的信息
##ps ax 显示系统中所有进程的所有信息;
ps ax -o user,group,comm 只看所有进程的用户,进程属于哪个组,进程名字是什么;
grep cat表示捕捉cat命令的信息;
2、查看文件/bin/cat的属性可知,该文件的所有人、所有组均为root
3、当以student用户去执行 /bin/cat 命令以后产生的进程显示是谁调用了该命令则该文件显示用户和组均为谁,即进程的所有人和文件的所有人无关,谁执行了动作产生的进程就应该是谁的,ctrl+c 结束该进程
4、使用命令 chmod u+s /bin/cat 设定让这个命令在执行时必须用一个固定的用户身份,可以看到拥有者的权限中的x变成了s
切换到student用户后再次执行 /bin/cat 命令可以看到进程中的所有者变成了文件的所有者root
SGID
chmod g+s 目标文件(=chmod 2原文件属性 目标文件)
例如:chmod g+s /bin/cat = chmd 4777 /bin/cat
接SUID的实验,使用命令 chmod g+s /bin/cat 设定让这个命令在执行时必须用一个固定的用户身份,可以看到拥有组的权限中的x变成了s
再次切换到student用户后执行 /bin/cat 命令可以看到进程中的所有组变成了文件的所有组root
STICKID
表示当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件
chmod o+t 目标文件(=chmod 1777 目标文件)
例如:chmod o+t /mnt/pub = chmod 4777 /mnt/pub
实验过程:
1、先建立一个目录,将权限修改为777,则此目录为一个公共目录,任何人可以读写执行该目录里的内容,可以任意建立文件,可以任意删除文件,竟然也可以删除别人的文件。这合理吗。。。?要是这样那不乱了套了
因此我们需要设置一些特殊权限,让用户只能删除自己的文件而不能删除别人的文件,这就需要SKICKID权限,使用 chmod o+t /mnt/pub 命令来设置权限,此时我们可以看到别的用户只能删除自己的文件而不能删除别人的文件。
结束!
来源:CSDN
作者:weixin_46138661
链接:https://blog.csdn.net/weixin_46138661/article/details/103921734