`

LINUX 程序权限

阅读更多
具有SetUID或SetGID属性的程序,能够在进程执行中调用系统调用setuid()或setgid() ,调用成功后这个进程就具有了程序文件属主和组的权限,就可以完成以前改变身份之前不能完成的任务。因为通过它们程序可以改变进程的用户标识,绕过系统的权限设置,因此这两个属性对于系统安全非常重要。尤其是属于root的文件,并设置了SetUID属性的程序,更是系统安全中值得注意的地方。为了保证系统安全,必须保证没有非法的SetUID或 SetGID程序的存在,通常管理员可以使用find命令来完成这个任务,例如查找具有SetUID的程序,则执行:




setuid(设置真实的用户识别码)
相关函数

getuid,setreuid,seteuid,setfsuid
表头文件

#include<unistd.h>
定义函数

int setuid(uid_t uid)
函数说明

setuid()用来重新设置执行目前进程的用户识别码。不过,要让此函数有作用,其有效的用户识别码必须为0(root)。在Linux下,当root 使用setuid()来变换成其他用户识别码时,root权限会被抛弃,完全转换成该用户身份,也就是说,该进程往后将不再具有可setuid()的权利,如果只是向暂时抛弃root 权限,稍后想重新取回权限,则必须使用seteuid()。
返回值

执行成功则返回0,失败则返回-1,错误代码存于errno。
附加说明

一般在编写具setuid root的程序时,为减少此类程序带来的系统安全风险,在使用完root权限后建议马上执行setuid(getuid());来抛弃root权限。此外,进程uid和euid不一致时Linux系统将不会产生core dump。
分享到:
评论

相关推荐

    《linux程序设计》源代码(全)

    《Linux程序设计》是一本深受程序员喜爱的书籍,它深入浅出地介绍了如何在Linux环境下进行高效编程。这本书的源代码包含了许多实例,可以帮助读者更好地理解和实践书中讲解的概念。现在,我们将深入探讨这些源代码所...

    linux 权限 c,Linux下获取root权限的c程序

    Linux下获取root权限的c程序 传递euid和egid给脚本,使脚本具有特殊用户的权限 使脚本实现类于设置了stick位的效果 shell, python, perl等脚本、程序不能取得suid,因为这些脚本程序需要解释器-/bin/bash, /usr/bin/...

    LINUX程序设计

    《Linux程序设计》是Linux开发者的一本重要参考书籍,它深入浅出地讲解了在Linux环境下进行程序开发的各个环节。本书覆盖了大量的知识点,包括但不限于以下几个方面: 1. **Linux操作系统基础**:首先,理解Linux的...

    Linux程序设计(第四版)中文版和英文版

    《Linux程序设计(第四版)》是一本深入探讨Linux系统编程的经典著作,涵盖了广泛的Linux程序设计主题。本书分为中文版和英文版,旨在满足不同语言背景的读者需求。作者Neil Mathew与Richard合作,结合了丰富的经验...

    《LINUX程序设计》

    在文件系统方面,《Linux程序设计》详细阐述了文件的打开、读写、关闭等基本操作,以及更高级的文件操作,如文件权限、硬链接和符号链接等。此外,还介绍了设备文件和命名管道等特殊文件类型,帮助读者理解Linux系统...

    linux系统权限管理文件特殊权限PPT学习教案.pptx

    "Linux 系统权限管理文件特殊权限学习教案" Linux 系统权限管理文件特殊权限是 Linux 操作系统中的一种重要机制,用于控制用户对文件和目录的访问权限。本学习教案将详细介绍 Linux 系统权限管理文件特殊权限的概念...

    linux系统权限总结

    SUID(Set User ID upon execution)与SGID(Set Group ID upon execution)是Linux系统中两种特殊的权限设置,它们允许程序在执行时临时获得文件所有者或所属组的权限。这种机制主要用于实现某些需要特定权限才能...

    Linux程序设计代码

    这份“Linux程序设计代码”资料是为那些希望入门Linux应用开发的学习者准备的,它将带你深入理解如何在Linux环境下编写高效且可靠的程序。 1. **Linux编程环境**:Linux是一个开源的操作系统,提供了丰富的开发工具...

    《Linux程序设计》中文第四版

    《Linux程序设计》中文第四版是一本深入探讨Linux系统下程序开发的经典著作,由马修和斯通斯共同撰写。本书旨在为读者提供一个全面理解Linux环境下编程的基础,适合有一定C语言基础并希望进一步了解操作系统内核与...

    Linux程序设计(第4版)mobi

    《Linux程序设计(第4版)》是一本深入探讨Linux环境下程序开发的经典教材。这本书针对的是那些希望在Linux操作系统上进行系统级编程和应用程序开发的读者。Linux作为一款开源的操作系统,其强大的功能和灵活性吸引了...

    linux基础权限介绍

    ### Linux基础权限详解 #### 一、文件与目录权限概览 在Linux系统中,文件和目录的权限管理是至关重要的。它不仅涉及到文件的安全性,还直接影响到系统的整体稳定性和性能。本节将详细介绍Linux文件和目录的基础...

    Linux高级程序设计

    《Linux高级程序设计》这本书是针对那些希望深入理解Linux系统编程的开发者们的一份宝贵资源。它涵盖了Linux环境下的高级程序设计技术,包括系统调用、进程管理、内存管理、文件系统、网络编程以及多线程等内容。...

    linux 程序设计 源码

    "Linux程序设计源码"可能包含了用于教学或实践的示例代码,这些代码可以帮助你深入理解Linux系统编程的各个方面。《Beginning Linux Programming》这本书是学习这个主题的经典资源,它详细介绍了如何在Linux操作系统...

    Linux应用程序开发详解

    了解Linux的基础知识包括理解Linux目录结构、文件系统、用户权限和管理,以及进程控制等核心概念。这些基础知识对于开发者来说至关重要,因为它们构成了与操作系统交互的基础。 在Linux环境中,命令行接口是开发者...

    linux系统程序设计

    Linux系统程序设计是计算机科学与技术中的一项重要技能,尤其在开源领域具有极高的实用价值和广泛应用。海同的内部培训教材系统性地介绍了Linux系统编程的各个重要方面,旨在帮助初学者和有一定基础的开发者能够理解...

    Linux系统权限讲义.ppt

    为了提高安全性,有些系统会使用setuid权限的程序来验证用户身份,而不是直接从`/etc/passwd`中获取口令。 在Linux中,文件和目录的权限由九个字符表示,分为三组,每组三个,分别代表所有者、同组用户和其他用户的...

    Linux程序设计第四版.rar

    安全性和权限管理也是Linux程序设计不可忽视的一环。读者会学习到如何正确使用setuid、setgid,理解用户和组的概念,以及如何利用umask来控制文件权限,确保程序在执行时具有适当的访问权限。 另外,调试技巧和工具...

    linux 程序设计第三版

    理解Linux的基本操作,如文件系统结构、权限管理、进程控制等,是Linux程序设计的基础。 2. **C语言编程**:Linux编程通常使用C语言,因为它是系统编程的首选语言,提供了与操作系统底层交互的能力。掌握C语言的...

    福建农林大学《LINUX程序设计》复习题.pdf

    - Linux程序设计人员需要了解Linux系统的基本管理知识,包括用户管理、权限设置、磁盘管理等。 - 熟悉常用的Linux命令行工具,如ls、cp、mv、grep、find等。 6. Linux开发工具和环境配置 - 熟悉GCC、GDB等工具,...

    linux程序设计入门(PDF)

    Linux程序设计是软件开发领域中的一个重要分支,尤其对于那些对操作系统底层运作机制感兴趣的开发者来说,掌握Linux编程技术是至关重要的。这份"Linux程序设计入门(PDF)"教程将为初学者提供一个良好的起点,帮助他们...

Global site tag (gtag.js) - Google Analytics