用户和用户组管理

定义

用户类型

  • 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

创建具体信息的用户

-u uid

-d 家目录

-c 描述信息

-g 主组

-s shell程序

[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)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐