- 论坛徽章:
- 6
|
回复 1# Swayer_Chen
我在当前目录用root用户创建了一个空白文本文件test.txt。权限为644。
然后在普通用户下用c语言写了一段代码, 打开如上的test.txt.并向其中写入字符,代码如下:
- #include<fcntl.h>
- #include<unistd.h>
- int main()
- {
- setuid(0);
- sleep(10);
- int f1=open("./test.txt",O_CREAT|O_RDWR);
- write(f1,"hello,world\n",8);
- close(f1);
- return 0;
- }
复制代码
编译执行如上代码生成可执行文件 a.out,由于如上代码的源文件的宿主是普通用户,编译后的可执行文件a.out的宿主也是普通用户,又以普通用户的身份执行这个a.out 执行后文件test.txt依旧空白。
用chown 命令改变a.out宿主为root, 依旧依普通用户执行a.out , 用ps命令看到a.out的进程的拥有者还是普通用户,并且命令执行完毕后 test.txt依旧空白。
最后用sudo 执行a.out 命令结束后text .txt文件中被写入了字符。
|
|