趣谈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
    上一次登录:一 823 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/用户名中,可以自定义这个目录。

  • 第七段:用户登陆的时候需要启动一个进程

猜你喜欢

转载自blog.csdn.net/Mr_YanMingXin/article/details/119882886