Ubuntu 16.04中‘新版’login.defs是什么?默认用户配置改在哪?
嘿,刚好我对Ubuntu 16.04的用户配置这块比较熟悉,来给你拆解一下这个问题~
login.defs的默认用户配置方案 你发现login.defs被标记为过时是完全正确的——在Debian/Ubuntu体系里,很多原来由login.defs管控的用户默认配置,现在已经拆分到几个更针对性的文件里了,下面给你逐个说明:
1. /etc/default/useradd
这个文件是useradd命令的核心默认配置文件,包含创建用户时的基础规则:比如默认登录shell、用户主目录的默认位置、默认组ID范围等。你可以直接编辑这个文件,或者用更便捷的useradd -D命令来查看/修改这些默认值:
- 查看当前默认配置:
useradd -D - 修改默认shell为
/bin/bash:useradd -D -s /bin/bash
2. /etc/adduser.conf
如果你日常用的是adduser命令(Ubuntu里更常用的交互式创建用户工具,比useradd更友好),它的默认配置全在这个文件里。这里的选项更细致:比如用户主目录的前缀、默认用户ID的起始值、是否自动创建邮件目录、默认的用户组设置等。
举个例子,要是想修改默认用户ID的起始范围,直接编辑文件里的FIRST_UID和LAST_UID字段就行。
3. PAM配置文件(密码策略、登录限制)
如果涉及密码复杂度、过期时间、登录失败锁定这类规则,原来在login.defs里的部分选项,现在由PAM(Pluggable Authentication Modules)模块管理,对应的文件集中在/etc/pam.d/目录下:
- 密码复杂度规则:编辑
/etc/pam.d/common-password,通过pam_cracklib.so模块设置密码长度、字符种类要求等 - 密码过期策略:
/etc/login.defs其实还保留了PASS_MAX_DAYS这类字段,但Ubuntu官方更推荐通过/etc/pam.d/common-password里的pam_unix.so模块参数来配置,两者可以配合使用
补充小提示
虽然login.defs被标记为过时,但它里面的部分配置在Ubuntu 16.04里仍然会被部分系统工具读取。不过如果要修改用户创建的核心默认规则,优先调整/etc/default/useradd和/etc/adduser.conf,密码相关的规则则优先看PAM配置文件。
内容的提问来源于stack exchange,提问作者Tobin Shields

