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 ...
随机推荐
- BZOJ1468:Tree(点分治)
Description 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K Input N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是 ...
- 「bzoj 4180: 字符串计数」
题目 真是一道好题 首先根据一个非常显然的贪心,如果给出了一个串\(S\),我们如何算最小操作次数呢 非常简单,我们直接把\(S\)拉到\(T\)的\(SAM\)上去跑,如果跑不动了就停下来,重新回到 ...
- Emacs 快速指南 - 原生中文手册
Emacs 快速指南 -折叠目录 1. 小结(SUMMARY) 2. 基本的光标控制(BASIC CURSOR CONTROL) 3. 如果 EMACS 失去响应(IF EMACS STOPS RES ...
- window resize和scroll事件的基本优化
转自 http://www.kankanews.com/ICkengine/archives/6564.shtml
- 《Python核心编程》第二版第三章答案
本人python新手,答案自己做的,如果有问题,欢迎大家评论和讨论! 更新会在本随笔中直接更新. 我在Windows使用python版本是2.7.0 3–10. 异常.使用类似readTextFile ...
- 修改微软RDP远程桌面端口
远程桌面服务所使用的通信协议是Microsoft定义RDP(Remote Desktop Protocol)协议,RDP协议的TCP通信端口号是3389. 有时候为了安全起见,或者其他的需要,我们常需 ...
- ts简单点
typescript 简洁使用 *做最简洁核心的记录,可以节约时间.再是提炼概括,理解归纳.便于日后查阅联想* > typescript原则之一: 对值所具有的结构进行类型检查 #### 基础类 ...
- Factory(工厂)模式
设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题. ...
- python使用tablib库生成xls表格
参考文档:http://python-tablib.org Tablib是一个MIT许可的格式不可知的表格数据集库.它允许您导入,导出和操作表格数据集.高级功能包括隔离,动态列,标签和过滤,以及无缝格 ...
- css布局-内容自适应屏幕
css页面布局,实现内容部分自适应屏幕,当内容高度小于浏览器窗口高度时,页脚在浏览器窗口底部:当内容高度高于浏览器窗口高度时,页脚自动被撑到页面底部. <style type="tex ...