趣谈Linux用户管理

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 趣谈Linux用户管理

说到Linux的用户系统,不得不让人联想到:


网络异常,图片无法展示
|


没错就是他,Linux中最厉害的用户,没有之一,维护世界和平,维护系统治安可以对全部用户、全部目录、全部文件等等为所欲为的超级用户,英文名称root

1 Linux用户层级以及组的关系


网络异常,图片无法展示
|


  • 超级管理员:用户名root,对Linux系统具有最高级别权限,可以对系统的任何文件和目录进行操作。
  • 用户组:具有唯一GID的多个用户的集合。
  • 一般用户:Linux的一般使用用户,具有唯一的UID。

2 GID和UID

  • Group Id,即组ID,用来标识用户组的唯一标识符
  • User Id,即用户ID,用来标识每个用户的唯一标示符

3 组管理

3.1 添加组

(1)命令:

groupadd [组名]

(2)示例:

[root@iZ1608aqb7ntn9Z ~]# groupadd ymx
[root@iZ1608aqb7ntn9Z ~]# groupadd ymx
groupadd:“ymx”组已存在
复制代码

(3)常见参数:

  • group -g [组ID] [组名]
[root@iZ1608aqb7ntn9Z ~]# groupadd -g 1111 g1
[root@iZ1608aqb7ntn9Z ~]# cat /etc/group
......
g1:x:1111:
复制代码

3.2 删除组

(1)命令:

groupdel [组名]

(2)示例:

[root@iZ1608aqb7ntn9Z ~]# groupdel g1
复制代码

3.3 查看全部用户组

(1)命令:

cat /etc/group 或使用管道符 cat /etc/group | grep [组名]

(2)示例:

[root@iZ1608aqb7ntn9Z ~]# cat /etc/group    # 查看全部组
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
dbus:x:81:
utmp:x:22:
utempter:x:35:
input:x:999:
kvm:x:36:
render:x:998:
systemd-journal:x:190:
systemd-coredump:x:997:
systemd-resolve:x:193:
tss:x:59:
polkitd:x:996:
libstoragemgmt:x:995:
printadmin:x:994:
unbound:x:993:
ssh_keys:x:992:
setroubleshoot:x:991:
cockpit-ws:x:990:
cockpit-wsinstance:x:989:
sssd:x:988:
sshd:x:74:
chrony:x:987:
slocate:x:21:
rngd:x:986:
tcpdump:x:72:
nscd:x:28:
admin:x:1000:
mysql:x:1001:
docker:x:985:
cgred:x:984:
super:x:1002:
ymx:x:1003:
[root@iZ1608aqb7ntn9Z ~]# cat /etc/group | grep ymx    # 根据管道符查看组
ymx:x:1003:
复制代码

格式说明: [用户组名称]:[密码]:[GID],例如ymx❌1003: 的组名称为ymx,密码在其他配置文件中,GID为1003

大家根据命令的使用结果可以大致看出来几个规律,Linux系统中有很多系统默认的组,并且他们的GID都在1000以下,我们自己新加的组GID一般都在1000以上其次是管道符(后边会专门文章讲解),规律是|后边的值是|前边的查询条件

4 用户管理

4.1 添加用户

(1)命令

useradd [用户名]

(2)示例

[root@iZ1608aqb7ntn9Z article]# useradd ymx1
复制代码

(3)常见参数

  • useradd -D : 查看系统创建用户时的默认值
[root@iZ1608aqb7ntn9Z article]# useradd -D
GROUP=100  # 表示默认的GID为100
HOME=/home  # 表示默认用户目录在/home目录下
INACTIVE=-1  # 表示新用户的密码过期后不会被禁用
EXPIRE=   # 密码的过期日期
SHELL=/bin/bash # 默认的shell环境
SKEL=/etc/skel  # 将/etc/skel目录下的内容复制到用户的HOME目录下
CREATE_MAIL_SPOOL=yes  # 在mail目录下创建一个用于接收邮件的文件
复制代码
  • useradd [用户名] -g [组名] 或者 useradd -g [组名] [用户名] : 创建用户时指定组
[root@iZ1608aqb7ntn9Z article]# useradd ymx2 -g ymx
[root@iZ1608aqb7ntn9Z article]# useradd -g ymx ymx2
useradd:用户“ymx2”已存在
复制代码
  • useradd -d [目录名称] [用户名] : 创建用户时指定用户的home目录
[root@iZ1608aqb7ntn9Z article]# useradd -d /home/yyy3  ymx3
[root@iZ1608aqb7ntn9Z article]# cd /home/
[root@iZ1608aqb7ntn9Z home]# ls
admin  article  mysql  ymx1  ymx2  yyy3
复制代码
  • useradd [用户名] -u [UID] :为新用户指定UID
  • useradd [用户名] -e [过期时间] :为新用户指定过期时间
[root@iZ1608aqb7ntn9Z home]# useradd ymx5 -e 2021-09-01
[root@iZ1608aqb7ntn9Z home]# ls
admin  article  mysql  ymx1  ymx4  ymx5  yyy3
复制代码
  • passwd : 为用户设置密码
[root@iZ1608aqb7ntn9Z home]# useradd ymx4
[root@iZ1608aqb7ntn9Z home]# passwd ymx4
更改用户 ymx4 的密码 。 
新的 密码:                 # 输入密码时是隐藏的(安全)
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@iZ1608aqb7ntn9Z home]# 
复制代码

4.2 删除用户

(1)命令

userdel [用户名]

(2)示例

[root@iZ1608aqb7ntn9Z home]# ls
admin  article  mysql  ymx1  ymx2  ymx4  yyy3
[root@iZ1608aqb7ntn9Z home]# userdel ymx3
[root@iZ1608aqb7ntn9Z home]# ls
admin  article  mysql  ymx1  ymx2  ymx4  yyy3
复制代码

(3)常见参数

  • userdel -r [用户名]: 删除user的信息和所有的目录
[root@iZ1608aqb7ntn9Z home]# ls
admin  article  mysql  ymx1  ymx2  ymx4  yyy3
[root@iZ1608aqb7ntn9Z home]# userdel -r ymx2
[root@iZ1608aqb7ntn9Z home]# ls
admin  article  mysql  ymx1  ymx4  yyy3
复制代码

4.3 查看全部用户

(1)命令

四种方式:

  • getent passwd
  • cat /etc/shadow
  • cat /etc/passwd
  • compgen -u

(2)示例

[root@iZ1608aqb7ntn9Z home]# getent passwd
......
admin:x:1000:1000::/home/admin:/bin/bash
mysql:x:1001:1001::/home/mysql:/bin/bash
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash
[root@iZ1608aqb7ntn9Z home]# cat /etc/shadow
......
admin:!!:18704:0:99999:7:::
mysql:!!:18704:0:99999:7:::
ymx1:!!:18862:0:99999:7:::
ymx4:$6$F6bYMV/44jm63XXX$9FLXnCqXrE5BbXILRJghmaLF.LUBlnV.YBdFS0R8Wq5mzFIh3g9LlpwCtsfWChZaMw0P91P4deNJVHway7Gom1:18862:0:99999:7:::
ymx5:!!:18862:0:99999:7::18871:
[root@iZ1608aqb7ntn9Z home]# cat /etc/passwd
......
admin:x:1000:1000::/home/admin:/bin/bash
mysql:x:1001:1001::/home/mysql:/bin/bash
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash
[root@iZ1608aqb7ntn9Z home]# compgen -u
......
admin
mysql
ymx1
ymx4
ymx5
复制代码

4.4 切换用户

(1)命令

su [用户名] 切换到root 直接使用 su

(2)示例

[root@iZ1608aqb7ntn9Z home]# su ymx1
[ymx1@iZ1608aqb7ntn9Z home]$ who
root     pts/0        2021-08-23 10:03 (222.128.60.244)
root     pts/1        2021-08-23 10:03 (222.128.60.244
[ymx1@iZ1608aqb7ntn9Z home]$ su 
密码:
[root@iZ1608aqb7ntn9Z home]# 
复制代码

注意:区分是root用户还是其他用户,可以用 # 和 $ 来区分,例如[root@iZ1608aqb7ntn9Z home]#代表root用户下的终端,[ymx1@iZ1608aqb7ntn9Z home]$ 则代表普通模式下的终端

(3)常见参数

  • su -l [用户名] : 表示重新登录该用户
[root@iZ1608aqb7ntn9Z home]# su -l ymx1
上一次登录:一 8月 23 10:43:12 CST 2021pts/0 上
复制代码

5 两个重要的配置文件

5.1 /etc/shadow

(1)先看下内容:

[root@iZ1608aqb7ntn9Z ymx1]# cat /etc/shadow
......
ymx1:!!:18862:0:99999:7:::
ymx4:$6$F6bYMV/44jm63XXX$9FLXnCqXrE5BbXILRJghmaLF.LUBlnV.YBdFS0R8Wq5mzFIh3g9LlpwCtsfWChZaMw0P91P4deNJVHway7Gom1:18862:0:99999:7:::
ymx5:!!:18862:0:99999:7::18871:
复制代码

(2)作用:

用于存储 Linux 系统中用户的密码信息,又称为“影子文件”

(3)每一行的含义:

  • 第一字段:用户名
  • 第二字段:密码
  • 第三字段:上次修改口令的时间戳
  • 第四字段:两次修改口令间隔最少的天数;如果这个字段的值为空,帐号永久可用;
  • 第五字段:两次修改口令间隔最多的天数;如果这个字段的值为空,帐号永久可用;
  • 第六字段:提前多少天警告用户口令将过期;如果这个字段的值为空,帐号永久可用;
  • 第七字段:在口令过期之后多少天禁用此用户;如果这个字段的值为空,帐号永久可用;
  • 第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
  • 第九字段:保留字段,目前为空,以备将来发展之用;

5.2 /etc/password

先看下内容:

[root@iZ1608aqb7ntn9Z ymx1]# cat /etc/passwd
......
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash
复制代码

(2)作用:

用于存储 Linux 系统中用户信息

(3)每一行的含义:

  • 第一段:用户名
  • 第二段:用户密码,x表示放在 /etc/shadow 中去了
  • 第三段:UID,0代表了root
  • 第四段:GID
  • 第五段:用户的描述介绍,可使用usermod -c 修改
  • 第六段:用户的家目录,在创建用户时自动生成在/home/用户名中,可以自定义这个目录。
  • 第七段:用户登陆的时候需要启动一个进程


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Linux Shell 数据安全/隐私保护
Linux用户管理
Linux用户管理
15 0
|
2月前
|
存储 运维 安全
linux用户管理
在Linux系统中,用户管理涉及创建、修改和删除用户及用户组,确保权限控制。关键命令如`useradd`用于新建用户,`usermod`调整用户属性,`userdel`删除用户,`passwd`变更密码。用户分为超级用户(root)、普通用户和系统用户。用户组管理包括`groupadd`、`groupdel`、`groupmod`和`gpasswd`。系统通过`/etc/passwd`和`/etc/group`文件存储用户和组信息,采用基于用户和组的权限模型。`su`和`sudo`用于切换用户权限,而`/etc/skel`目录提供新用户家目录的模板。这些机制保障了系统的安全和资源管理。
19 2
|
2月前
|
Linux API 数据安全/隐私保护
【Linux 用户管理】Linux用户身份信息获取与管理API 接口
【Linux 用户管理】Linux用户身份信息获取与管理API 接口
37 0
|
2月前
|
存储 Linux 数据安全/隐私保护
Linux文件权限及用户管理
Linux文件权限及用户管理
27 0
|
2月前
|
缓存 Unix Linux
Linux 常用命令汇总(四):信息显示 & 用户管理
hostname是一个 Unix/Linux 命令行工具,用于显示或设置系统的主机名dmesg是一个在 Unix-like 系统中常用的命令行工具,用于显示内核缓冲区的消息uptime是一个在 Unix 和类 Unix 系统(如 Linux)中常用的命令,用于显示系统已经运行了多长时间,以及当前有多少用户登录和系统负载的平均值stat是一个在 Unix 和类 Unix 系统(如 Linux)中常用的命令行工具,用于显示文件或文件系统的状态信息du。
|
2月前
|
Linux Shell 数据安全/隐私保护
Linux用户管理
简单说一下 Linux的用户管理
69 1
|
2月前
|
网络协议 Linux 网络安全
Linux服务器配置指南:网络、用户管理、共享服务及DNS配置详解
Linux服务器配置指南:网络、用户管理、共享服务及DNS配置详解
388 0
|
2月前
|
Linux 数据安全/隐私保护
Linux的用户管理与文件权限
Linux的用户管理与文件权限
|
2月前
|
Linux Shell 数据安全/隐私保护
Linux关机重启以及用户(组)管理
关机&重启命令&用户登录注销&用户管理&用户组&用户和组相关的文件
29 0
|
2月前
|
Linux 程序员 Shell
Linux编辑器,开机重启,用户注销,用户管理 常用命令
Linux编辑器,开机重启,用户注销,用户管理 常用命令
107 0