使用useradd创建新用户无法创建用户家目录的问题
在使用useradd 来创建新用户是发现系统并未默认创建家目录,故对这一问题探索了一番,在《鸟哥的linux私房菜》这本书中才小窥其究竟。我们使用’useradd 用户名’ 创建新用户时系统为我们规定好了许多新用户的默认设置,这些设置主要包括:在/etc/passwd里面创建一行与账号有关的数据在/etc/shadow里将此账号密码相关参数填入,但此时未有密码在/etc/group里加入一个与账
在使用useradd 来创建新用户是发现系统并未默认创建家目录,故对这一问题探索了一番,在《鸟哥的linux私房菜》这本书中才小窥其究竟。
我们使用’useradd 用户名’ 创建新用户时系统为我们规定好了许多新用户的默认设置,这些设置主要包括:
- 在/etc/passwd里面创建一行与账号有关的数据
- 在/etc/shadow里将此账号密码相关参数填入,但此时未有密码
- 在/etc/group里加入一个与账号名称一模一样的组名
- 在/home 下建立于账号同名的目录作为家目录,权限为700
引用书中问题:为什么会主动建立家目录?家目录里的数据来自哪里?为什么预设使用/bin/bash这个shell?这就需要了解useradd的参考文件。
我们通过’useradd -D’ 可以查看基本的配置:
这个数据其实是由 /etc/default/useradd里面设置的,可以使用vim去观察内容。
除了以上设置 /etc/login.defs中还有密码参数:
在我的系统(Ubuntu 20)中使用useradd无法创建家目录的原因便是在这一设置中缺少"CREATE_HOME yes"这一设置。
所以这一问题的解决方法一:在添加这一设置后便会自动创建新用户的家目录了。并且通过 UMASK这个设定家目录权限。
这就是产生了解决方法二:上面这个值会让你使用useradd时主动加入 [-m]这个产生家目录的选项。如果你不想默认建立家目录也可以使用"useradd -m 用户名"来单独创建家用户和目录。
另外, /etc/skel是家目录的基准参考目录,家目录的数据都是由/etc/skel所复制过去的,如果想要新创建的用户环境变量被设置妥当可以自行编辑/etc/skel/.bashrc。也可以建立/etc/skel/www这个目录,那么新增用户的家目录也会有www这个目录。
更多推荐
所有评论(0)