linux 文件特殊权限

linux 文件特殊权限


SUID:set  UID 

简介:

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

执行者对于该程序需要具有可执行权限

本权限仅在执行该程序的过程有效,执行者将具有该程序拥有者的权限


在文件拥有suid权限时,用户只要有执行这个文件的权限就会获得这个文件的属主权限


SGID

简介:

SGID 对普通二进制文件和目录都有效。

对于文件而言,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限;当作用于目录时:

user若在此目录具有w的权限,则使用者所建立的新档案的群组与此目录的群组相同


Sticky bit(只针对目录有效)

简介:

用户对此目录具有w,x权限,即具有写入权限时,在该目录下建立档案或者目录时,仅有自己与root才有权力删除



这里就先讨论 SUID


建立一个文件,只有root有权限读写

1
2
3
4
5
6
7
8
9
10
11
xuebaiji@xbzy007:~/tmp$whoami 
xuebaiji
xuebaiji@xbzy007:~/tmp$ll /tmp/test.txt 
-rw------- 1 root root 26 Feb 23 18:05 /tmp/test.txt
xuebaiji@xbzy007:~/tmp$cat /tmp/test.txt 
cat: /tmp/test.txt: Permission denied
 
xuebaiji@xbzy007:~/tmp$cat /tmp/test.txt 
cat: /tmp/test.txt: Permission denied
xuebaiji@xbzy007:~/tmp$sudo  cat /tmp/test.txt 
hello xbzy007   SUID test

准备一个简单的程序,读取上面的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
xuebaiji@xbzy007:~/tmp$cat test.c 
 
#include "stdio.h"  
int  main() {   
     FILE  *fp;   
     char  ch;  
     if ((fp= fopen ( "/tmp/test.txt" , "r" ))==NULL) {  
         printf ( "file cannot be opened\n" );   
         exit (1);   
     }   
     while ((ch= fgetc (fp))!=EOF)   
         fputc (ch,stdout);   
     fclose (fp);   
}


编译程序运行

1
2
3
4
xuebaiji@xbzy007:~/tmp$sudo  gcc  -o test-c test.c       
xuebaiji@xbzy007:~/tmp$
xuebaiji@xbzy007:~/tmp$./test-c 
file cannot be opened

提示打不开,因为只有root 才能读取该文件


下来给二进制程序加上suid 权限,在看看

1
2
3
4
xuebaiji@xbzy007:~/tmp$sudo  chmod u+s test-c       
xuebaiji@xbzy007:~/tmp$./test-c 
hello xbzy007   SUID test
xuebaiji@xbzy007:~/tmp$

哈哈 ,奇迹出现了,顺利读取出来了文件内容,到此 SUID 实验完成,不知道你看了是不是有所收获呢


后面将演示其他的特殊权限的使用,3KS


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值