useradd cannot set SELinux context for home directory问题解决办法

在Linux系统中,用户的家目录默认位置在/home下。每添加一个新用户,都会在/home下创建与用户同名的目录。

在创建用户时更改家目录位置,可以使用useradd -d命令。

问题描述

但是如果使用的是CentOS 7系统,而且Linux内核版本在2.6及以上,添加用户时指定用户家目录时,会出现错误提示:

useradd -d /tmp/walixz walixz
useradd: cannot set SELinux context for home directory /tmp/walixz

上面瓦力学长想添加walixz这个新用户,并更改用户家目录为/tmp/walixz时,出现useradd: cannot set SELinux context for home directory 的错误。

原因分析

出现这个错误的原因是CentOS系统中的SELinux模块开启了。

SELinux全称是Security-Enhanced Linux,即安全增强型Linux,是由美国国家安全局(NSA)联合其他安全机构共同开发的。

它是Linux系统中的一个安全模块,SELinux的主要作用是解决root权限过高的问题。

启用了SELinux后,即使黑客获取了root权限,也不能为所欲为。

解决办法

SELinux有三种工作模式:

  • enforcing:强制模式(违反 SELinux 规则的行为将被阻止并记录到日志中)
  • permissive:宽容模式(违反 SELinux 规则的行为只会记录到日志中)
  • disabled:禁用SELinux

解决方法很简单,将SELinux的工作模式临时切换到宽容模式,然后再添加新用户指定家目录,最后再切换回强制模式。

setenforce 0
useradd -d /tmp/walixz walixz
setenforce 1

出于安全考虑,瓦力学长不建议直接关闭禁用SELinux功能。

类似文章