Linux基础(14)Linux的特殊权限
2016-07-15 20:38
435 查看
Linux下除了r,w,x的权限之外,还有SUID SGID SBIT三种特殊权限
SUID
如果某个文件具有SUID权限的时候,运行某程序时,执行者暂时拥有文件所有者的权限;只能作用在二进制程序文件上
对于shell脚本是无效的。
chmod u+s FILE #注意,必须添加文件的所有者身上。
chmod u-s FILE
如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S;
![](http://s2.51cto.com/wyfs02/M01/84/31/wKiom1eIUrDCmY4kAACZBHjD9rY952.jpg-wh_500x0-wm_3-wmp_4-s_1739030067.jpg)
对于passwd文件,它具有SUID权限,当一个非root用户试图执行passwd修改自己密码时候,启动的进程的属主是root,而非这个用户,由于passwd是通过修改/etc/shadow下的文件来修改自己密码的,因此尽管该用户对/etc/shadow文件没有读写权限,他还是可以修改文件的,因为进程的属主是root.
![](http://s3.51cto.com/wyfs02/M00/84/31/wKioL1eIVCKDzVHIAABTAb1CLzE499.jpg-wh_500x0-wm_3-wmp_4-s_2030430508.jpg)
2.SGID:
SGID表现为在文件的用户组执行权限上为s
SGID既可以作用于文件上,也可以作用在目录上。
作用于文件时,仅对二进制程序有效,用户在执行程序的时候具有改程序用户组的支持。
作于与目录时(常见),用户在此目录下的基本组变为此目录的用户组,即用户在这个目录下创建的文件的属组与该目录的属组相同,而不是用户的基本组。这个特性常用在项目开发上的权限配置上。
修改方式
chmod g+s DIR|FILE
chmod g-s DIR|FILE
3.SBIT: 如果某个目录具有SBIT权限,那么用户在这个目录下,只能删除,移动,重命名自己创建的文件,而不能删除其他人的文件。
修改方式
chmod o+t DIR
chmod o-t DIR
========================================================
下面我们来进行一个小实验,来巩固一下SGID,SBIT.
情景:假设存在一个项目目录test,该目录的属组是develop,要使tom和joe两个用户可以在test下面创建文件,并且可以彼此查看,修改对方的文件,但是不允许删除对方的文件,对于其他人来说,对于test目录没有权限。要如何配置?
很简单,只需要将tom和joe的附加组设置为develop,并且将为test目录添加SGID,SBIT权限即可。
具体步骤如下
groupadd develop
cd /tmp
mkdir test
chmod 770 test
chown root.develop test
chmod g+s test
chmod o+t test
useradd -G develop joe
useradd -G develop tom
本文出自 “厚积薄发” 博客,请务必保留此出处http://joedlut.blog.51cto.com/6570198/1826841
SUID
如果某个文件具有SUID权限的时候,运行某程序时,执行者暂时拥有文件所有者的权限;只能作用在二进制程序文件上
对于shell脚本是无效的。
chmod u+s FILE #注意,必须添加文件的所有者身上。
chmod u-s FILE
如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S;
![](http://s2.51cto.com/wyfs02/M01/84/31/wKiom1eIUrDCmY4kAACZBHjD9rY952.jpg-wh_500x0-wm_3-wmp_4-s_1739030067.jpg)
对于passwd文件,它具有SUID权限,当一个非root用户试图执行passwd修改自己密码时候,启动的进程的属主是root,而非这个用户,由于passwd是通过修改/etc/shadow下的文件来修改自己密码的,因此尽管该用户对/etc/shadow文件没有读写权限,他还是可以修改文件的,因为进程的属主是root.
![](http://s3.51cto.com/wyfs02/M00/84/31/wKioL1eIVCKDzVHIAABTAb1CLzE499.jpg-wh_500x0-wm_3-wmp_4-s_2030430508.jpg)
2.SGID:
SGID表现为在文件的用户组执行权限上为s
SGID既可以作用于文件上,也可以作用在目录上。
作用于文件时,仅对二进制程序有效,用户在执行程序的时候具有改程序用户组的支持。
作于与目录时(常见),用户在此目录下的基本组变为此目录的用户组,即用户在这个目录下创建的文件的属组与该目录的属组相同,而不是用户的基本组。这个特性常用在项目开发上的权限配置上。
修改方式
chmod g+s DIR|FILE
chmod g-s DIR|FILE
3.SBIT: 如果某个目录具有SBIT权限,那么用户在这个目录下,只能删除,移动,重命名自己创建的文件,而不能删除其他人的文件。
修改方式
chmod o+t DIR
chmod o-t DIR
========================================================
下面我们来进行一个小实验,来巩固一下SGID,SBIT.
情景:假设存在一个项目目录test,该目录的属组是develop,要使tom和joe两个用户可以在test下面创建文件,并且可以彼此查看,修改对方的文件,但是不允许删除对方的文件,对于其他人来说,对于test目录没有权限。要如何配置?
很简单,只需要将tom和joe的附加组设置为develop,并且将为test目录添加SGID,SBIT权限即可。
具体步骤如下
groupadd develop
cd /tmp
mkdir test
chmod 770 test
chown root.develop test
chmod g+s test
chmod o+t test
useradd -G develop joe
useradd -G develop tom
本文出自 “厚积薄发” 博客,请务必保留此出处http://joedlut.blog.51cto.com/6570198/1826841
相关文章推荐
- 简单c/s程序(Linux c)
- Linux 服务器上建立用户并分配权限
- gdb调试学习(一) list命令的学习
- 如何在 Linux 上永久挂载一个 Windows 共享
- centos6.5 下安装 sqlplus
- CentOS6.5的用户管理
- 在windows系统上安装VMware Workstation虚拟机,然后在虚拟机VMware Workstation上安装linux系统,在linux系统安装xshell的服务端,在windows系统上安装xshell。用windows系统上的xshell连接到linux
- 如何运行 Linux 下的软件?
- CentOS Linux解决Device eth0 does not seem to be present
- 菜鸟linux find命令的最基本认识
- Linux启用和配置Java
- centos6.5下lnmp环境搭建
- 用于基于 RPM 的 Linux 平台的 Java
- 用于 Linux 平台的 Java
- LINUX:解压问题tar: Child returned status
- Linux信号(signal) 机制分析
- VMWare克隆Linux虚拟机后eth0找不到的解决方法
- error: /lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
- error: /lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
- linux安卓开发,解决 java 摆脱, openjdk 的方法