免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 763 | 回复: 4
打印 上一主题 下一主题

[服务应用] 关于SUID的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-27 15:50 |只看该作者 |倒序浏览
大侠们:
     我写了个脚本quit.sh,如下:
  1 #/bin/bash
  2 if [ $# -lt 1 ];then
  3   echo"You must input at least one parameter!"
  4   exit 1
  5 fi
  6
  7 if [ $1 == "q" ];then
  8   echo "quit!"
  9   echo "$(whoami) quit @ $(date)">> /tmp/quit.txt      #这里访问了quit.txt
10   exit 0
11 else
12   echo "wrong input!"
13   exit 2
14 fi
   
    我将quit.txt的权限锁住,只有root可以读写,将quit.sh的用户和组都设置为root,并为其设置了SUID,希望其他用户可以通过该脚本读写quit.txt。但是执行起来却是Permission denied,请问这是为啥?
    执行过程如下:

[root@(none) tmp]# ll quit.txt
-rw-------. 1 root root 0 Jan 26 23:29 quit.txt
[root@(none) tmp]# ll quit.sh
-rwsr-xr-x. 1 root root 228 Jan 26 23:29 quit.sh
[root@(none) tmp]# ./quit.sh q                           ----->此处root执行正常
quit!
[root@(none) tmp]# cat quit.txt
root quit @ Tue Jan 26 23:31:15 PST 2016
[root@(none) tmp]# su - tom                             ------>切换到tom用户
[tom@(none) ~]$ cd /tmp/
[tom@(none) tmp]$ ./quit.sh q                          ------->这时候tom执行,进程的属主和属组应该是root,应该可以访问quit.txt才对,但是却提示没有权限
quit!
./quit.sh: line 9: /tmp/quit.txt: Permission denied
     

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
2 [报告]
发表于 2016-01-27 17:35 |只看该作者
很显然无权限啊
-rw-------. 1 root root 0 Jan 26 23:29 quit.txt
quit.txt的权限和quit.sh的权限完全无关系的

论坛徽章:
9
操作系统版块每日发帖之星
日期:2016-01-08 06:20:00操作系统版块每日发帖之星
日期:2016-01-28 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-17 17:50:32操作系统版块每日发帖之星
日期:2016-08-01 06:20:0015-16赛季CBA联赛之广东
日期:2016-08-01 16:01:57操作系统版块每日发帖之星
日期:2016-08-04 06:20:00IT运维版块每日发帖之星
日期:2016-08-07 06:20:00操作系统版块每日发帖之星
日期:2016-08-07 06:20:0015-16赛季CBA联赛之福建
日期:2017-03-07 17:14:27
3 [报告]
发表于 2016-01-27 17:37 |只看该作者
chmod u+s `which echo`

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-12-17 06:20:00
4 [报告]
发表于 2016-01-27 17:46 |只看该作者
SUID 使用前提:执行文件必须是二进制程序。

论坛徽章:
0
5 [报告]
发表于 2016-01-28 15:42 |只看该作者
谢谢各位大侠!结合各位的回复,定位了问题应该是出在shell脚本上。
因此我又上网查了一下,查到以下一条:

尽管可以对 shell 脚本设置 suid 和 sgid 权限,但是大部分现代 shell 都会对脚本忽略这些位的设置。因为shell 是一种功能非常强大的脚本语言,拥有解释和执行任意表达式的能力。这些特性允许的限制太过宽泛,这就使环境变得非常不安全。因此,如果您对一个 shell 脚本设置了 suid 或 sgid 权限,就不要期望脚本在执行时能够遵守这些设置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP