首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >趣谈Linux用户管理

趣谈Linux用户管理

原创
作者头像
闫同学
发布2023-11-08 22:45:57
发布2023-11-08 22:45:57
4030
举报
文章被收录于专栏:扯编程的淡扯编程的淡

说到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)示例:

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

(3)常见参数:

  • group -g 组ID
代码语言:shell
复制

root@iZ1608aqb7ntn9Z ~# groupadd -g 1111 g1

root@iZ1608aqb7ntn9Z ~# cat /etc/group

......

g1:x:1111:

代码语言:txt
复制
3.2 删除组

(1)命令:

groupdel 组名

(2)示例:

代码语言:shell
复制
[root@iZ1608aqb7ntn9Z ~]# groupdel g1
3.3 查看全部用户组

(1)命令:

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

(2)示例:

代码语言:shell
复制
[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:x:1003: 的组名称为ymx,密码在其他配置文件中,GID为1003

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

4 用户管理

4.1 添加用户

(1)命令

useradd 用户名

(2)示例

代码语言:shell
复制
[root@iZ1608aqb7ntn9Z article]# useradd ymx1

(3)常见参数

  • useradd -D : 查看系统创建用户时的默认值
代码语言:shell
复制

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目录下创建一个用于接收邮件的文件

代码语言:txt
复制
  • useradd 用户名 -g 组名 或者 useradd -g 组名 : 创建用户时指定组
代码语言:shell
复制

root@iZ1608aqb7ntn9Z article# useradd ymx2 -g ymx

root@iZ1608aqb7ntn9Z article# useradd -g ymx ymx2

useradd:用户“ymx2”已存在

代码语言:txt
复制
  • useradd -d 目录名称 : 创建用户时指定用户的home目录
代码语言:shell
复制

root@iZ1608aqb7ntn9Z article# useradd -d /home/yyy3 ymx3

root@iZ1608aqb7ntn9Z article# cd /home/

root@iZ1608aqb7ntn9Z home# ls

admin article mysql ymx1 ymx2 yyy3

代码语言:txt
复制
  • useradd 用户名 -u UID :为新用户指定UID
  • useradd 用户名 -e 过期时间 :为新用户指定过期时间
代码语言:shell
复制

root@iZ1608aqb7ntn9Z home# useradd ymx5 -e 2021-09-01

root@iZ1608aqb7ntn9Z home# ls

admin article mysql ymx1 ymx4 ymx5 yyy3

代码语言:txt
复制
  • passwd : 为用户设置密码
代码语言:shell
复制

root@iZ1608aqb7ntn9Z home# useradd ymx4

root@iZ1608aqb7ntn9Z home# passwd ymx4

更改用户 ymx4 的密码 。

新的 密码: # 输入密码时是隐藏的(安全)

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

root@iZ1608aqb7ntn9Z home#

代码语言:txt
复制
4.2 删除用户

(1)命令

userdel 用户名

(2)示例

代码语言:shell
复制
[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的信息和所有的目录
代码语言:shell
复制

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

代码语言:txt
复制
4.3 查看全部用户

(1)命令

四种方式:

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

(2)示例

代码语言:shell
复制
[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)示例

代码语言:shell
复制
[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 用户名 : 表示重新登录该用户
代码语言:shell
复制

root@iZ1608aqb7ntn9Z home# su -l ymx1

上一次登录:一 8月 23 10:43:12 CST 2021pts/0 上

代码语言:txt
复制

5 两个重要的配置文件

5.1 /etc/shadow

(1)先看下内容:

代码语言:shell
复制
[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

先看下内容:

代码语言:shell
复制
[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/用户名中,可以自定义这个目录。
  • 第七段:用户登陆的时候需要启动一个进程

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Linux用户层级以及组的关系
  • 2 GID和UID
  • 3 组管理
    • 3.1 添加组
    • 3.2 删除组
    • 3.3 查看全部用户组
  • 4 用户管理
    • 4.1 添加用户
    • 4.2 删除用户
    • 4.3 查看全部用户
    • 4.4 切换用户
  • 5 两个重要的配置文件
    • 5.1 /etc/shadow
    • 5.2 /etc/password
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档