L016-linux系统文件权限体系实战深入讲解小节
L016-linux系统文件权限体系实战深入讲解小节
不知道今天能不能写完哈,能写完发出来就是这周发两次小结了,有进步哦,不过L015和L016两节课内容也确实不多,进入正题
上一课学到了chmod、chown、umask,相对于比较基础的命令,那么这节就要接触这两个命令了,虽然老师也说了,不常用!
setuid和setgid
一、setuid
我们先来看看怎么查看一个文件是否有setuid的属性,然后再来总结他的功能把。
[root@moban ~]# ls -l `which passwd`
-rwsr-xr-x. root root Feb /usr/bin/passwd
仔细看,看到黄色背景的s没?对头,这就是setuid的标志,那么可能会问,原来的x怎么办?有x为s,没有x为S,就是大小写。
直接小结:
1)用户对应的前三位的x位上如果有s就表示suid。当x位上没有x的时候,suid就是S。
2)setuid位是让普通用户可以root(或其他)用户的角色运行只有root(或其他)帐号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。(注意和su及sudo的区别)
直接看结论文字可能很难理解,那么下面用一个实例来理解一下:
通过给rm命令设置suid加深理解
首先使用传统的方法来解决(sudo)
1)使用sudo
sudo是学过的一种方法(尚方宝剑)
系统管理员:root
普通账户:oldboy
我在oldboy帐号上想删除test.txt
[oldboy@moban oldboy]$ rm -f test.sh
rm: cannot remove `test.sh': Permission denied //妈呀,权限不够
这是因为我们普通用户并没有使用“rm”的权限,所以我们可以在sudo中填加“rm”命令:
[root@moban oldboy]# visudo
进入visudo配置文件后,转到第89行(89gg)
oldboy ALL=(ALL) NOPASSWD:ALL,/bin/rm
加入的为/bin/rm(rm的绝对路径)
然后保存退出,再尝试下
[oldboy@moban oldboy]$ sudo rm -f test.sh //成功删除,木有问题
2)现在开始使用setuid(新方法,应用程度更广)
系统管理员:root
普通账户:oldboy
此刻:
我在oldboy帐号上想删除test.txt
[oldboy@moban oldboy]$ rm -f test.sh
rm: cannot remove `test.sh': Permission denied //妈呀,权限不够
为啥?
权限不够,什么权限不够?这里一定要注意,跟文件毛关系都没有,跟你的命令有关系
删除用的是“rm”命令,那么查看一下这个rm的权限
[root@moban oldboy]# ll `which rm|tail -` //用到tail是因为which rm有两行结果,ll只能显示一个,所以用tail -1显示最后一行。
-rwxr-xr-x. root root Nov /bin/rm
由上面可以看出因为oldboy是普通用户,没有删除权限。那么用什么命令呢?对,就是setuid。
用root赋予rm的setuid权限:
[root@moban oldboy]# chmod u-s `which rm | tail -`
[root@moban oldboy]# ll `which rm | tail -`
-rwsr-xr-x. root root Nov /bin/rm //由此可以看到了属主的x位变为s了
设置好后,我们用oldboy帐号删除test.sh
[oldboy@moban oldboy]$ rm -f test.sh
OK成功删除
那么再来个小节吧:
suid知识小节:suid修改的是执行的命令,而不是处理的目标文件
[root@moban oldboy]# chmod u+s test.sh //不使用数字加权限
[root@moban oldboy]# ll test.sh
-rwSr--r-- root root May : test.sh
下面这段话很重要:
从rm的信息可以看出来rm命令文件是属主是root,也就是说rm有setuid权限的话,其他普通用户使用rm时都是对应的root对rm命令的权限,如果rm的属主是oldboy,那么其他用户使用rm的权限是对应oldbo对rm命令的权限。这点一定要清楚。
那么,如果想知道系统中都有哪些命令有suid权限呢?
[root@moban ~]# find /usr/bin/ -type f -perm //perm就是find命令里加权限的参数
/usr/bin/crontab
/usr/bin/chage
/usr/bin/pkexec
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/at
也可以这样,更清晰,更直观
[root@moban ~]# find /usr/bin/ -type f -perm -exec ls -l {} \;
-rwsr-xr-x. root root Nov /usr/bin/crontab
-rwsr-xr-x. root root Dec /usr/bin/chage
-rwsr-xr-x. root root Sep /usr/bin/pkexec
-rwsr-xr-x. root root Feb /usr/bin/passwd
-rwsr-xr-x. root root Dec /usr/bin/gpasswd
-rwsr-xr-x. root root Dec /usr/bin/newgrp
-rwsr-xr-x. root root Jan /usr/bin/at
总体结论:
1)suid修改的执行的命令,而不是处理的目标文件。
2)仅对二进制命令程序或程序有效,不能用在shell等类似脚本文件上(因为shell脚本仅仅是调用二进制程序而已,因此,具体权限还需要看二进制命令本身)。
3)二进制命令或程序需要有可执行权限x。
4)suid权限仅在程序执行过程中有效。
5)执行命令的任意系统用户都可以获得该程序命令程序执行期间拥有者的权限
6)suid是一把双刃剑,对系统安全有一定的威胁。系统suid的无用的功能取消suid权利(安全优化)
二、setgid
与sgid不同的是,sgid既可以针对文件也可以针对目录设置!sgid是针对用户组权限修改的。
sgid知识小节
对于文件,sgid的功能如下:
1)sgid仅对二进制命令程序有效。
2)二进制命令或程序需要可执行权限x。
3)执行程序的人以用户可以获得该命令程序执行期间所属组的权限。
对于目录:sgid的功能如下:
用户在此目录下创建文件和目录,具有次目录相同的用户组。
setgid位主要用在目录中,当为某个目录设置了setgid位以后,在该目录中新创建的文件具有该目录的所有者权限,而不是创建该文件的用户的默认所有者,这样,使得在多个用户之间共享目录中的文件变得简单。提示:用八进制数2000表示setgid权限位。
上面,我们把setuid和setgid分别做了总结和说明,下面我们把setuid和setgid一起总结一下,看看他们的区别:
命令形式上的区别:suid是针对用户 sgid针对用户组
setuid和setgid设置说明:
特殊权限位数字权限(八进制)方法
setuid位是设置用八进制的4000,setgid占用的是八进制的2000;比如我们前面所说的chmod 4755 /bin/rm 就是设置的setuid位;
setuid设置方法:
[root@moban admins]# chmod /bin/rm //设置rm的权限为4755,就把setuid位设置好了。就是一个4
另一种方法:
[root@moban admins]# chmod u+s /bin/rm
setgid设置方法:
[root@moban admins]# chmod /home/admins/ //设置admins目录的权限为2755,就把setgid设置好了,就是一个2
另一种方法:
[root@moban admins]# chmod g+s /home/admins/
另一种情况
如果需要同时设置setuid和setgid,可以设为6:
[root@moban admins]# chmod /home/admins/
优先级关系:suid的优先级比sgid高
三、sbit粘滞位
粘滞位在权限中显示为t,有执行权限的显示为T,是在显示在其他用户权限中
那么什么是粘滞位?
系统中自带的粘滞位为根目录下的tmp(经典的粘滞位目录),有了粘滞位以后各用户用户组的小朋友均可以在目录里面创建文件,而且每个人只能管理自己所创建的东西,其他的人是无法操作的。
tmp 是经典的粘滞位目录,特别,谁都有写权限,因此安全成问题,常常的木马第一手跳板地点。
特殊权限为对应的数字:
suid 4000 s
sgid 2000 s
粘滞位:1000 t
chmod7755 test //同时设置suid,sgid和sbit
其实如果想同时设置的话,就是把他们相加。
四、文件属性和文件系统属性的关系
chattr 和 lasttr
这两个命令在之前linux系统优化的时候讲到过,当时是讲到的用’+i‘和’-i‘参数来给命令上锁解锁,起到一个系统防护的作用,那这堂课呢,主要讲的是’+a‘和‘-a’参数,下面我们来一起详细的看吧。
chattr +i
使用chattr +i来锁定命令文件,这样文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
chattr +a
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
那我们来做一个试例吧:
[root@moban home]# cat ceshi.txt
ajfksd
ajfksd
ajfksd
[root@moban home]# chattr +a ceshi.txt
[root@moban home]# echo ajfksd >> ceshi.txt
[root@moban home]# echo ajfksd > ceshi.txt //全部替换,提示没有权限
-bash: ceshi.txt: Operation not permitted
通过上面试例就可以明白,大家都可以在一个文件里面填加,但是修改什么的就还是算了,没有权利!
lsattr
至于lsattr自然是查询设置权限的文件目录了
[root@moban home]# lsattr //一目了然
-------------e- ./lll
-----a-------e- ./ceshi.txt
-------------e- ./www
-------------e- ./oldgirl
-------------e- ./kkk
-------------e- ./o.txt
-------------e- ./test
-------------e- ./oldboy
-------------e- ./mysql
-------------e- ./apache
-------------e- ./oldsister
-------------e- ./admins
最后可以看一看这个文章,写的非常全面:http://www.ha97.com/5172.html
setfacl与getfacl
单独使某一文件对应某一用户权限,排他性
老师说这个用的很少,所以略过,知道其是做什么用的即可。主做了解就可以了。
感悟:
针对suid以及sgid,工作中尽量不使用,多使用sudo来管理,如果有可能的话我们要查找系统无用suid位的命令等,进行撤除。sS都是suid,sgid(用户位),sgid(用户组位)的标识,和x重合的时候,就是显示小写的字母s。
L016-linux系统文件权限体系实战深入讲解小节的更多相关文章
- Linux系统文件权限体系详解
准备工作:先简单了解Linux文件权限 在Linux系统中,ls -l 命令可以查看文件的权限,如 [zhaohuizhen@localhost Test]$ ls -l a -rw-rw-r--. ...
- L015-linux系统文件权限体系手把手详解小结
L015-linux系统文件权限体系手把手详解小结 2016-5-24 今天星期二,昨天和今天利用一些闲散时间把第15节课学完了,最近有点懒散哈,还得努力才是.. 这节课内容不多,扩展的也少,主要就是 ...
- Linux系统文件权限管理(6)
Linux操作系统是多任务(Multi-tasks)多用户(Multi-users)分时操作系统,linux操作系统的用户就是让我们登录到linux的权限,每当我们使用用户名登录操作系统时,linux ...
- linux系统文件权限
Linux文件权限详解 文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录.通过设定权限可以从以下三种访问方式限制访问权限:只允许 ...
- Linux系统文件权限&目录权限
linux系统一切都是文件,文件和目录的所属与权限--来分别规定所有者.所有组.其余人的读.写.执行权限. 读(read),写(write),执行(excute)简写为(r.w.x),也可以以用(4. ...
- Linux系统文件与目录权限管理
Linux文件目录权限管理 一.Linux文件属性及权限 1.Linux文件及目录权限及属性说明 (1)权限及属性说明 (2)文件权限说明 三种权限说明:r 读 read w 写 write x ...
- linux用户管理,linux用户口令管理,linux用户组管理,linux用户权限管理详解
linux用户管理 http://www.qq210.com/shoutu/android 用户账号的添加(新加用户需添加用户口令) :增加用户账号就是在/etc/passwd文件中为新用户增加一条记 ...
- Linux运维项目实战系列
Linux运维项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-项目实战2-实现基于LVS负载均衡集群的电商网站架构 2.1项目实战2.1-nginx 反向 ...
- Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
随机推荐
- Gluon 参数读取
ndarray: save , load from mxnet import nd from mxnet.gluon import nn x = nd.ones(3) # nd.save('x',x) ...
- python3 安装win32api
Python3 中先安装pip install pywin32 但是在调用时任然说找不到该模块,于是查找资料后得出需要使用python -m pip install pypiwin32.
- 劳动节前得空半天-总结一下最近使用的LINUX命令
一.搜索文件 1.locate xxx.log 全盘搜索xxx.log文件 2.which java 查找命令 3.ll xxx.log 在目录下查找文件 二.搜索内 ...
- 对deferred(延迟对象)的理解
deferred对象从jQuery 1.5.0开始引入 什么是defrred对象 开发网站过程中,我们经常遇到某些耗时长的JS操作,其中,既有异步操作(如Ajax读取服务器数据),也有同步的操作(如遍 ...
- 该网页已屏蔽以下插件Adobe Flash Player
2017.6.9更新:多谢网友留言,该网页已屏蔽以下插件Adobe Flash Player解决方法:chrome://flags/#run-all-flash-in-allow-mode选择启用就O ...
- Mybatis 插件
在spring整合mybatis的配置中, 插件注册 <property name="plugins"> <!-- 配置SqlSessionFactoryBean ...
- 软工之404 Note Found团队
如果记忆是一个罐头的话,我希望这一罐罐头不会过期----<重庆森林> 404 Note Found Team 如果记忆是一个备忘录的话,别说了,它不会过期----<404 Note ...
- Hibernate工作原理及为什么要用?. Struts工作机制?为什么要使用Struts? spring工作机制及为什么要用?
三大框架是用来开发web应用程序中使用的.Struts:基于MVC的充当了其中的试图层和控制器Hibernate:做持久化的,对JDBC轻量级的封装,使得我们能过面向对象的操作数据库Spring: 采 ...
- HashMap源码阅读与解析
目录结构 导入语 HashMap构造方法 put()方法解析 addEntry()方法解析 get()方法解析 remove()解析 HashMap如何进行遍历 一.导入语 HashMap是我们最常见 ...
- Notes 20180311 : String第三讲_深入了解String
很多前辈我可能对于我的这节文章很困惑,觉得String这个东西还有什么需要特别了解的吗?其实不然,String是一个使用十分频繁的工具类,不可避免地我们也会遇到一些陷阱,深入了解String对于我们避 ...