链接程序和库指南

安全性

在安全进程中,对其依赖项及运行路径的评估应用了一些限制,以避免产生恶意依赖项替换或符号插入。

如果 issetugid(2) 系统调用对某进程返回 true,则运行时链接程序将该进程归类为安全进程。

对于 32 位目标文件,运行时链接程序已知的缺省可信目录为 /lib/secure/usr/lib/secure。对于 64 位目标文件,运行时链接程序已知的缺省可信目录为 /lib/secure/64/usr/lib/secure/64。实用程序 crle(1) 可用于指定适用于安全应用程序的其他可信目录。使用此技术的管理员应确保已对目标目录进行了适当的保护,以防受到恶意入侵。

如果 LD_LIBRARY_PATH 系列环境变量对安全进程有效,则仅将此变量指定的可信目录用于扩充运行时链接程序的搜索规则。 请参见运行时链接程序搜索的目录

在安全进程中,将使用应用程序或其任何依赖项指定的运行路径。但是,运行路径必须是全路径名,即路径名必须以 '/' 开头。

在安全进程中,仅当 $ORIGIN 字符串扩展为可信目录时,才允许对其进行扩展。 请参见安全

在安全进程中,LD_CONFIG 会被忽略。如果存在缺省配置文件,则安全进程将使用该配置文件。 请参见crle(1)

在安全进程中,LD_SIGNAL 会被忽略。

在安全进程中使用 LD_PRELOADLD_AUDIT 环境变量可装入其他目标文件。必须将这些目标文件指定为全路径名或简单文件名。全路径名仅限于已知的可信目录。简单文件名(名称中没有 '/')的查找受前面描述的搜索路径限制的约束。简单文件名只能解析为已知的可信目录。

在安全进程中,将使用前面描述的路径名限制来处理组成简单文件名的所有依赖项。以全路径名或相对路径名表示的依赖项按原样使用。因此,安全进程的开发者应确保作为这些依赖项之一引用的目标目录受到适当的保护,以避免恶意侵入。

在创建安全进程时,不要使用相对路径名来表示依赖项或构造 dlopen(3C) 路径名。此限制适用于应用程序及所有依赖项。