你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

SELinux 和 Azure CycleCloud

大多数基于 Red Hat 的 Linux 分发版(RHEL,CentOS)默认安装并设置为enforcing(SELinux)。 SELinux 是 Linux 的安全增强功能,可让管理员更好地控制访问控制。 默认情况下,Azure CycleCloud 支持 SELinux,但为了支持许多 HPC 应用程序,CycleCloud 会修改管理员的 SELinux 环境。

HPC 群集和 SELinux

许多 Azure CycleCloud HPC 群集使用共享的 NFS 主目录,以便更轻松地提交作业并在计算节点之间共享信息。 使用共享主目录的群集包括 PBS Pro、网格引擎和 Slurm。

默认 SELinux 主目录策略阻止使用 NFS 装载或其他任何路径作为主目录,除了 /home。 因此,如果启用了 用户管理 ,CycleCloud 会自动运行必要的命令,以允许非标准 /共享/主 目录和 NFS 主目录。

若要启用非标准主目录,请运行以下命令,将安全上下文从 /home 复制到 /shared/home ,并在新的主目录上以递归方式重置安全上下文:

semanage fcontext -a -e /home /shared/home
restorecon -R /shared/home

注释

通常,大多数 HPC 群集中的主节点导出用作所有 execute 节点的主目录的文件系统。 在这种情况下, /shared/home 不是主节点上的 NFS 装载,而是 指向 /mnt/export/shared/home 的符号链接,这是通过 NFS 导出的目录。

注释

一般来说,在大多数 HPC 群集中,scheduler 节点负责导出作为所有 execute 节点主目录的文件系统。 在这种情况下,/shared/home 不是 scheduler 节点上的 NFS 挂载,而是指向 /mnt/exports/shared/home 的符号链接,这是通过 NFS 导出的目录。

对于装载共享文件系统的 VM,必须显式启用 NFS 主目录,以便用户可以登录到 VM:

setsebool -P use_nfs_home_dirs 1

若要运行上述命令,作系统会安装一些包(如果尚未安装)。 该 policycoreutils 包提供 restorecon 命令和 setsebool 命令。 policycoreutils-pythonpolicycoreutils-python-utils包提供semanage命令,具体取决于 OS 版本。

注释

大多数 Azure CycleCloud 群集使用 /shared/home 作为群集的主目录,但某些配置使用不同的路径。 如果是这种情况,请使用备用路径而不是 /shared/home 运行相同的命令。

禁用 SELinux

在某些情况下,由于 SELinux,应用程序无法正常工作。 为了简化调试,CycleCloud 允许群集管理员将 SELinux 模式 permissive 设置为或 disabled 通过以下配置选项:

cyclecloud.selinux.policy = permissive  # or `disabled`

若要在 OS 级别更改 SELinux 策略,请使用 setenforce 0 命令暂时将 SELinux 设置为 permissive 模式。 然后,修改 /etc/selinux/config 文件以永久更改 SELinux 模式。

若要运行 setenforce,请安装 libselinux-utils 包(如果尚未安装在 OS 上)。

重要

将 SELinux 设置为禁用后,必须重启 VM 才能完全禁用 SELinux。 VM 保持宽松模式,直到重新启动它。