Linux用户和用户组管理
本文介绍了Linux系统中的用户和用户组管理。主要内容包括:用户类型(超级用户、系统用户和普通用户)及其在/etc/passwd文件中的存储格式;用户组类型(主要组和补充组)及其在/etc/group文件中的记录方式。详细讲解了常用管理命令:useradd/usermod/userdel用于用户管理,groupadd/groupmod用于组管理,以及who/w/whomai等用户信息查询命令。文章
文章目录
用户和用户组管理
定义
用户类型
- superuser:用于管理系统,用户名称为root,UID为0,对系统具有完全访问权限
- system users:系统具有系统用户帐户,由提供支持服务的进程使用。 这些进程或守护进程通常不需要以超级用户身份运行。 它们是非特权帐户,用户保护自己文件和其他资源。系统用户帐户不用于交互方式登录系统
- regular users:大多数用户拥有常规用户帐户,用于日常工作
passwd文件
- /etc/passwd 文件保存操作系统登录用户信息
[root@centos7 ~ 11:32:47]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
格式:name:password:UID:GID:GECOS:directory:shell
-
name:用户登录名
-
password:用户密码,以x表示
-
UID:用户ID
-
GID:用户主组ID
-
GECOS:用户描述信息,通常为用户的真实姓名
-
directory:用户主目录,启动shell时的工作目录,默认位于/home/username
-
shell:用户打开终端时运行的程序,默认是shell。
对于system user,它的shell是/sbin/nologin。
group文件
- 组是用户的集合,组中用户继承组权限
- /etc/group 文件保存操作系统组信息
[root@centos7 ~ 11:32:55]# grep stj /etc/group
stj:x:1000:stj
格式:group_name:password:GID:user_list
- group_name:组名称
- password:组密码,用x表示
- GID:组ID,唯一表示组
- user_list:作为补充的成员
组类型
- 主要组:GID编号定义
- 补充组:由
/etc/group文件确定
查看用户信息
[root@centos7 ~ 11:39:40]# id
uid=0(root) gid=0(root) 组=0(root)
查看用户 uid
[root@centos7 ~ 11:45:16]# id -u stj
1000
用户管理
whoami命令
查看终端当前登录的用户名
[root@centos7 ~ 11:46:02]# whoami
root
who和w命令
查看系统所有终端上登录的用户信息
[root@centos7 ~ 11:46:57]# who
stj :0 2025-09-09 10:38 (:0)
root pts/0 2025-09-09 10:39 (10.1.8.1)
root pts/1 2025-09-09 10:39 (10.1.8.1)
root pts/2 2025-09-09 10:39 (10.1.8.1)
root pts/3 2025-09-09 10:39 (10.1.8.1)
[root@centos7 ~ 11:47:47]# w
13:29:48 up 2:51, 5 users, load average: 0.21, 0.24, 0.18
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
stj :0 :0 10:38 ?xdm? 5:39 0.21s /usr/libexec/gnome-session-binary --session gnome-cl
root pts/0 10.1.8.1 10:39 2:23m 0.13s 0.01s bash
root pts/1 10.1.8.1 10:39 2:50m 1:03 1:03 top
root pts/2 10.1.8.1 10:39 4.00s 0.20s 0.00s w
root pts/3 10.1.8.1 10:39 2:50m 1:04 1:04 top
users命令
查看系统所有终端上登录的用户名
[root@centos7 ~ 13:29:48]# users
root root root root stj
useradd命令
创建用户
[root@centos7 ~ 13:32:12]# useradd user01
[root@centos7 ~ 13:34:39]# grep user01 /etc/passwd
user01:x:1001:1001::/home/user01:/bin/bash
创建具体信息的用户
-uuid
-d家目录
-c描述信息
-g主组
-sshell程序
[root@centos7 ~ 13:36:24]# useradd -u 8888 -d /opt/user02 -c "user for software manager" -g wheel -s /sbin/nologin user02
[root@centos7 ~ 13:37:46]# grep user02 /etc/passwd
user02:x:8888:10:user for software manager:/opt/user02:/sbin/nologin
[root@centos7 ~ 13:39:12]# ls -d /opt/user02/
/opt/user02/
创建一个没有密码的用户
[root@centos7 ~ 14:06:06]# useradd -p '' tom
创建一个用户,用户属性默认参数配置在
/etc/login.defs文件中
[root@centos7 ~ 14:14:29]# cat /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
usermod命令
修改用户属性,
-md移动家目录到新位置
[root@centos7 ~ 15:07:57]# usermod user01 -u 1010 -md /home/user01 -s /bin/bash
[root@centos7 ~ 15:09:26]# grep user01 /etc/passwd
user01:x:1010:1001::/home/user01:/bin/bash
[root@centos7 ~ 15:10:25]# ls -d /home/user01
/home/user01
[root@centos7 ~ 15:10:49]# su - user01
[user01@centos7 ~ 15:10:58]$
在原有组上添加补充组,使用
-aG追加,-G为覆盖
[root@centos7 ~ 15:12:45]# usermod -aG stj user01
[root@centos7 ~ 15:12:54]# id user01
uid=1010(user01) gid=1001(user01) 组=1001(user01),1000(stj)
userdel命令
正常删除用户
[root@centos7 ~ 15:12:59]# userdel user01
userdel: user user01 is currently used by process 29162
[root@centos7 ~ 15:18:01]# id user01
uid=1010(user01) gid=1001(user01) 组=1001(user01),1000(stj)
userdel -f强制删除用户,忽略某些错误提示
[root@centos7 ~ 15:12:59]# userdel user01
userdel: user user01 is currently used by process 29162
[root@centos7 ~ 15:16:24]# users
root root root root stj tom
[root@centos7 ~ 15:18:01]# id user01
uid=1010(user01) gid=1001(user01) 组=1001(user01),1000(stj)
[root@centos7 ~ 15:18:09]# userdel -f user01
userdel: user user01 is currently used by process 29162
[root@centos7 ~ 15:18:23]# id user01
id: user01: no such user
同时删除用户的家目录和邮件
[root@centos7 ~ 15:19:24]# userdel -rf user01
用户组管理
groupadd命令
创建一个名称为
new的组创建一个名称为newnew,组id为2000的组
[root@centos7 ~ 17:02:22]# groupadd new
[root@centos7 ~ 17:02:30]# groupadd newnew -g 2000
[root@centos7 ~ 17:03:04]# grep new /etc/group
new:x:1003:
newnew:x:2000:
groupmod命令
把new组改名为newsname
把newsname的组id改为2025
[root@centos7 ~ 17:11:16]# groupmod -n newsname new
[root@centos7 ~ 17:22:11]# groupmod -g 2025 newsname
[root@centos7 ~ 17:22:42]# grep newsname /etc/group
newsname:x:2025:
groupdel命令
删除newnew组
[root@centos7 ~ 17:22:53]# groupdel newnew
[root@centos7 ~ 17:24:19]# grep newnew /etc/group
groupmems命令
[root@centos7 ~ 17:25:27]# groupmems --help
用法:groupmems [选项] [动作]
选项:
-g, --group groupname 更改组 groupname,而不是用户的组(只 root)
-R, --root CHROOT_DIR chroot 到的目录
动作:
-a, --add username 将用户 username 添加到组成员中
-d, --delete username 从组的成员中删除用户 username
-h, --help 显示此帮助信息并推出
-p, --purge 从组中移除所有成员
-l, --list 列出组中的所有成员
添加用户stj到newsname组
[root@centos7 ~ 17:24:29]# groupmems -g newsname -a stj
[root@centos7 ~ 17:28:24]# groupmems -g newsname -l
stj
[root@centos7 ~ 17:28:37]# id stj
uid=1000(stj) gid=1000(stj) 组=1000(stj),2025(newsname)
从newsname组中删除用户stj
[root@centos7 ~ 17:28:45]# groupmems -g newsname -d stj
[root@centos7 ~ 17:30:11]# groupmems -g newsname -l
[root@centos7 ~ 17:30:17]# id stj
uid=1000(stj) gid=1000(stj) 组=1000(stj)
清空newsname组中所有用户
[root@centos7 ~ 17:30:23]# groupmems -g newsname -p
管理用户密码
shadow文件
- /etc/shadow 文件保存操作系统登录用户密码信息
- 每行包含一个登录用户信息,以冒号分隔九个域
- login name:用户登录名。
- encrypted password:加密的密码。
- date of last password change:上一次密码更改日期,以距离1970-1-1过去的天数表示。设置为0,强制用户下次登录时更改密码。
- minimum password age:最小密码生命周期。设置为0,密码可以随时更改。
- maximum password age:最大密码生命周期。
- password warning period:密码过期前,提前多少天告警。设置为0,不提示过期。
- password inactivity period:密码过期后,非活跃天数,在期间密码仍可以使用。
- account expiration date:账户过期时间,以距离1970-1-1过去的天数表示。
- reserved field:保留域
[root@centos7 ~ 17:31:43]# grep stj /etc/shadow
stj:$6$0zxYJmdm$lLSBjhib.63Mr..W7q5.LGhfPAH3DTJsX4YLeClw9x2CbOu3CjjFQfNB5ySWfS3ujhXiY9nr7TBVH2b8YMls7/:20340:10:100:7:::
chage命令

查看用户stj的密码信息
[root@centos7 ~ 17:34:43]# chage -l stj
最近一次密码修改时间 :9月 09, 2025
密码过期时间 :12月 18, 2025
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :7
修改用户stj的密码要求
[root@centos7 ~ 17:37:25]# chage -M 999 stj
[root@centos7 ~ 17:38:54]# chage -l stj
最近一次密码修改时间 :9月 09, 2025
密码过期时间 :6月 04, 2028
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :999
在密码过期之前警告的天数 :7
usermod -p 更改用户密码
更改laowang的密码与stj一样
[root@centos7 ~ 17:39:00]# grep stj /etc/shadow
stj:$6$0zxYJmdm$lLSBjhib.63Mr..W7q5.LGhfPAH3DTJsX4YLeClw9x2CbOu3CjjFQfNB5ySWfS3ujhXiY9nr7TBVH2b8YMls7/:20340:10:999:7:::
[root@centos7 ~ 17:43:42]# usermod -p '$6$0zxYJmdm$lLSBjhib.63Mr..W7q5.LGhfPAH3DTJsX4YLeClw9x2CbOu3CjjFQfNB5ySWfS3ujhXiY9nr7TBVH2b8YMls7/' laowang
删除laowang用户密码(设置为空)
[root@centos7 ~ 17:44:19]# usermod -p '' laowang
usermod -s 限定用户shell
更改用户的shell 为 /sbin/nologin
[root@centos7 ~ 17:47:48]# usermod -s /sbin/nologin laowang
[root@centos7 ~ 17:48:17]# su - laowang
This account is currently not available.
usermod -L 锁定用户密码
与
passwd -l效果一样:输入正确密码也无法登录
[root@centos7 ~ 17:49:59]# usermod -L laowang
[stj@centos7 ~ 17:51:39]$ su - laowang
Password:
su: Authentication failure
[stj@centos7 ~ 17:51:41]$
usermod -U 解锁用户密码
与
passwd -u效果一样:解除用户的锁定,输入正确密码可以登录
[root@centos7 ~ 17:54:32]# usermod -U laowang
[stj@centos7 ~ 17:56:11]$ su - laowang
Password:
[stj@centos7 ~ 17:56:13]$
passwd -d 删除密码
[root@centos7 ~ 17:58:32]# passwd -d laowang
清除用户的密码 laowang。
passwd: 操作成功
设置账户过期
与
passwd -e效果一样,设置账户过期时间为过去的一个时间点
[root@centos7 ~ 17:59:52]# usermod -e 2000-01-01 laowang
增加一个uid为0的用户
- 方法一
root@centos7 ~]# vim /etc/passwd
# 将用户id改为0
stj:x:0:1000:stj:/home/stj:/bin/bash
- 方法二
[root@centos7 ~]# useradd -o -u 0 stj
[root@centos7 ~]# id stj
uid=0(root) gid=0(root) 组=0(root)
更多推荐


所有评论(0)