6.22. pam_namespace-设置私有名称空间

pam_namespace.so [调试] [unmnt_remnt] [unmnt_only] [require_selinux] [gen_hash] [ignore_config_error] [ignore_instance_parent_mode] [unmount_on_close] [use_current_context] [use_default_context]

6.22.1. DESCRIPTION

pam_namespace PAM 模块为具有多实例化目录的会话设置私有名称空间。一个多实例化的目录根据用户名或使用 SELinux,用户名,安全上下文或同时使用这两者来提供其自身的不同实例。如果存在可执行脚本/etc/security/namespace.init,则在安装实例实例目录并将其安装在多实例化目录上后,该脚本用于初始化实例目录。该脚本接收多实例化的目录路径,实例目录路径,标记实例目录是否是新创建的(0 表示否,1 表示是)以及用户名作为其参数。

pam_namespace 模块将会话名称空间与父名称空间解除关联。在父名称空间中执行的任何安装/卸载(例如设备的安装)都不会反映在会话名称空间中。要将选定的安装/卸载事件从父名称空间传播到未关联的会话名称空间,Management 员可以使用特殊的共享子树功能。有关共享子树功能的其他信息,请参考 mount(8)手册页和 http://lwn.net/Articles/159077 和 http://lwn.net/Articles/159092 上的共享子树描述。

6.22.2. DESCRIPTION

/etc/security/namespace.conf文件指定要对哪些目录进行多实例化,如何对其进行多实例化,如何命名实例目录以及将不对其执行多实例化的所有用户。

当有人登录时,将扫描文件namespace.conf。Comments 用*#字符标记。每个非 Comments 行代表一个多实例化目录。这些字段用空格分隔,但可以用字符引起来,还可以识别转义序列\b \n \t *。这些字段如下:

polydir instance_prefix method list_of_uids

第一个字段* polydir 是要多实例化的目录的绝对路径名。特殊字符串 $ HOME 替换为用户的主目录, $ USER *替换为用户名。该字段不能为空。

第二个字段* instance_prefix 是用于为\ 实例化构建路径名的字符串前缀。然后根据多实例 method 附加“实例区分字符串”以生成最终实例目录路径。如果该目录尚不存在,则创建该目录,然后将其绑定安装在\ 上,以基于\ 列提供\ 的实例。特殊字符串 $ HOME 替换为用户的主目录, $ USER *替换为用户名。该字段不能为空。

第三个字段* method *是用于多实例化的方法。它可以采用这些值。 “ user”用于基于用户名的多实例化,“ level”用于基于进程 MLS 级别和用户名的多实例化,“ context”用于基于进程安全性上下文和用户名的多实例化,“ tmpfs”用于将 tmpfs 文件系统作为实例 dir 挂载,和“ tmpdir”用于创建临时目录作为实例目录,该目录在用户会话关闭时被删除。方法“上下文”和“级别”仅在 SELinux 中可用。该字段不能为空。

第四个字段* list_of_uids *是逗号分隔的用户名列表,未对其执行多实例化。如果保留空白,则将对所有用户执行多实例化。如果列表前面有单个“~”字符,则仅对列表中的用户执行多实例化。

要创建多实例化实例的目录必须存在,并且默认情况下必须具有 0000 模式。可以使用命令行选项* ignore_instance_parent_mode *覆盖实例父实例为 0000 模式的要求。

在上下文或级别多实例化的情况下,用于多实例化的 SELinux 上下文是用于执行由 getexeccon 获得的新进程的上下文。此上下文必须由调用应用程序或pam_selinux.so模块设置。如果未设置此上下文,则多实例化将仅基于用户名。

“实例区分字符串”对于“用户”方法是\ ,对于“上下文”和“级别”方法是\ _<raw directory context>。如果整个字符串太长,则将其结尾替换为自身的 md5sum。同样,当使用命令行选项* gen_hash *时,整个字符串将替换为其本身的 md5sum。

6.22.3. OPTIONS

请注意,如果使用此选项或自动检测到共享/安装点,则在专用名称空间中完成的安装和卸载将不会影响父名称空间。

6.22.4. 提供的模块类型

仅提供session模块类型。不得从多线程进程中调用该模块。

6.22.5. 返回值

6.22.6. FILES

6.22.7. EXAMPLES

这些是可能在/etc/security/namespace.conf中指定的示例行。

#以下三行将对/ tmp 进行实例化,
#/ var/tmp 和用户的主目录。/tmp 和/ var/tmp
#将根据安全级别进行多实例化
#和用户名,而主目录将是
#根据完整的安全上下文和用户名进行多实例化。
#不会对 root 用户执行多实例化
#和 adm 用于目录/ tmp 和/ var/tmp,而 home
#目录将对所有用户进行多实例化。
#
#注意实例目录不必驻留在其中
#多实例化目录。在以下示例中,
#的/ tmp 实例将在/ tmp-inst 目录中创建,
#where 作为/ var/tmp 和用户主目录的实例
#将驻留在当前目录中
# polyinstantiated.
#
/ tmp/tmp-inst /级别 root,adm
/ var/tmp/var/tmp/tmp-inst /级别 root,adm
$ HOME $ HOME/$ USER.inst/inst-上下文

对于\ ,您需要多实例化(例如登录),将以下行放在/etc/pam.d/<service>中作为会话组的最后一行:

会话必需 pam_namespace.so [参数]

此模块还取决于 pam_selinux.so 设置上下文。

6.22.8. AUTHORS

名称空间设置方案是由 Stephen Smalley,Janak Desai 和 Chad Sellers 设计的。 pam_namespace PAM 模块由 Janak Desai<janak@us.ibm.com>,Chad Sellers<csellers@tresys.com>和 Steve Grubb<sgrubb@redhat.com>开发。 Xavier Toth<txtoth@gmail.com>和 Tomas Mraz<tmraz@redhat.com>的其他改进。

上一章 首页 下一章