在Linux系统中,用户的家目录默认位置在/home下。每添加一个新用户,都会在/home下创建与用户同名的目录。
在创建用户时更改家目录位置,可以使用useradd -d命令。
1、问题描述
但是如果使用的是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 的错误。
2、原因分析
出现这个错误的原因是CentOS系统中的SELinux模块开启了。
SELinux全称是Security-Enhanced Linux,即安全增强型Linux,是由美国国家安全局(NSA)联合其他安全机构共同开发的。
它是Linux系统中的一个安全模块,SELinux的主要作用是解决root权限过高的问题。
启用了SELinux后,即使黑客获取了root权限,也不能为所欲为。
3、解决办法
SELinux有三种工作模式:
- enforcing:强制模式(违反 SELinux 规则的行为将被阻止并记录到日志中)
- permissive:宽容模式(违反 SELinux 规则的行为只会记录到日志中)
- disabled:禁用SELinux
解决方法很简单,将SELinux的工作模式临时切换到宽容模式,然后再添加新用户指定家目录,最后再切换回强制模式。
setenforce 0
useradd -d /tmp/walixz walixz
setenforce 1
出于安全考虑,瓦力箱子不建议直接关闭禁用SELinux功能。