文件除了读写(r),写(w),执行(x) 权限,还有些特殊权限(s,t)ide
功能:it
SUID权限仅对二进制程序有效class
执行者对于程序须要有X可执行的权限test
执行者将均有改程序全部者的权限file
本权限只在执行程序过程当中有效权限
举例:二进制
普通用户也能够经过命令passwd修改本身的密码。修改的密码内容将会记录/etc/shadow文件中,可是普通用户对这个文件无任何权限,那如何修改这个文件呢?程序
以上步骤能够理解为这样密码
普通用户执行passwd命令修改密码èèpasswd命令程序修改/etc/shadow文件将密码记录其中方法
[root@localhost /]# ll /etc/shadow/usr/bin/passwd
-r-------- 1 root root 1352 02-14 10:36 /etc/shadow
-rwsr-xr-x 1 root root 23420 2010-08-11/usr/bin/passwd
这就是SUID的功能,当普通用户在执行passwd程序命令时,因为passwd具备SUID权限,同时普通用户对于passwd命令具备X权限,那么在passwd执行过程当中普通用户将程序全部者(root)的权限,所以/etc/shadow就能够被修改
SGID对于二进制程序来讲,功能和SUID差很少
SGID权限对二进制程序有效
执行者对于程序须要有X可执行的权限
执行者将均有改程序用户组的权限
本权限只在执行程序过程当中有效
SGID也能够针对目录设置,功能以下
用户在具备SGID权限的目录下建立的文件或目录其所属的用户组就是目录全部的有户组
说明,默认状况下用户建立的文件所属的用户组为用户的有效用户组
举例
[root@localhost /]# mkdir -m 777 /tmp/newdir;ll -d /tmp/newdir drwxrwxrwx 2 root root 4096 03-10 12:35 /tmp/newdir [root@localhost /]# cd /tmp/newdir/ [root@localhost newdir]# touch rootfile [root@localhost newdir]# ll rootfile -rw-r--r-- 1 root root 0 03-10 12:35 rootfile =>所属用户和所属用户组都是root [root@localhost newdir]# su tkf =>切换到普通用户 [tkf@localhost newdir]$ touch tkffile [tkf@localhost newdir]$ ll -rw-r--r-- 1 root root 0 03-10 12:35 rootfile -rw-rw-r-- 1 tkf tkf 0 03-10 12:36 tkffile =>所属用户和所属用户组都是tkf [root@localhost ~]# chmod g+s /tmp/newdir/ =>给newdir添加SGID权限 [root@localhost ~]# ll -d /tmp/newdir/ drwxrwsrwx 2 root root 4096 03-10 12:36 /tmp/newdir/ [root@localhost ~]# su tkf [tkf@localhost root]$ touch /tmp/newdir/sgidfile;ll /tmp/newdir/ -rw-r--r-- 1 root root 0 03-10 12:35 rootfile -rw-rw-r-- 1 tkf root 0 03-10 12:40 sgidfile -rw-rw-r-- 1 tkf tkf 0 03-10 12:36 tkffile => sgidfile文件所属用户组发生变化,和目录(newdir)的用户组同样
SBIT只针对目录有效,其主要功能是
当用户拥有目录的WX权限时,用户能够删除(删除,重命名,移动)目录下的任意文件
当目录拥有SBIT权限时,即便用户拥有目录的WX权限,用户只能删除本身建立的文件(能够修改不是本身建立的文件)。root用户均可以删除
举例
[root@localhost ~]# mkdir -m 1777 /tmp/bitdir [root@localhost ~]# su tkf [tkf@localhost root]$ ll -d /tmp/bitdir/ drwxrwxrwt 2 root root 4096 03-10 12:59 /tmp/bitdir/ =>tkf用户拥有目录的rwx权限 [tkf@localhost root]$ touch /tmp/bitdir/tkffile ;ll /tmp/bitdir/ -rw-rw-r-- 1 tkf tkf 0 03-10 12:59 tkffile =>在目录下建立文件 [tkf@localhost root]$ su userA =>切换另外一个用户 [userA@localhost root]$ ll -d /tmp/bitdir/ drwxrwxrwt 2 root root 4096 03-10 12:59 /tmp/bitdir/ => userA用户拥有目录的rwx权限 [userA@localhost root]$ cd /tmp/bitdir/ [userA@localhost bitdir]$ touch userfile;ll -rw-rw-r-- 1 tkf tkf 0 03-10 12:59 tkffile -rw-rw-r-- 1 userA userA 0 03-10 13:04 userfile =>在目录下建立文件userfile [userA@localhost bitdir]$ rm tkffile rm:是否删除有写保护的 通常空文件 “tkffile”? y rm: 没法删除 “tkffile”: 不容许的操做 =>因为目录具备SBIT权限 虽然userA对目录具备WX权限,可是不能删除非他建立的文件 [root@localhost ~]# chmod o-t /tmp/bitdir/ =>将目录SBIT权限去掉 [root@localhost ~]# su userA [userA@localhost root]$ cd /tmp/bitdir/ [userA@localhost bitdir]$ ll -rw-rw-r-- 1 tkf tkf 0 03-10 12:59 tkffile -rw-rw-r-- 1 userA userA 0 03-10 13:04 userfile [userA@localhost bitdir]$ rm tkffile rm:是否删除有写保护的 通常空文件 “tkffile”? y [userA@localhost bitdir]$ ll -rw-rw-r-- 1 userA userA 0 03-10 13:04 userfile =>能够删除不是本身建立的文件
和设置和基本权限(rwx)方法基本,能够经过数字设置也能够经过符号设置
SUID:4
SGID:2
SBIT:1
SUID:u+s
SGID:g+s
SBIT:o+t
举例:
[root@localhost ~]# touch test [root@localhost ~]# chmod 4755 test; ll test -rwsr-xr-x 1 root root 0 03-10 13:14 test [root@localhost ~]# chmod 6755 test; ll test -rwsr-sr-x 1 root root 0 03-10 13:14 test [root@localhost ~]# chmod 1755 test; ll test -rwxr-xr-t 1 root root 0 03-10 13:14 test [root@localhost ~]# chmod 7666 test; ll test -rwSrwSrwT 1 root root 0 03-10 13:14 test =>这里S,T都是大写是由于文件自己不具备X权限,而S,T权限设置成功的 =>前提是文件具备X权限,所以大写的ST表明文件无这些特殊权限