前言
使用useradd命令添加用户,这个命令在红帽和ubuntu中的执行效果有点不一样?实际上可以修改配置文件/etc/login.defs 让ubuntu自动创建/home/xxx 目录的。
Red Hat中执行
会自动在/home目录下创建对应的用户名目录
$ sudo useradd ting
$ ls /home
csdn ting
或者加-d 指定家目录
$ sudo useradd ting2 -d /home/ting2_home
$ ls /home
csdn ting ting2_home
在红帽中会自动创建不存在的家目录。
ubuntu中执行
lkmao@ubuntu:~$ sudo useradd ting
lkmao@ubuntu:~$ ls /home/
csdn hhe lkmao root
lkmao@ubuntu:~$
并没有创建ting目录,这是什么情况?系统差异吗?
我们使用’useradd 用户名’ 创建新用户时系统为我们规定好了许多新用户的默认设置,这些设置主要包括:
1 在/etc/passwd里面创建一行与账号有关的数据;
2 在/etc/shadow里将此账号密码相关参数填入,但此时未有密码;
3 在/etc/group里加入一个与账号名称一模一样的组名;
4 在/home 下建立于账号同名的目录作为家目录,权限为700
为什么会主动建立家目录?家目录里的数据来自哪里?为什么预设使用/bin/bash这个shell?这就需要了解useradd的参考文件。
我们通过’useradd -D’ 可以查看基本的配置:
lkmao@ubuntu:~$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
lkmao@ubuntu:~$
这个数据其实是由 /etc/default/useradd里面设置的,可以使用vim去观察内容。如下所示:
1 # Default values for useradd(8)
2 #
3 # The SHELL variable specifies the default login shell on your
4 # system.
5 # Similar to DHSELL in adduser. However, we use "sh" here because
6 # useradd is a low level utility and should be as general
7 # as possible
8 SHELL=/bin/sh
9 #
10 # The default group for users
11 # 100=users on Debian systems
12 # Same as USERS_GID in adduser
13 # This argument is used when the -n flag is specified.
14 # The default behavior (when -n and -g are not specified) is to create a
15 # primary user group with the same name as the user being added to the
16 # system.
17 # GROUP=100
18 #
19 # The default home directory. Same as DHOME for adduser
20 # HOME=/home
21 #
22 # The number of days after a password expires until the account
23 # is permanently disabled
24 # INACTIVE=-1
25 #
26 # The default expire date
27 # EXPIRE=
28 #
29 # The SKEL variable specifies the directory containing "skeletal" user
30 # files; in other words, files such as a sample .profile that will be
31 # copied to the new user's home directory when it is created.
32 # SKEL=/etc/skel
33 #
34 # Defines whether the mail spool should be created while
35 # creating the account
36 # CREATE_MAIL_SPOOL=yes
37
创建用户的默认设置文件—/etc/login.defs
/etc/login.defs 文件用于在创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等。
需要注意的是,该文件的用户默认配置对 root 用户无效。并且,当此文件中的配置与 /etc/passwd 和 /etc/shadow 文件中的用户信息有冲突时,系统会以/etc/passwd 和 /etc/shadow 为准。如果我们想修改默认配置即可修改配置项的值即可。
设置项 | 含义 |
---|---|
MAIL_DIR /var/spool/mail | 创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 lamp 用户的邮箱是 /var/spool/mail/lamp。 |
PASS_MAX_DAYS 99999 | 密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。 |
PASS_MIN_DAYS 0 | 表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。 |
PASS_MIN_LEN 5 | 指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。 |
PASS_WARN_AGE 7 | 指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。 |
UID_MIN 500 | 指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500~549 之间的 UID 没有使用。 |
UID_MAX 60000 | 指定用户最大的 UID 为 60000。 |
GID_MIN 500 | 指定最小 GID 为 500,也就是在添加组时,组的 GID 从 500 开始。 |
GID_MAX 60000 | 用户 GID 最大为 60000。 |
CREATE_HOME yes | 指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes。 |
UMASK 077 | 用户主目录的权限默认设置为 077。 |
USERGROUPS_ENAB yes | 指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes。 |
ENCRYPT_METHOD SHA512 | 指定用户密码采用的加密规则,默认采用 SHA512,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 加密。 |
修改配置文件/etc/login.defs ,在文件尾部添加
sudo vi /etc/login.defs
然后先删除用户ting,然后再次添加用户,对比发现出现了/home/ting文件夹,操作如下:
lkmao@ubuntu:~$ sudo userdel ting
lkmao@ubuntu:~$ ls /home/
csdn hhe lkmao root
lkmao@ubuntu:~$ sudo useradd ting
lkmao@ubuntu:~$ ls /home/
csdn hhe lkmao root ting
lkmao@ubuntu:~$
删除用户
sudo userdel ting:这样删除不会删除对应的家目录
sudo userdel -r ting,这样删除会同时删除对应的家目录,也会删除其他一些信息。