GETENV - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
getenv,secure_getenv-获取环境变量
语法
#include <stdlib.h> char *getenv(const char *name); char *secure_getenv(const char *name);
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
secure_getenv():_GNU_SOURCE
说明
getenv()函数搜索环境列表以查找环境变量名称,并返回指向相应值字符串的指针。
GNU特定的secure_getenv()函数与getenv()相似,不同之处在于在需要"安全执行"的情况下它返回NULL。加载由调用进程运行的程序时,如果满足以下条件之一,则需要安全执行:
- *
- 进程的有效用户ID与实际用户ID不匹配,或者进程的有效组ID与实际用户ID不匹配(通常是执行set-user-ID或set-group-ID程序的结果);
- *
- 在可执行文件上设置了有效功能位;要么
- *
- 该过程具有非空的允许功能集。
如果由某些Linux安全模块触发,也可能需要安全执行。
secure_getenv()函数旨在用于通用库中,以避免在set-user-ID或set-group-ID程序意外信任环境时可能发生的漏洞。
返回值
getenv()函数返回指向环境中值的指针;如果不匹配,则返回NULL。
版本
secure_getenv()首次出现在glibc 2.17中。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
getenv(),secure_getenv() | Thread safety | MT-Safe env |
遵循规范
getenv():POSIX.1-2001,POSIX.1-2008,C89,C99,SVr4、4.3BSD。
secure_getenv()是GNU扩展。
备注
环境列表中的字符串的格式为name = value。
通常实现的方法是,getenv()返回指向环境列表中字符串的指针。调用者必须注意不要修改此字符串,因为那样会改变进程的环境。
getenv()的实现不需要重入。 getenv()返回值指向的字符串可以静态分配,并且可以通过后续调用getenv(),putenv(3),setenv(3)或unsetenv(3)进行修改。
secure_getenv()的"安全执行"模式由从内核传递到用户空间的辅助向量中包含的AT_SECURE标志控制。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。