网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 时尚美容

Linux中的setuid ( uid_t uid) 函数的用法详解

时间:2024-11-14 16:31:33

1、函数原型:头文件:#include <unistd.h> 定义函数:int setuid(uid_t uid); 返回值:执行成功则返回0, 失败则返回-1, 错误代码存于errno.

Linux中的setuid ( uid_t uid) 函数的用法详解

2、创建源代码文件(使用1002的所有者权限创建一个文件a.txt,可以使其他人都可以使用下面的程序进行写入操作):在用户1002下,使用剧安颌儿如下步骤:(1)vim setuid_test.c (创建文件)(2)之后在文件中写入如下代码 (编写代码)(3)gcc -o a3 setuid_test.c (编译源代码)(4)chmod u + s a3 (给可执行文件添加s权限)(5)touch a.txt (创建一个空的文件)

Linux中的setuid ( uid_t uid) 函数的用法详解

3、查看a.txt文件和可执行文件的权限:在当前目录下使用ll命令来查看,结果如下:

Linux中的setuid ( uid_t uid) 函数的用法详解

4、将当前用户切换为1000,使用如下命令运行a3可执行程序:(1)./a3输出结果如下:

Linux中的setuid ( uid_t uid) 函数的用法详解

5、分析:因为a3可执行文件有 s 权限,所以,其他用户可以使用文件拥有者 1002 的权限去执行程序,所以euid 和 suid的值为1002.此时在访问a.txt的时候是可以使用euid来进行a.txt的文件权限检查。因为a.txt的的所有者是1002,所以权限检查通过。当在文件a.txt中写入数据结束以后,调用setuid ( getuid() )将原来的权限设置回去了,所以此时输出euid的值为1000.这样就不出现安全问题。

© 2025 小知经验
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com