Debian 系统是一各非常优秀的 Linux 操作系统,Ubuntu 是基于 Debian 的衍生版本,具有相同的包管理工具和系统命令。有时候我们需要给 Debian 系统的服务器添加用户,那么可以通过如下命令非常简单的操作。本篇演示默认在 root 用户下操作。

使用 adduser 添加用户

1
adduser jinzhongxu

该命令是 Perl 脚本命令,可以交互式的创建用户,需要设置新用户密码,并同时创建同名用户组和家目录。

将该用户添加到 sudo 次组(主组名同用户名)中,使其具有 sudo 权限,命令如下

1
2
3
usermod -a -G sudo jinzhongxu
# or
gpasswd -a jinzhongxu sudo

从 sudo 组中删除用户

1
gpasswd -d jinzhongxu sudo

使用 deluser 删除用户

有时候不想再使用用户了,可以删除用户,同时也可以删除该用户所有的文件,使用如下命令

1
deluser --remove-all-files jinzhongxu

其他添加用户命令

其实,除了上面比较方面的 Perl 脚本命令,用更加强大的 Linux 命令 useradd 和 userdel 来添加用户和删除用户,但是,需要的参数比较多,记忆比较复杂,下面列出各参数

useradd 添加用户

-c 备注:备注出现在 /etc/passwd 第 5 项字段中
-d 用户主文件夹:指定用户登录所进入的目录,同时赋予用户对该目录的的完全控制权
-e 有效期:指定用户的有效期限。格式为 YYYY-MM-DD,信息存储在 /etc/shadow 中
-f 缓冲天数:限定密码过期后多少天,将该用户帐号停用
-g 主要组:设置用户所属的主要组
-G 次要组:设置用户所属的次要组,可设置多组
-M 强制不创建用户主文件夹
-m 强制建立用户主文件夹,并将 /etc/skel/ 当中的文件复制到用户的根目录下
-p 密码:设置用户密码
-s shell:指导用户登录 shell
-u uid:指定用户标志符 user id,即 uid

建一个带有家目录并且可以登录 bash 的用户

1
useradd -m -s /bin/bash jinzhongxu

指定创建用户家目录的路径

1
useradd -m -d /home/jinzhongxu jinzhongxu

创建时把用户加入不同的用户组

1
useradd -m -G sudo jinzhongxu

创建类似于 adduser 方法的用户

1
useradd -m -s /bin/bash -d /home/jinzhongxu -G sudo jinzhongxu

创建用户的同时设置密码

1
2
3
4
5
6
# 不建议显示设置密码
useradd -m -s /bin/bash -d /home/jinzhongxu -G sudo -p "$(openssl passwd -1 121212)" jinzhongxu

useradd -m -s /bin/bash -d /home/jinzhongxu -G sudo -p `openssl passwd -1 -salt 'salt' 121212` jinzhongxu

echo "jinzhongxu:121212" | sudo chpasswd

userdel 删除用户

1
2
# 该命令删除用户所有的文件
userdel -r jinzhongxu

锁定账号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 锁定账号,使其无法登录
passwd -l jinzhongxu

# 解锁账号,使其可以以原密码登录
passwd -u jinzhongxu

# 查看用户密码状态
passwd --status jinzhongxu
passwd -S jinzhongxu

# 设置密码有效期登,更多请参考
man passwd

passwd [-l] [-u] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 帐号
功能选项与参数:
-l :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效;
-u :与 -l 相对,是 Unlock 的意思!
-S :列出密码相关参数,亦即 shadow 文件内的大部分信息。--status
-n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数
-x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码
-w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数
-i :后面接“日期”,shadow 的第 7 字段,密码失效日期

强制用户登录时改密码

1
2
3
4
5
6
7
8
9
10
11
12
13
# 用户登录时强制设置密码
chage -d 0 jinzhongxu

# 更多参考
chage [-ldEImMW] 帐号名
选项与参数:
-l :列出该帐号的详细密码参数;
-d :后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD
-E :后面接日期,修改 shadow 第八字段(帐号失效日),格式 YYYY-MM-DD
-I :后面接天数,修改 shadow 第七字段(密码失效日期)
-m :后面接天数,修改 shadow 第四字段(密码最短保留天数)
-M :后面接天数,修改 shadow 第五字段(密码多久需要进行变更)
-W :后面接天数,修改 shadow 第六字段(密码过期前警告日期)

账号信息更正

1
2
3
4
5
6
7
8
9
10
11
12
13
14
usermod [-cdegGlsuLU] username
选项与参数:
-c :后面接帐号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些帐号的说明。
-d :后面接帐号的主文件夹,即修改 /etc/passwd 的第六栏;
-e :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦!
-f :后面接天数,为 shadow 的第七字段。
-g :后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段!
-G :后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~
-a :与 -G 合用,可“增加次要群组的支持”而非“设置”喔!
-l :后面接帐号名称。亦即是修改帐号名称, /etc/passwd 的第一栏!
-s :后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。
-u :后面接 UID 数字啦!即 /etc/passwd 第三栏的数据;
-L :暂时将使用者的密码冻结,让他无法登陆。其实仅改 /etc/shadow 的密码栏。
-U :将 /etc/shadow 密码栏的 ! 拿掉,解冻啦!

账号说明信息

下面的命令都是让一般使用者修改 /etc/passwd 这个系统文件的。

查看账号信息

1
2
3
4
5
6
7
sudo apt install finger


finger [-s] username
选项与参数:
-s :仅列出使用者的帐号、全名、终端机代号与登陆时间等等;
-m :列出与后面接的帐号相同者,而不是利用部分比对 (包括全名部分),默认参数

更改账号说明信息

1
2
3
4
5
6
chfn [-foph] [帐号名]
选项与参数:
-f :后面接完整的大名;
-o :您办公室的房间号码;
-p :办公室的电话号码;
-h :家里的电话号码!

更改账号登录 shell

1
2
3
4
5
6
7
8
9
chsh [-s]
选项与参数:
-s :设置修改 Shell 啰

# 查看系统上安装的 shell
cat -n /etc/shells

# 修改当前用户的默认 shell
chsh -s /bin/zsh