分享

Linux学习记录

 sven_ 2015-11-14

文件特殊权限

 

文件除了读写(r),写(w),执行(x) 权限,还有些特殊权限(s,t)

SUID

功能:

SUID权限仅对二进制程序有效

执行者对于程序需要有X可执行的权限

执行者将均有改程序所有者的权限

本权限只在执行程序过程中有效

 

举例:

普通用户也可以通过命令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

SGID对于二进制程序来说,功能和SUID差不多

SGID权限对二进制程序有效

执行者对于程序需要有X可执行的权限

执行者将均有改程序用户组的权限

本权限只在执行程序过程中有效

 

SGID也可以针对目录设置,功能如下

用户在具有SGID权限的目录下创建的文件或目录其所属的用户组就是目录所有的有户组

 

说明,默认情况下用户创建的文件所属的用户组为用户的有效用户组

 

举例

 

Plain代码  收藏代码
  1. [root@localhost /]# mkdir -m 777 /tmp/newdir;ll -d /tmp/newdir  
  2. drwxrwxrwx 2 root root 4096 03-10 12:35 /tmp/newdir  
  3. [root@localhost /]# cd /tmp/newdir/  
  4. [root@localhost newdir]# touch rootfile  
  5. [root@localhost newdir]# ll rootfile   
  6. -rw-r--r-- 1 root root 0 03-10 12:35 rootfile  
  7. =>所属用户和所属用户组都是root  
  8. [root@localhost newdir]# su tkf  
  9. =>切换到普通用户  
  10. [tkf@localhost newdir]$ touch tkffile  
  11. [tkf@localhost newdir]$ ll   
  12. -rw-r--r-- 1 root root 0 03-10 12:35 rootfile  
  13. -rw-rw-r-- 1 tkf  tkf  0 03-10 12:36 tkffile  
  14. =>所属用户和所属用户组都是tkf  
  15.   
  16. [root@localhost ~]# chmod g+s /tmp/newdir/  
  17. =>给newdir添加SGID权限  
  18. [root@localhost ~]# ll -d /tmp/newdir/  
  19. drwxrwsrwx 2 root root 4096 03-10 12:36 /tmp/newdir/  
  20.   
  21. [root@localhost ~]# su tkf  
  22. [tkf@localhost root]$ touch /tmp/newdir/sgidfile;ll /tmp/newdir/  
  23. -rw-r--r-- 1 root root 0 03-10 12:35 rootfile  
  24. -rw-rw-r-- 1 tkf  root 0 03-10 12:40 sgidfile  
  25. -rw-rw-r-- 1 tkf  tkf  0 03-10 12:36 tkffile  
  26. => sgidfile文件所属用户组发生变化,和目录(newdir)的用户组一样  

 

 

SBIT

 

SBIT只针对目录有效,其主要功能是

当用户拥有目录的WX权限时,用户可以删除(删除,重命名,移动)目录下的任意文件

当目录拥有SBIT权限时,即使用户拥有目录的WX权限,用户只能删除自己创建的文件(可以修改不是自己创建的文件)。root用户都可以删除

举例

 

Plain代码  收藏代码
  1. [root@localhost ~]# mkdir -m 1777 /tmp/bitdir  
  2. [root@localhost ~]# su tkf  
  3. [tkf@localhost root]$ ll -d /tmp/bitdir/  
  4. drwxrwxrwt 2 root root 4096 03-10 12:59 /tmp/bitdir/  
  5. =>tkf用户拥有目录的rwx权限  
  6. [tkf@localhost root]$ touch /tmp/bitdir/tkffile ;ll /tmp/bitdir/  
  7. -rw-rw-r-- 1 tkf tkf 0 03-10 12:59 tkffile  
  8. =>在目录下创建文件  
  9.   
  10. [tkf@localhost root]$ su userA  
  11. =>切换另一个用户  
  12. [userA@localhost root]$ ll -d /tmp/bitdir/  
  13. drwxrwxrwt 2 root root 4096 03-10 12:59 /tmp/bitdir/  
  14. => userA用户拥有目录的rwx权限  
  15.   
  16. [userA@localhost root]$ cd /tmp/bitdir/  
  17. [userA@localhost bitdir]$ touch userfile;ll  
  18. -rw-rw-r-- 1 tkf   tkf   0 03-10 12:59 tkffile  
  19. -rw-rw-r-- 1 userA userA 0 03-10 13:04 userfile  
  20. =>在目录下创建文件userfile  
  21.   
  22. [userA@localhost bitdir]$ rm tkffile   
  23. rm:是否删除有写保护的 一般空文件 “tkffile”? y  
  24. rm: 无法删除 “tkffile”: 不允许的操作  
  25. =>由于目录具有SBIT权限 虽然userA对目录具有WX权限,但是不能删除非他创建的文件  
  26.   
  27. [root@localhost ~]# chmod o-t /tmp/bitdir/  
  28. =>将目录SBIT权限去掉  
  29. [root@localhost ~]# su userA  
  30. [userA@localhost root]$ cd /tmp/bitdir/  
  31. [userA@localhost bitdir]$ ll  
  32. -rw-rw-r-- 1 tkf   tkf   0 03-10 12:59 tkffile  
  33. -rw-rw-r-- 1 userA userA 0 03-10 13:04 userfile  
  34. [userA@localhost bitdir]$ rm tkffile   
  35. rm:是否删除有写保护的 一般空文件 “tkffile”? y  
  36. [userA@localhost bitdir]$ ll  
  37. -rw-rw-r-- 1 userA userA 0 03-10 13:04 userfile  
  38. =>可以删除不是自己创建的文件  

 

 

权限设置方法

 

和设置和基本权限(rwx)方法基本,可以通过数字设置也可以通过符号设置

数字设置

SUID:4

SGID:2

SBIT:1

符号设置(+-=)

SUID:u+s

SGID:g+s

SBIT:o+t

举例:

Plain代码  收藏代码
  1. [root@localhost ~]# touch test  
  2. [root@localhost ~]# chmod 4755 test; ll test   
  3. -rwsr-xr-x 1 root root 0 03-10 13:14 test  
  4. [root@localhost ~]# chmod 6755 test; ll test   
  5. -rwsr-sr-x 1 root root 0 03-10 13:14 test  
  6. [root@localhost ~]# chmod 1755 test; ll test   
  7. -rwxr-xr-t 1 root root 0 03-10 13:14 test  
  8. [root@localhost ~]# chmod 7666 test; ll test   
  9. -rwSrwSrwT 1 root root 0 03-10 13:14 test  
  10. =>这里S,T都是大写是因为文件本身不具有X权限,而S,T权限设置成功的  
  11. =>前提是文件具有X权限,因此大写的ST代表文件无这些特殊权限  



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多