首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux setuid不工作。

linux setuid不工作。
EN

Unix & Linux用户
提问于 2015-01-24 16:34:33
回答 1查看 1.2K关注 0票数 4

我正在学习linux suid,所以我编写了一个小的c++程序,其中包含以下内容来测试它

代码语言:javascript
复制
#include<stdio.h>
int main(){
system("echo 100 >> test.txt");
return 0;
}
-rwsr-xr-x 1 root root 8004 Sep 10 16:19 test

test.txt是一个只能由root修改的文件。

代码语言:javascript
复制
-rw-r----- 1 root root 

如果我使用用户帐户运行测试程序,它应该将100添加到空文件中。但是,它出来了:

代码语言:javascript
复制
sh:test.txt:Permission denied

为什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2015-01-24 16:51:56

问题是,您调用函数system(),它调用一个shell /bin/sh。并且外壳/bin/sh没有设置suid位。这就是为什么打印Permission denied消息的原因。

您必须用纯c代码编写该部分:

代码语言:javascript
复制
int main() {
  FILE *fd = fopen("test.txt", "a");
  fprintf(fd, "%s", "100");
  fclose(fd);
  return 0;
}
票数 -3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/180828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档