Linux系统中用户的管理

本文详细介绍了Linux系统中用户的分类,包括root、系统用户和普通用户,并阐述了如何查看和切换用户。重点讲解了用户信息在系统中的存储方式,如/etc/passwd、/etc/group、/etc/shadow和/etc/gshadow文件的作用。同时,文章还涵盖了用户管理的相关命令,如useradd、userdel、usermod和passwd,以及如何通过sudo进行权限下放。通过对这些内容的学习,读者可以全面掌握Linux用户管理的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux系统之用户的管理

在进行用户管理操作之前,我们必须要了解到Linux系统中分别有三类用户:
1 root :也被称为超级用户。超级用户对系统有控制权限,可以不受限制的运行任何命令,root 用户可以看作是系统的管理员。
2 系统用户: 系统用户通常是不可登陆的,执行某些服务及进程的帐号。
3 普通用户: 一般用户都是普通用户,这些用户对系统文件的访问受限。

1.查看用户

##查看当前用户——whoami
  在不知道自己具体时超级用户,普通用户还是系统用户时,可以在命令行中输入whoami,即可查询到当前所使用的用户.
在这里插入图片描述

##查看指定用户——id + 指定用户

名称方法
-u查看用户的uid
-g查看用户的gid
-G查看用户所在的所有组的id
-nG查看用户的所有组的名字

  登录linux系统时,输入的是我们的帐号,但是linux系统并不会直接识别你的帐号,而是通过建立帐号时系统分配的ID号码;系统会为用户帐号分配至少两个ID,一个用户ID(UserID,简称UID),一个用户组ID(GroupID,简称GID),下面是UID:

名称方法
系统管理员ID0 (root用户ID)
普通用户ID1~65535
系统用户ID1~499(CentOS 6),1 ~999(CentOS 7)
登录用户ID500~+(CentOS 6),1000~+(CentOS 7)

  下面了解一下GID:

名称方法
管理员组0 (root组ID)
普通组1~65535
系统组ID1~499(CentOS 6),1 ~999(CentOS 7)
非系统组ID500~+(CentOS 6),1000~+(CentOS 7)

  对于一个用户而言,只有唯一个UID,但是可以有多个不同的组,分别为初始组和附加组,主组组名与用户名相同,且只有一个用户。主组以外的组为附加组。
在这里插入图片描述

2.用户的切换——su - 用户名

##注销当前用户——gome-session-quit --force

注销当前用户后,在使用其他用户登陆
在切换用户时,使用su - 用户名称
su - 中 “-” 标示在用户身份切换时同时切换当前用户的环境
su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级需要,平级用户切换也需要

在这里插入图片描述
注意:每次su切换到其他用户操作之后必须退出(exit),然后再次切换到其他用户

3.用户在系统中的存储方式

##/etc/passwd 用户信息文件——用户帐号
查看/etc/passwd文件的后三行
[kiosk@foundation70 ~]$ head -n 3 /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologi
passwd文件以”:”将信息分为7字段,各字段意义如下:
1字段:用户名称
2字段:用户密码,早期密码就在这个字段,后因安全问题,改放到/etc/shadow
3字段:UID,该帐号是登录用户,UID(CentOS7)分配为1000+
4字段:GID
5字段:对用户的说明信息,(注释)
6字段:用户的家目录
7字段:用户的shell

在这里插入图片描述

##/etc/group 用户组信息文件——组帐号
查看/etc/group文件后三行
[kiosk@foundation70 ~]$ head -n 3 /etc/group
root❌0:
bin❌1:
daemon❌2:
group文件以”:”将信息分为4字段,各字段意义如下:
1字段:组名称
2字段:用户组密码,因安全问题,改放到/etc/gshadow
3字段:GID
4字段:以此组为附加组的用户名称

在这里插入图片描述

##/etc/shadows 认证信息文件——用户密码
shadow文件以”:”将信息分为4字段,各字段意义如下:
1字段:用户名称
2字段:用户密码,该用户暂未设置密码
3字段:最后一次变更密码的日期,从1970年1月1日开始计算
4字段:密码变更锁定天数,与第3段相比锁定天数过后才可变更密码
5字段:密码使用期限,与第3段相比在此天数内需要重设你的密码
6字段:密码变更前警告期,与第5段相比密码快要到期时,系统会依据这个字段的天数设置发出”警告”
7字段:密码过期宽限时间,在此天数内用户没有登录变更密码,那么该帐号的密码将会”失效”
8字段:帐号失效日期,无论密码是否过期,这个帐号都不能再被使用
9字段:保留字段

在这里插入图片描述

##/etc/gshadow: 组密码及相关属性——组密码
gshadow文件以”:”将信息分为4字段,各字段意义如下:
1字段:组名称
2字段:用户组密码,该用户组暂未设置密码
3字段:用户组管理者,缺省代表没有管理者
4字段:组内用户列表,因为这是用户的私有组所以没有其他用户
在这里插入图片描述

##/etc/shells:系统中shell文件
在这里插入图片描述
其中/sbin/nologin为系统用户的shells,没有界面

4.用户管理命令

在进行用户管理命令练习时,我们可以使用watch来对/etc/passwd和/etc/group文件内容以及/home目录进行监控,这样可以清晰的明确看到用户的变化
[root@localhost Desktop]# watch -n 1 “tail -n 3 /etc/passwd /etc/group; ls -l /home”
在这里插入图片描述
watch -n ——每隔一秒变化一次
“tail -n 3 /etc/passwd /etc/group——查看 /etc/passwd /etc/group文件后三行
ls -l /home” ——查看/home目录里面的所有内容

##删除用户——userdel

名称方法
删除用户但不删除用户配置文件userdel+用户名
删除用户也删除用户配置文件userdel -r +用户名
##查看 /etc/passwd /etc/group文件后三行,查看/home目录里面的所有内容
[root@localhost Desktop]# watch -n 1 "tail -n 3 /etc/passwd /etc/group; ls -l /home" 
##删除zhima用户
[root@localhost Desktop]# userdel zhima
##删除zhima1用户
[root@localhost Desktop]# userdel -r zhima1
##新建zhima用户失败
[root@localhost Desktop]# userdel zhima
userdel: user 'zhima' does not exist
##新建zhima1用户成功
[root@localhost Desktop]# useradd zhima1

在这里插入图片描述

在图中我们可以看出在用userdel删除用户zhima再恢复该用户时无法被恢复,说明该用户的配置文件没有被删除;用userdel -r 删除用户zhima1再恢复该用户时无法被恢复,说明该用户的配置文件被删除

##新建用户——useradd

名称方法
指定用户uiduseradd -u
指定用户初始组iduseradd -g
指定用户的附加组iduseradd -G
指定用户的说明useradd -c
指定用户的家目录useradd -d
指定用户的默认shelluseradd -s

在指定用户组ID时,组ID必须存在

##指定upan用户的uid为7777
[root@localhost Desktop]# useradd -u 7777 upan
[root@localhost Desktop]# id upan
uid=7777(upan) gid=7777(upan) groups=7777(upan)
##删除upan用户
[root@localhost Desktop]# userdel -r upan
##指定upan用户的初始组gid为72
[root@localhost Desktop]# useradd -g 72 upan
[root@localhost Desktop]# id upan
uid=1002(upan) gid=72(tcpdump) groups=72(tcpdump)
[root@localhost Desktop]# userdel -r upan
##指定upan用户的附加组id为21
[root@localhost Desktop]# useradd -G 21 upan
[root@localhost Desktop]# id upan
uid=1002(upan) gid=1002(upan) groups=1002(upan),21(slocate)
[root@localhost Desktop]# userdel -r upan
##指定upan用户的说明为cunchushebei
[root@localhost Desktop]# useradd -c "cunchushebei" upan
##显示/etc/passwd文件最后一行
[root@localhost Desktop]# tail -n 1 /etc/passwd
upan:x:1002:1002:cunchushebei:/home/upan:/bin/bash
[root@localhost Desktop]# userdel -r upan
##指定upan用户的家目录为  /home/cunchu
[root@localhost Desktop]# useradd -d /home/cunchu upan
##显示/home中的所有文件
[root@localhost Desktop]# ls -l /home
total 18
drwx------  4 upan    upan     1024 Jul 11 05:08 cunchu
drwx------  2 root    root    12288 May 11  2017 lost+found
drwx------  4    7777    7777  1024 Jul 11 05:02 shu
drwx------. 5 student student  1024 May 11  2017 student
drwx------  4 zhima1  zhima1   1024 Jul 11 04:50 zhima
drwx------  4 zhima1  zhima1   1024 Jul 11 04:52 zhima1
[root@localhost Desktop]# userdel -r upan
##指定upan用户的默认shell为/bin/sh 
[root@localhost Desktop]# useradd -s /bin/sh upan
##显示/etc/passwd文件最后一行
[root@localhost Desktop]# tail -n 1 /etc/passwd
upan:x:1002:1002::/home/upan:/bin/sh

在这里插入图片描述

在进行新建用户的练习时,必须注意在新建用户后必须删除该用户后再进行下一项练习

##用户组的建立——groupadd

名称方法
建立用户组groupadd
建立用户组并指定用户组IDgroupadd -g
删除用户组groupdel
##建立upan用户组id
[root@localhost Desktop]# groupadd upan
##建立并指定upan用户组id为5555
[root@localhost Desktop]# groupadd -g 5555 jianpan
##删除upan用户组id
[root@localhost Desktop]# groupdel upan

在这里插入图片描述
##更改用户信息——usermod

名称方法
更改用户名usermod -l
更改uidusermod -u
更改gidusermod -g
更改附加组usermod -G
添加附加组usermod -aG
清空附加组usermod -G “”
指定用户说明文字usermod -c
更改用户家目录指向usermod -d
更改用户家目录usermod -md
更改用户shellusermod -s
冻结用户usermod -L
解锁用户usermod -U
[root@localhost Desktop]# id shubiao
uid=1001(shubiao) gid=1001(zhima1) groups=1001(zhima1)
##将shabao用户名改为zhima1
[root@localhost Desktop]# usermod -l zhima1 shubiao
[root@localhost Desktop]# id zhima1
uid=1001(zhima1) gid=1001(zhima1) groups=1001(zhima1)
##将zhima1用户的uid改为8888
[root@localhost Desktop]# usermod -u 8888  zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=1001(zhima1) groups=1001(zhima1)
##将zhima1用户的组id改为21
[root@localhost Desktop]# usermod -g 21  zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=21(slocate) groups=21(slocate)
##将zhima1用户的附加组id改为72
[root@localhost Desktop]# usermod -G 72  zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=21(slocate) groups=21(slocate),72(tcpdump)
##zhima1用户的附加组id添加一个72
[root@localhost Desktop]# usermod -aG 5555  zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=21(slocate) groups=21(slocate),72(tcpdump),5555(jianpan)
##清空zhima1用户的附加组id
[root@localhost Desktop]# usermod -G ""  zhima1
[root@localhost Desktop]# id zhima1
uid=8888(zhima1) gid=21(slocate) groups=21(slocate)
##为zhima1用户添加hahaha说明
[root@localhost Desktop]# usermod -c "hahaha"  zhima1
[root@localhost Desktop]# tail -n 1 /etc/passwd
zhima1:x:8888:21:hahaha:/home/zhima1:/bin/bash
##更改zhima1用户家目录指向
[root@localhost Desktop]# usermod -d /home/cai  zhima1
[root@localhost Desktop]# tail -n 1 /etc/passwd
zhima1:x:8888:21:hahaha:/home/cai:/bin/bash
[root@localhost Desktop]# ls -l /home
total 17
drwx------  2 root    root    12288 May 11  2017 lost+found
drwx------  4    7777    7777  1024 Jul 11 05:02 shu
drwx------. 5 student student  1024 May 11  2017 student
drwx------  4    1001 zhima1   1024 Jul 11 04:50 zhima
drwx------  4 zhima1  slocate  1024 Jul 11 04:52 zhima1
##添加chaye用户
[root@localhost Desktop]# useradd chaye
##更改chaye用户的家目录
[root@localhost Desktop]# usermod -md /home/cha chaye
[root@localhost Desktop]# tail -n 1 /etc/passwd
chaye:x:1001:5556::/home/cha:/bin/bash
[root@localhost Desktop]# ls -l /home
total 18
drwx------  4 chaye   chaye    1024 Jul 11 05:47 cha
drwx------  2 root    root    12288 May 11  2017 lost+found
drwx------  4    7777    7777  1024 Jul 11 05:02 shu
drwx------. 5 student student  1024 May 11  2017 student
drwx------  4 chaye   zhima1   1024 Jul 11 04:50 zhima
drwx------  4    8888 slocate  1024 Jul 11 04:52 zhima1
##更改chaye用户shell
[root@localhost Desktop]# usermod -s /bin/sh chaye
[root@localhost Desktop]# tail -n 1 /etc/passwd
chaye:x:1001:5556::/home/cha:/bin/sh

在这里插入图片描述

上文并未练习usermod -u和usermod -l 在下文中作对比写出

##用户密码——passwd

名称方法
更改密码passwd
查看用户密码信息passwd -S
冻结用户passwd -l
解锁用户passwd -u
清空密码passwd -d
##给chaye用户添加密码
[root@localhost Desktop]# passwd chaye
Changing password for user chaye.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
##锁定用户chaye
[root@localhost Desktop]# passwd -l chaye
Locking password for user chaye.
passwd: Success
##查看用户chaye密码状态
[root@localhost Desktop]# passwd -S chaye
chaye LK 2019-07-10 0 99999 7 -1 (Password locked.)
##解冻用户chaye
[root@localhost Desktop]# passwd -u chaye
Unlocking password for user chaye.
passwd: Success
[root@localhost Desktop]# passwd -S chaye
chaye PS 2019-07-10 0 99999 7 -1 (Password set, SHA512 crypt.)
##锁定用户chaye
[root@localhost Desktop]# usermod -L chaye
[root@localhost Desktop]# passwd -S chaye
chaye LK 2019-07-10 0 99999 7 -1 (Password locked.)
##解冻用户chaye
[root@localhost Desktop]# usermod -U chaye
[root@localhost Desktop]# passwd -S chaye
chaye PS 2019-07-10 0 99999 7 -1 (Password set, SHA512 crypt.)

在这里插入图片描述

注意:
passwd锁定用户比usedmod锁定要深;
用usermod锁定时使用passwd可以解锁;
用passwd锁定时使用usermod解锁时必须解锁两次;
用passwd锁定时使用usermod不能解锁;

##关于passwd的其他用法

##用户在登陆前强制更改密码
passwd -e 用户名==chage -d 0 用户名
改变用户最后一次密码时间为0
##用户1天之内不能更改密码

passwd -n 1 用户名==chage -m 1 用户名
用户密码最短有效期
##用户30天之内必须更改密码

passwd -x 30 用户名==chage -M 30 用户名
用户密码最长有效期
##用户密码过期前n天有警告

passwd -w 3 用户名==chage -W 3 用户名
用户密码警告期限
##用户过期后仍然可以登陆的天数

passwd -i 1 用户名==chage -I 1 用户名
用户非活跃天数
##用户在2019年1月1日到期

chage -E 2019-1-1用户名
用户到期日

##用户授权——权力的下放

权力下放文件为/etc/sudoers
此文件可以使用vim直接编辑,但vim不提供语法检测故我们使用visudo直接编辑visudo提供语法编辑
下放格式
visuso 100行左右(为了整齐规范化)
##tom用户可以在localhost主机以root用户身份执行useradd命令
用户   主机名称=(得到的用户身份)    命令
tom   localhost=(root)    /usr/sbin/useradd
##tom用户可以在localhost主机以 root用户身份免密执行useradd
用户   主机名称=(得到的用户身份)    命令
tom    localhost=(root)    NOPASSWD: /usr/sbin/useradd
测试
我们可以使用hostname命令来获取主机名称
-bash后面的路径为被拒绝的命令路径
在这里插入图片描述

visudo中配置haha和tian两个用户的权限
其中在haha’用户设置新建用户不需要加密码;tian用户设置新用户需要加密码。
在下面的代码中可以看到结果

在这里插入图片描述

## 添加用户tian
[root@localhost Desktop]# useradd tian
##给tian用户添加密码
[root@localhost Desktop]# passwd tian
Changing password for user tian.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
## 添加用户haha
[root@localhost Desktop]# useradd haha
##给haha用户添加密码
[root@localhost Desktop]# passwd haha
Changing password for user haha.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
##切换用户tian
[root@localhost Desktop]# su - tian
##查询tian的主机用户名
[tian@localhost ~]$ hostname
localhost
##建立cai用户失败,没有权限
[tian@localhost ~]$ useradd cai
-bash: /usr/sbin/useradd: Permission denied
##退出登陆
[tian@localhost ~]$ exit
logout
[root@localhost Desktop]# su - haha
[haha@localhost ~]$ hostname
localhost
[haha@localhost ~]$ useradd cai1
-bash: /usr/sbin/useradd: Permission denied
[haha@localhost ~]$ exit
logout
##切换到root用户下设置权限
[root@localhost Desktop]# visudo
[root@localhost Desktop]# su - tian
Last login: Thu Jul 11 10:32:26 EDT 2019 on pts/0
##添加失败,使用命令错误,少加sudo
[tian@localhost ~]$ useradd cai
-bash: /usr/sbin/useradd: Permission denied
[tian@localhost ~]$ sudo useradd cai
##tian用户设置权限时未设置不需要密码
[sudo] password for tian: 
[tian@localhost ~]$ id cai
uid=1005(cai) gid=1005(cai) groups=1005(cai)
[tian@localhost ~]$ exit
logout
[root@localhost Desktop]# su - haha
Last login: Thu Jul 11 10:33:04 EDT 2019 on pts/0
[haha@localhost ~]$ useradd cai1
-bash: /usr/sbin/useradd: Permission denied
##直接建立成功,设置权限时设置了不需要密码
[haha@localhost ~]$ sudo useradd cai1
[haha@localhost ~]$ id cai1
uid=1006(cai1) gid=1006(cai1) groups=1006(cai1)

注意在设置权限后建立新用户时要加sudo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值