【Linux】Linux管理用户命令

管理命令

useradd 创建用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
useradd [options] LOGIN
选项:
-u UID [UID_MIN, UID_MAX], 定义在/etc/login.defs
-g GID 指明用户所属基本组,可为组名,也可以GID,组必须存在
-c "COMMENT" 用户的注释信息
-d /PATH/TO/HOME_DIR 以指定的路径为家目录
-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...[,GROUPN]]] 为用户指明附加组;组必须事先存在
-r 创建系统用户
-D 修改默认值,默认值设定在/etc/default/useradd文件中,也可以直接改文件
useradd 用户名 #添加用户,所在用户组与用户名同名,uid默认为最近的一个+1
useradd -g 组名 用户名 #添加用户,指定其所在的组
useradd -d 目录 用户名 #添加用户,指定用户的家目录

注意:使用-d选项时,指定的目录不能是已经存在的,每次创建新用户都会在家目录下复制一些配置文件,比如.bashrc,如果使用已经存在的目录就没有相应的文件会出错,/etc/ske1/下即为需要复制的文件

/etc/login.defs文件中包含了以下信息:

  • 用户邮箱的位置
  • 密码时效控制
  • UID选择的最小值和最大值(1000到60000)
  • GID选择的最小值和最大值(1000至60000)
  • 添加新用户时是否应创建主目录
  • 默认的umask
  • 用于加密密码的加密方法

useradd和adduser的区别

useradd是系统编译的本地二进制文件
adduser是一个使用useradd制作的perl脚本

adduser比useradd更友好,所提供的功能没有区别

在使用adduser命令时,它会添加这个用户名,并创建和用户名名称相同的组名,并把这个用户名添加到自己的组里去,并在/home目录想创建和用户名同名的目录,并拷贝/etc/skel目录下的内容到/home/用户名/的目录下,并提示输入密码,并提示填写相关这个用户名的信息。
用adduser这个命令创建的账号是普通账号,可以用来登陆系统。

1
adduser wo

在使用命令useradd时,它会添加这个用户名,并创建和用户名相同的组名,但它并不在/home目录下创建基于用户名的目录,也不提示创建新的密码。也就是说使用useradd mongo 创建出来的用户,将是默认的”三无“用户,无家目录,无密码,无系统shell,换句话说,它创建的是系统用户,无法用它来登陆系统。

1
2
3
4
5
6
7
8
9
10
11
12
13
useradd wo
#要用useradd创建的用户登陆系统则需要以下操作
passwd wo
mkdir wo
chown -R wo:wo /home/wo/
#修改wo的登陆Shell为/bin/bash
usermod -s /bin/bash wo
tail -1 /etc/passwd
#将/etc/skel目录下的文件复制到该用户目录下
cp -r /etc/skel /home/wo

也可以直接指定参数

1
2
3
4
useradd -d /home/wo -m -s /bin/bash wo
#-m 强制建立用户主文件夹
-d 用户主文件夹 指定用户登录所进入的目录,并赋予用户对该目录的的完全控制权
s shell 用户登录所使用的shell

实际中根据发行版的不同,配置的不同也会有区别

usermod 修改用户属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
usermod [OPTION] login
选项:
-u UID 新UID
-g GID 新基本组
-G GROUP1[,GROUP2,...[,GROUPN]]] 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append
-s SHELL 新的默认SHELL
-c 'COMMENT' 新的注释信息
-d HOME 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项
-l login_name 新的名字
-L lock指定用户,会在密码前加一个!
-U unlock指定用户
-e YYYY-MM-DD 指明用户账号过期日期
-f INACTIVE 设定非活动期限
usermod -c 注释信息 用户名 #为指定用户名添加注释
usermod -l 新用户名 旧用户名 #更改用户名
usermod -d 目录 用户名 #更改用户个人文件夹的路径
usermod -g 新用户组 用户名 #更改指定用户的基本组

userdel 删除用户

1
2
3
4
5
userdel [OPTION]... login
-r 删除用户家目录
userdel 用户名 #删除用户,但是不删除用户个人文件夹里的文件
userdel -r 用户名 #删除用户并且删除用户个人文件夹里的文件

passwd 给用户添加密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码
选项:
-l 锁定指定用户
-u 解锁指定用户
-n mindays 指定最短使用期限
-x maxdays 最大使用期限
-w warndays 提前多少天开始警告
-i inactivedays 非活动期限,一个用户账户密码已经过期inactivedays天之后,用户将不能再登录进账户
--stdin:从标准输入接收用户密码
echo "PASSWORD" | passwd --stdin USERNAME

pwck 检查密码的有效性

groupadd 创建组

1
2
3
4
groupadd [OPTION]... group_name
选项:
-g GID 指明GID号;[GID_MIN, GID_MAX]
-r 创建系统组

groupmod 修改组属性

1
2
3
4
5
6
7
groupmod [OPTION]... group
选项:
-n group_name 新名字
-g GID 新的GID
groupmod -n 新组名 原组名 #更改用户组名称
groupmod -g 组编号 组名 #设置用户组编号

groupdel 删除组

前提是用户组内没有用户

1
groupdel GROUP

gpasswd 管理/etc/gpasswd和/etc/gshadow

1
2
3
4
5
6
7
8
9
gpasswd [OPTION] GROUP
选项:
-a user 将user添加至指定组中
-d user 删除用户user的以当前组为组名的附加组
-A user1,user2,... 设置有管理权限的用户列表
gpasswd -a 用户名 附属组 #给用户添加附属组
gpasswd -d 用户名 附属组 #把用户从附属组中删除
gpasswd 用户名 #更改组密码,回车会有相应的提示操作

newgrp 临时切换基本组

1
newgrp 组名

用户创建的文件默认为主要组;需要以附属组创建文件的,需将身份切换到附属组
把用户的组切换到附属组,需要用户登录后,自己执行,切换
组密码是在组切换时用的,如果有会要求输入组密码
如果用户属于此组,则不需要组密码

chage 修改用户属性

1
2
3
4
5
6
7
8
chage [OPTION]... LOGIN
选项:
-d LAST_DAY
-E, --expiredate EXPIRE_DATE
-I, --inactive INACTIVE
-m, --mindays MIN_DAYS
-M, --maxdays MAX_DAYS
-W, --warndays WARN_DAYS

chsh 更改登录shell

1
2
3
4
5
6
7
chsh [Option] login
选项:
-l 列出可用的shell
-s shell 指定shell
chsh -l #列出所有shell
chsh user1 #修改user1的登录shell

chfn\finger 用户资料

1
2
chfn 用户名 #设置用户资料,依次输入用户资料
finger 用户名 #显示用户详细资料,与chfn对应

参考: