Linux 用户和用户组管理

简介

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个惟一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

一、用户的基本概述

1.什么是用户

用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房子,能够正常入驻)。

问:那Linux与Windows系统的用户有什么区别?

答:本质都是登陆系统,只不过Linux支持多个用户同时登陆。

问:难道Windows就不算多用户操作系统吗?

答:其实不是,在Windows系统中可以创建多个用户,但不允许同一时刻多个用户登陆系统,但Linux系统则允许同一时刻多个用户同时登陆,登陆后相互之间操作并不影响。

2.显示用户的信息

[root@whb ~]# id		#显示当前登录的用户信息
uid=0(root) gid=0(root) groups=0(root) 
[root@whb ~]# id  adm   	#显示其他用户的信息
uid=3(adm) gid=4(adm) groups=4(adm)

[root@whb ~]# ps aux		#不同的进程使用不同的用户启动和管理
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128032  6648 ?        Ss   Nov28   3:28 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    Nov28   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Nov28   0:18 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   Nov28   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    Nov28   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    Nov28   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    Nov28   0:43 [rcu_sched]

3.用户信息的存放位置

Linux系统会将用户的信息存放在/etc/passwd,记录了用户的信息,但没有密码信息,密码被存放

在/etc/shadow中。也就是说这两个文件非常的重要,不要轻易删除与修改


二、用户的配置文件

1.用户信息的配置文件/etc/passwd

[root@whb ~]# head  -1  /etc/passwd			#存在用户的基本信息
root:x:0:0:root:/root:/bin/bash

以:为分隔符,分成7列

第一列:  root		#用户的名称  

第二列:  x		#密码的占位符

第三列:  0		#用户的UID

第四列:  0		#用户的组ID,GID

第五列:  root		#用户的注释信息

第六列:  /root		#用户的家目录

第七列:  /bin/bash      #用户的命令解释器   

2.用户密码的配置文件/etc/shadow

[root@whb ~]# cat /etc/shadow
root:$6$JKkPVQCTgyseuqBi$0pxtzE1hJ.tum6r3D7c8AprvdQty/rKunLClXhmfePUsIwQUO6nWK9k3ZnHo7iF.oOwEQg1mZRL2qAmdSFea7.
::0:99999:7:::
bin:*:17834:0:99999:7:::

以:号为分割符,分成9列

第一列:           #用户的名称

第二列:           #用户的密码,加密 ,* 或 !!  表示没有密码

第三列:17834	  #表示用户的密码最近的一次修改时间,距离1970年1月1号过了多少天  

第四列: 0         #密码最小使用时间,0 没有限制

第五列:99999	  #密码的最大有效期,最大的使用时间  

第六列:7	  #密码快到期的警告时间

第七列:		  #密码过期后的宽恕时间

第八列:		  #账户的失效时间 

第九列:		  #没有使用

3.系统与用户的约定

用户UID 系统中约定的含义
0         超级管理员,最高权限,有着极强的破坏能力
1~200        系统用户,用来运行系统自带的进程,默认已创建
201~999        系统用户,用来运行安装的程序,所以此类用户无需登录系统
1000+        普通用户,正常可以登录系统的用户,权限比较小,能执行的任务有限

三、用户的相关命令

useradd              #添加用户

usermod            #修改已存在用户的信息

userdel               #删除用户

1.使用useradd命令创建用户

选项:

-u                   #指定用户的UID -g #指定用户组,写组名或者组的ID,基本组

-G                  #指定附加组,多个使用逗号分隔

-c                   #添加注释信息

-r                   #创建系统用户,不创建家目录

-M                 #不创建家目录

-d                  #指定家目录的位置,目录要是不存在

-s                   #指定用户的命令解释器

案例:

[root@whb ~]# id user01		#默认创建普通的用户
uid=1001(user01) gid=1001(user01) groups=1001(user01)
[root@whb ~]# grep  'user01'  /etc/passwd
user01:x:1001:1001::/home/user01:/bin/bash


[root@whb ~]# useradd   -u888  -c "测试用户"  -d  /opt/user02  user02
[root@whb ~]# id user02
uid=888(user02) gid=1002(user02) groups=1002(user02)
[root@whb ~]# grep  'user02'  /etc/passwd
user02:x:888:1002:测试用户:/opt/user02:/bin/bash
[root@whb ~]# ll /opt/
drwx------. 2 user02 user02         62 Dec 12 18:36 user02

[root@whb ~]# useradd  -r  -s  /sbin/nologin  user04
[root@whb ~]# grep  'user04'  /etc/passwd
user04:x:664:663::/home/user04:/sbin/nologin
[root@whb ~]# ll /home/
total 0
drwx------. 2 test   test   62 Nov 27 19:57 test
drwx------. 2 user01 user01 62 Dec 12 18:29 user01


[root@whb ~]# useradd   -M  -s  /sbin/nologin  user05
[root@whb ~]# ll /home/
total 0
drwx------. 2 test   test   62 Nov 27 19:57 test
drwx------. 2 user01 user01 62 Dec 12 18:29 user01
[root@whb ~]# grep  'user05'  /etc/passwd
user05:x:2000:2000::/home/user05:/sbin/nologin

2.使用usermod命令修改用户信息

选项:

-u                 #指定要修改用户的UID

-g                 #指定要修改用户基本组

-a                 #将用户添加到补充组。仅与-G选项一起使用

-G                #指定要修改用户附加组,使用逗号隔开多个附加组, 覆盖原有的附加组

-d                 #指定要修改用户家目录

-m               #将用户主目录的内容移动到新位置。如果当前主目录不存在,则不会创建新的主目录

-s                 #指定要修改用户的bash shell

-c                 #指定要修改用户注释信息

-l                  #指定要修改用户的登陆名

-L                #指定要锁定的用户

-U               #指定要解锁的用户

案例:

[root@whb ~]# usermod   -u1010   -c  "test"  -s /bin/bash  user05  
[root@whb ~]# grep  'user05'  /etc/passwd
user05:x:1010:2000:test:/home/user05:/bin/bash
[root@whb ~]# usermod   -md  /home/user02   user02
[root@whb ~]# ll /home/
total 0
drwx------. 2 test   test   62 Nov 27 19:57 test
drwx------. 2 user01 user01 62 Dec 12 18:29 user01
drwx------. 2 user02 user02 62 Dec 12 18:36 user02


[root@whb ~]# usermod   -l  oldboy   user05		#修改名称
[root@whb ~]# id user05
id: user05: no such user
[root@whb ~]# id oldboy
uid=1010(oldboy) gid=2000(user05) groups=2000(user05)
[root@whb ~]# grep  'oldboy'  /etc/passwd
oldboy:x:1010:2000:test:/home/user05:/bin/bash


[root@whb ~]# usermod    -L  test		#锁定用户
[root@whb ~]# usermod    -U  test		#解锁用户

3使用userdel命令删除用户

选项:

-r                 #删除用户同时删除它的家目录

案例:

[root@whb ~]# userdel  user02	#默认不删除家目录和邮件信息
[root@whb ~]# grep  'user02'  /etc/passwd
[root@whb ~]# id user02
id: user02: no such user
[root@whb ~]# ll  /home/
total 0
drwx------. 2 test   test   62 Nov 27 19:57 test
drwx------. 2 user01 user01 62 Dec 12 18:29 user01
drwx------. 2    888   1002 62 Dec 12 18:36 user02

[root@whb ~]# userdel   -r   user01		#删除跟用户相关的所有信息
[root@whb ~]# ll  /home/
total 0
drwx------. 2 test test 62 Nov 27 19:57 test
drwx------. 2  888 1002 62 Dec 12 18:36 user02

四、用户组管理

(一)、用户组的类型:

基本组                   #一个用户只有一个基本组

附加组                   #一个用户可以有多个附加组

但是,各种组都可以有多个用户 

(二)、组信息及密码信息的文件

1.组信息的文件/etc/group

[root@whb ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:

第一列:       #组名
第二列:       #组密码占位符
第三列:       #组的ID,即GID
第四列:       #当组作为附加组时,它的组员。多个用逗号隔开

2.组密码信息的文件/etc/gshadow

[root@whb ~]# cat /etc/gshadow
root:::
bin:::
daemon:::

第一列:      #组名
第二列:      #组密码,!和空格表示无密码
第三列:      #组的管理者
第四列:      #当组作为附加组时,它的组员。多个用逗号隔开

(三)、创建用户组的命令groupadd

1.groupadd

#创建组命令

选项:

         -g          #指定组的GID

         -r          #创建系统组

[root@whb ~]# groupadd   user01
[root@whb ~]# grep  'user01' /etc/group
user01:x:2016:
[root@whb ~]# groupadd   -g  2018 user02
[root@whb ~]# grep  'user02' /etc/group
user02:x:2018:
[root@whb ~]# groupadd   -r  user04
[root@whb ~]# grep  'user04' /etc/group
user04:x:663:

2.groupmod

#修改组信息命令

选项:

                    -n            #修改组名字

-g             #修改组的GID

[root@whb ~]# groupmod   -g 2019  user01
[root@whb ~]# grep  'user01' /etc/group
user01:x:2019:

[root@whb ~]# groupmod   -n  user10  user01
[root@whb ~]# grep  'user01' /etc/group
[root@whb ~]# grep  'user10' /etc/group
user10:x:2019:

3.groupdel

#删除组

删除组时,无法删除已经作为用户基本组的组,如果只是附加组,可以删除。

[root@whb ~]# groupdel   user10
[root@whb ~]# grep  'user10' /etc/group
[root@whb ~]# grep  'web' /etc/group
oldboy1:x:2002:web
web:x:2015:
[root@whb ~]# groupdel   web
groupdel: cannot remove the primary group of user 'web'
[root@whb ~]# usermod   -g user03  web
[root@whb ~]# groupdel   web

[root@whb ~]# groupadd   yw
[root@whb ~]# useradd   -g yw  yw1
[root@whb ~]# useradd   -g yw  yw2
[root@whb ~]# id  yw1
uid=2014(yw1) gid=2019(yw) groups=2019(yw)
[root@qls ~]# id  yw2
uid=2015(yw2) gid=2019(yw) groups=2019(yw)

 

 

 

点赞

发表回复