一、SetUID

1.Linux普通用户可以修改自己的密码,这个是一个合情合理的设置;

修改密码其实修改的是/etc/shadow这个文件,这个文件的属性:

----------. 1 root root 1476 7月  30 16:15 /etc/shadow

很明显普通用户对/etc/shadow文件没有任何权限,这里就牵扯到了 SetUID 权限:

修改密码的流程其实就是通过/usr/bin/passwd命令对/etc/shadow进行修改:

$ ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

此文件的第三位是s权限,也就是咱们即将要讲解的的setUID权限.

2.SetUID(或者s权限):

当一个具有执行权限的文件设置SetUID权限后,
用户执行这个文件时将以文件所有者的身份执行.
passwd命令具有SetUID权限,所有者为root(Linux中的命令默认所有者都是root),
也就是说当普通用户使用passwd更改自己密码的时候,
那一瞬间突然"灵魂附体"了,实际上是以passwd命令所有者root的身份在执行,
root当然可以将密码写入/etc/shadow文件.
命令执行完成后该身份也随之消失.

3.必须具备以下几个条件才能设置SetUID权限:

a.只有可执行的二进制程序才可以设置SetUID;
b.所有者必须对欲设置SetUID的文件具备可执行(x)权限;
c.命令执行过程中,其它用户获取所有者的身份;
d.SetUID具有时间限制,即完成该程序执行后就消失.

4.设置SetUID:

chmod 4xxx < file-name >
chmod u+s < file-name >
取消SetUID
chmod xxx < file-name >
chmod u-s < file-name >

5.例子

$ touch hehe
$ ll hehe
-rw-rw-r-- 1 xiaozuanfeng xiaozuanfeng 0 10月 27 11:36 hehe
$ sudo chmod u+s /usr/bin/touch
用普通用户再新建一个文件:
$ touch hehe2
-rw-rw-r-- 1 xiaozuanfeng xiaozuanfeng 0 10月 27 11:36 hehe
-rw-rw-r-- 1 root xiaozuanfeng 0 10月 27 11:38 hehe2
在设置了SetUID之后,新建文件的所有者为root了,说明在执行touch的时候,
用户自动升级为了所有者,灵魂附体了!

6.设置SetUID是具备很大危险性的,例如赋予 vim 这个权限:

# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 1967072 2月 17 2012 /usr/bin/vim
# chmod u+s /usr/bin/vim
此时普通用户可以用vim打开任何文件了,很危险!所以,我们需要
定时查看系统中有哪些设置了SetUID权限,对不明物体进行实时打击!

二、SetGID

1.设置和取消SetGID

chmod 2xxx

chmod xxx

2.以locate命令进行讨论:

locate查询比find要快很多,为什么?因为其实搜索的数据库而非整个硬盘:
# ll /usr/bin/locate
-rwx--s--x. 1 root slocate 40496 6月 10 2014 /usr/bin/locate
用普通用户进行locate查看:
$ locate mlocate.db
/usr/share/man/man5/mlocate.db.5.gz
去掉locate的s权限
# chmod g-s /usr/bin/locate
再次用普通用户查看时,就会权限不够
即:当执行locate命令时,普通用户**自动升级为slocate的组成员

三、SBIT粘滞位

1.设置和取消SBIT

chmod 1xxx < dir-name >
chmod o+t < dir-name >
取消SBIT
chmod xxx < dir-name >
chmod o-t < dir-name >
a.只对目录有效
b.普通用户对该目录有w和x权限
c.若没有粘滞位,则普通用户可以对目录下的文件/子目录进行删除操作,
因为普通用户对目录具有w权限,包括其它用户建立的目录/文件;但若赋了SBIT,
则普通用户只能删除自己创建的文件/目录,而不能删除不属于自己的文件/目录!

2.以/tmp为例:

$ ll -d /tmp/
drwxrwxrwt. 8 root root 4096 7月 30 19:40 /tmp/
/tmp目录的权限other部分为rwt,这个t就是我们设置的粘滞位
$ touch test-file
$ mkdir test-dir
切换到另外一个用户-oldboy
$ rm -rf test-dir/ test-file
rm: 无法删除"test-dir/": 不允许的操作
切换到root,去掉/tmp的粘滞位
再切换到oldboy,再次删除/tmp下的文件,发现可以删除.

参考博客:http://www.cnblogs.com/Jimmy1988/p/7260215.html

Linux文件权限与属性详解 之 SUID、SGID&SBIT的更多相关文章

  1. Linux文件权限与属性详解 之 SUID、SGID & SBIT

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  2. Linux文件权限与属性详解 之 一般权限

    目录 一般属性 1. iNode: 3152621 2. 文件类型 3.文件访问权限 4. 链接数目: 5. 文件所有者 6. 文件所属组 7. 文件大小 8. 修改时间 9. 文件名称 Linux文 ...

  3. Linux文件权限与属性详解 之 ACL

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  4. Linux文件权限与属性详解 之 chattr & lsattr

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  5. Linux文件权限与属性详解 之 su & sudo

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  6. 轻松学习Linux之Shell文件和目录属性详解

    轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...

  7. centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课

    centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln   ...

  8. Linux文件查找命令 find 详解

    关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权 ...

  9. linux学习7 Linux文件系统功能和作用详解

    一.终端 1.用户界面 GUI: GNome KDE CLI: bash,zsh,sh,csh,tcsh,ksh 2.远程连接 a.ssh协议. 查看系统是否监听于tcp协议的22号端口: ss  - ...

随机推荐

  1. OpenCV中图像的读取,显示与保存

      图像的读取,显示与保存 相关函数:cv2.imread().cv2.imshow().cv2.imwrite() 1.读入图像: 用cv2.imread()函数来读取图像,cv2.imread(路 ...

  2. Html5_标签

    HTML 1.一套规则,浏览器认识的规则. 2.开发者: 学习Html规则 开发后台程序: - 写Html文件(充当模板的作用) ****** - 数据库获取数据,然后替换到html文件的指定位置(W ...

  3. list_add_tail()双向链表实现分析

    struct list_head { struct list_head *next, *prev; }; list_add_tail(&buf->vb.queue, &vid-& ...

  4. Mac 之 STF 搭建(淘宝源安装)

    参考链接:https://www.jianshu.com/p/5fe8cb7d214f (MAC直接安装STF)https://www.jianshu.com/p/c5c298486dbd(homeb ...

  5. 带有命名空间的xml解析,C#

    前一段时间做花旗的接口,返回的xml格式是带有命名空间的,可是难倒了我,找了好久才找到解决办法,给大家分享下,少走弯路. 1,直接进入正题,先看一段带有命名空间的xml,这段xml大概的意思是,前面是 ...

  6. LRESULT CALLBACK WndProc 窗口程序的 重点

    LRESULT CALLBACK WndProc Windows程序所作的一切,都是回应发送给窗口消息处理程序的消息.这是概念上的主要难点之一,在开始写作Windows程序之前,必须先搞清楚. 窗口消 ...

  7. jmeter返回的Unicode转换成utf8

    该问题通过查找资料借鉴前辈门的经验得到了解决,记录下来是为了后面能够用到 最近发现有些接口返回的时unicode类型的,如下图所示: 因此只需要在jmeter中添加后置处理器:BeanShell Po ...

  8. SDOJ 3696 Tree

    描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. 输入 第一行V,E,need分别表示点数,边数和需要的白色边数. 接下来E行 每行 ...

  9. Django数据库的查看、删除,创建多张表并建立表之间关系

    配置以下两处,可以方便我们直接右键运行tests.py一个文件,实现对数据库操作语句的调试: settings里面的设置: #可以将Django对数据库的操作语法,能输出对应的的sql语句 LOGGI ...

  10. golang语法要点笔记

    golang学习笔记 读<go学习笔记第四版> <学习go语言> <gopl-zh><Go语言实战>记录 多变量赋值时,先计算所有相关值,然后再从左到右 ...