Linux 特殊用户权限 suid,sgid, sticky
每个进程会维护有如下6个ID:
真实身份 : real UID, readl GID --> 登录 shell 使用的身份
有效身份 : effective UID, effective GID --> 当进程真正去操作文件是所检查的身份,
存储身份 : saved UID, saved GID --> 当将一个程序文件执行为进程的时候, 该程序文件本身的属主和属组可以被存储为存储身份, 在随后进程运行的过程中, 进程就可以选择将 真实身份或存储身份 复制到有效身份, 以拥有真实身份或存储身份的权限. 但并不是所有的程序文件在执行的过程中都会设置存储身份的, 需要这么做的程序文件会在其 9 位权限的执行位的 x 改为 s, 这时, 这一位叫做 set UID bit 或 set GID bit.
$ chmod 4799 file ** 必须要在有 x 位的基础上, 才能设置 s 位.
这里的chmod后面不再只是三位的数字。最前面一位用于处理set-UID bit/set-GID bit,它可以被设置成为4/2/1以及或者上面数字的和。4表示为set UID bit, 2表示为set GID bit,1表示为sticky bit .
当 进程 fork 的时候, 真实身份和有效身份都会复制给子进程. 大部分情况下, 真实身份和有效身份都相同.
setuid, setgid,sticky
1. setuid :
在一个程序或命令上添加setuid以后(u+s),这样属主有了s权限,意味着任何用户在执行此程序时,其进程的属主不再是发起者本人,而是这个程序的属主。最典型的一个例子就是passwd这个命令;
普通用户运执行passwd命令来修改自己的密码,其实最终更改的是/etc/passwd这个文件。
$ll /etc/passwd
-rw-r--r-- 1 root root 2597 11月 12 15:36 /etc/passwd
但是 /etc/passwd 文件只有 root 才有权限更改, 再看下 passwd 命令的权限:
ll /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 3月 29 2016 /usr/bin/passwd*
passwd 命名运行时, 进程的属主是程序的属主, 即 root, 这样普通用户就有了修改自己账号密码的权限了.
设置 setuid 方法 :
$ chmod u(+|-)s /path/to/file
$ chmod 4644 /path/to/file
2. setgid :
数组有 s 权限, 即 执行此程序时, 次进程的属组不是运行程序的用户, 而是此程序文件的属组.
如果 setgid 赋值给 文件, 则运行次文件的其他用户具有该文件的属组特权;
如果 setgid 赋值为 目录, 则任何用户在该目录下创建的文件,该文件属组都和目录的属组一直.
$ chmod g+s /tmp/test
3. sticky
在有权限的情况下,可以添加和修改其他用户的文件,就是不能删除其他用户的文件,自己可以删除自己创建的文件。
$ chmod o(+|-)t /path/somefile
4. 三个权限用 八进制表示 :
suid : 4
sgid : 2
sticky : 1
Linux 特殊用户权限 suid,sgid, sticky的更多相关文章
- Linux 文件特殊权限 SUID SGID SBIT
文件除了常规的权限r, w, x 还有一些特殊的权限,s与t权限,具体的用处如下 1 SetUID 当s 这个标志出现在文件所有者的x权限上时, 例如/usr/bin/passwd, [root@or ...
- 【Linux】文件特殊权限 SUID/SGID/Sticky Bit
linux中除了常见的读(r).写(w).执行(x)权限以外,还有3个特殊的权限,分别是setuid.setgid和stick bit 1.setuid.setgid 先看个实例,查看你的/usr/b ...
- 特殊权限:SUID,SGID,Sticky
特殊权限passwd:s SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者: chmod u+s FILE chmod u-s FILE 如果FIL ...
- linux基础2-cd、mkdir、touch、umask、chattr、lsattr、SUID/SGID/Sticky Bit
一 cd : . 代表当前目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表[目前用户身份]所在的自家目录 与cd效果相同 ~account 代表 account 这个用户的自家家目录 二m ...
- SUID,SGID,Sticky Bit详解(转)
SUID属性 passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码.但是保存用户密码的/etc/shadow文件的权限是400,也就是说只有文件的所有者root用户可以写入, ...
- chmod 4777? 文件特殊权限 SUID SGID StickyBit
故事引入 今天碰到了一条指令, test 怎么在777前还有一位,颠覆了我的认知啊,这时候必须翻鸟哥神书了,找到一个链接<7.4.3 文件特殊权限:SUID/SGID/Sticky Bit> ...
- SUID ,SGID ,Sticky
SUID passwd:s SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者: chmod u+s FILE chmod u-s FILE 如果FILE本身原来就有执行权限, ...
- Linux 服务器用户权限管理改造方案与实施项目
Linux 服务器用户权限管理改造方案与实施项目 在了解公司业务流程后,提出权限整改方案改进公司超级权限root泛滥的现状. 我首先撰写方案后,给boss看,取得boss的支持后,召集大家开会讨论. ...
- linux文件权限位SUID,SGID,sticky的设置理解
SUID含义:文件的该位被设置为1,在该文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来 执行这个文件,他都有文件所有者的特权,如果所有者是root的话,那么执行人就有超 ...
随机推荐
- 小米Adnroid默认禁止悬浮框的使用,导致开发的悬浮框无法接收事件
比如你建了一个悬浮框: WindowManager windowManager = getWindowManager(context); int screenWidth = windowManager ...
- 【转】10 条提升 Android 性能的建议
每个人都知道一个 App 的成功,与这个 App 的性能体验有着很密切的关系.但是如何让你的 App 拥有极致性能体验呢?在 DroidCon NYC 2015 的这个分享里,Boris Farber ...
- 解决jmeter乱码问题(改配置文件)
1.先改脚本里面的 content encoding为utf-8 然后response为utf-8 2.如果以上还是不可以,那就改配置文件jmeter.properties,里面的sampleresu ...
- OC—可变数组NSMutableArray
- java之反射
初学反射,也是第二次写博客了把,就简单记录一下. Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对 ...
- 使用MyEclipse生成实体类和Hibernate映射文件
1.打开MyEclipse DataBase Explorer. 如上图,点击图中2便可切换到MyEclipse DataBase Explorer,若没有该图标,则点击图中1,便可选择MyEclip ...
- Linux使用Jexus托管Asp.Net Core应用程序
第一步 安装.Net Core环境 安装 dotnet 环境参见官方网站 https://www.microsoft.com/net/core. 选择对应的系统版本进行安装.安装完成过后 输入命令查看 ...
- JAVA的节点流和处理流
节点流:可以从或向一个特定的地方(节点)读写数据.如FileReader. 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写.如BufferedReader.处理流的构造方 ...
- 一个简单易用的容器管理平台-Humpback
什么是Humpback? 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是继续称 Docker). 在 Docker-百度百科 中,对 Docker 已经解释得很清 ...
- Maven学习(三)
maven相关概念 maven坐标 Maven世界拥有大量构建,当我们需要引用依赖包是,需要用一个用来唯一标识去确定唯一的一个构建.如果拥有了统一规范,就可以把查找工作交给机器. 类似于空间找点的坐标 ...