Linux用户与组的管理

一,用户与组概述

与windows类似,Linux也有用户和用户组的概念。在Linux系统中,每次登录系统都必须以一个用户的身份登录,并且登录后的权限也会根据用户身份来确定。 每一个进程在执行时,也会有其用户,该用户也和进程所能控制的资源有关。Linux系统下的每一个目录、文件,都会有其属于的用户和用户组,我们称其为属主和属组。由此可见,用户和用户组与Linux系统的运行息息相关。在实际操作使用系统时,我们往往较多关注用户与用户组。

在Linux系统中,每个用户都有自己的用户ID,称为UID,每个用户组也有自己的用户组ID,称为GIDUID和GID在Linux系统中是不可重复的。Linux系统就是通过UID和GID来对用户和组进行管理的,而对于管理员来说,往往会设置用户名和组名,这样使得用户和用户组的使用管理更人性化。

1、用户类型

  • root用户

root用户时UID和GID都等于0的用户,是Linux系统中的“上帝”,拥有最大的权限。如果深入了解Linux系统,会发现root用户真的拥有很多特权,比如:无视Linux对权限的设置而强行读、写、执行文件,切换其他用户登录不需要密码,可以强行切换到已经存在的用户,只有root可以为普通用户修改密码等等。

  • 系统用户 (程序用户)

系统用户通常用于运行服务,但是此用户无家目录,也不能用于登录系统。例如,在yum安装apache、nginx等服务后,就会自动创建apache和nginx的用户和同名用户组。在CentOS6系统中,系统用户的UID范围是1-499,在CentOS7系统中,系统用户的ID是1-999

  • 普通用户

普通用户只能由root用户创建,该用户拥有家目录,并且可以登录,该用户的权限由root分配。普通用户拥有指定的shell环境。

2、用户和用户组关系

在Linux系统中,每个用户必定属于一个主组(基本组),默认情况下属于与其同名的用户组,最多可以有31个附属组,从用户权限的角度看,主组和附属组其实差别不大,用户也会拥有其附属组的组相关权限。

3、用户和用户组配置文件

Linux系统下用户和用户组相关的配置文件主要有以下几个:

  • /etc/passwd

存储用户信息

tail -1 /etc/passwd
user10:x:1014:1014::/home/user10:/bin/bash
#用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell
  • /etc/shadow

该配置文件保存了用户的密码信息 。

tail -1 /etc/shadow
user2:!!:19522:0:99999:7:::
#用户名:密码:用户创建时间:密码最短使用期限:密码最长使用期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用

注意: !! 表示该用户没有设置密码。

! 表示用户密码被锁定,该用户无法登录操作系统。

  • /etc/group

该文件保存了用户组的信息 。

tail -1 /etc/group
nginx:x:982:
#组名:占位符:组ID:非基本组的组成员
  • /etc/gshadow

该文件保存了用户组的密码。

  • /etc/login.defs

该文件可以设置密码过期时间,密码最大长度限制等内容。影响的是新创建的用户密码信息。

[root@ansible ~]# cat /etc/login.defs 
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
​
# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
​
#QMAIL_DIR  Maildir
MAIL_DIR    /var/spool/mail
#MAIL_FILE  .mail
​
# Password aging controls:
#
#   PASS_MAX_DAYS   Maximum number of days a password may be used.
#   PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#   PASS_MIN_LEN    Minimum acceptable password length.
#   PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
​
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999
​
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999
​
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local
​
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
​
# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077
​
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
​
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
​
  • /etc/skel目录

二、用户管理

1、useradd命令

创建一个新用户或更新默认新用户信息

语法:

useradd [选项] 用户名

选项:

选项 作用
-u 指定用户的UID。
-d 指定用户的家目录,而不采用默认创建在/home中的目录。不能是已存在的目录。
-s 指定用户的登录shell
-M 创建用户时不创建家目录
-g 创建用户时指定基本组,不会创建用户的同名组
-G 创建用户时指定附加组,依然会创建同名组
-e 创建用户时,指定用户的失效时间。

案例:

1、指定用户的UID

useradd -u 54321 user1

2、指定用户家目录

useradd -d /user2 user2

3、指定用户的登录shell

useradd -s /sbin/nologin user3

4、创建用户时不创建家目录

useradd -M user4

5、创建程序用户

useradd -M -s /sbin/nologin user5

6、创建用户时指定基本组

useradd -g user5 user6

7、创建用户时指定附加组

useradd -G user5 user7

8、创建用户时,指定用户的失效时间。

useradd -e 2024-04-08 user8
#验证:
tail -1 /etc/shadow
user8:!!:19820:0:99999:7::19821:

2、userdel

删除用户账户和相关文件

语法:

userdel [选项] 用户名

选项:

选项 作用
-r, --remove 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。

案例:

删除用户的同时删除在创建时产生的文件。

 userdel -r user7

3、passwd命令

更改用户的密码。root用户使用时,可以更改所有用户的密码。普通用户使用时,只能更改本身的密码。

语法:

passwd [选项] 用户名

选项:

选项 作用
-l(小写L), --lock 锁定用户密码。
-S 查看密码的锁定状态
-u,--unlock 解除用户密码的锁定状态
-d, --delete 将用户密码清空
-e,--expire 直接让密码失效,下次登录时必须更改。
--stdin 非交互式修改密码。

案例:

1、设置用户密码

passwd user9
#用户输入passwd命令后直接回车,表示更改本身的密码。

2、锁定用户密码

passwd -l user6
锁定用户 user6 的密码 。
passwd: 操作成功
#验证
 tail -1 /etc/shadow
user9:!!$6$nc2k.H5O$QBVprPO4.3MoiiY90n/Yapu0YpR72sVonaR0CKuolRzYBdX9.yzW/Boq5EcQItlPSdaGF2kp5czU.xKSDHr59/:19820:0:99999:7:::

3、查看密码的锁定状态

passwd -S user9
user9 LK 2024-04-07 0 99999 7 -1 (密码已被锁定。)

4、解除密码的锁定状态

passwd -u user9
解锁用户 user9 的密码。
passwd: 操作成功
##验证
passwd -S user9
user9 PS 2024-04-07 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
​

5、清空用户密码

passwd -d user9
清除用户的密码 user9。
passwd: 操作成功
##验证
tail -1 /etc/shadow
user9::19820:0:99999:7:::

6、强制密码失效

passwd -e  user9
正在终止用户 user9 的密码。
passwd: 操作成功

7、非交互式修改用户密码

echo 1 | passwd --stdin user9

4、usermod命令

修改一个用户账户的属性。

语法:

 usermod [选项] 用户名

选项:

选项 作用
-u 修改用户的UID。
-d 修改用户的家目录,而不采用默认创建在/home中的目录。
-s 修改用户的登录shell
-g 修改用户基本组,不会创建用户的同名组
-G 修改用户附加组,依然会创建同名组
-e 修改用户的失效时间。
-a, --append 追加用户到一个附加组
-L, --lock 锁定用户
-U, --unlock 解锁用户

案例:

1、锁定用户

usermod -L user1

2、解锁账户

usermod -U user1

5、chpasswd命令

#创建用户密码的文本文件

语法:

chpasswd [选项]

选项:

选项 作用

案例:

批量修改用户密码

#创建用户密码的文本文件
vim chpasswd.txt
user1:123.com
user2:1234.com
user3:12345.com
#修改密码
cat chpasswd.txt | chpasswd

6、chage命令

更改用户密码过期信息

语法:

chage [选项] 用户名

选项:

选项 作用
-l, --list 显示账户年龄信息
-m, --mindays 修改密码的最短使用期限
-M, --maxdays 修改密码的最长使用期限
-W, --warndays 修改密码过期的提示时间

案例:

1、查看用户的密码信息

[root@localhost ~]# chage -l user1
最近一次密码修改时间                  :4月 08, 2024
密码过期时间                  :从不
密码失效时间                  :从不
帐户过期时间                      :从不
两次改变密码之间相距的最小天数     :0
两次改变密码之间相距的最大天数     :99999
在密码过期之前警告的天数    :7
​

2、修改密码最短使用期限

[root@localhost ~]# chage -m 2 user1
[root@localhost ~]# chage -l user1
最近一次密码修改时间                  :4月 08, 2024
密码过期时间                  :从不
密码失效时间                  :从不
帐户过期时间                      :从不
两次改变密码之间相距的最小天数     :2
两次改变密码之间相距的最大天数     :99999
在密码过期之前警告的天数    :7
​

三、组管理

1、groupadd命令

创建新组

语法:

groupadd [选项] 组名

选项:

选项 作用
-g, --gid GID 指定 GID

案例:

创建新组

[root@localhost ~]# groupadd -g 12345 newgroup

将用户添加为组成员

[root@localhost ~]# usermod -a user1 -G newgroup
[root@localhost ~]# tail -1 /etc/group
newgroup:x:12345:user1

2、groupdel命令

删除组

语法:

groupdel [选项] 组名

选项:

选项 作用
-f 强制删除,但不建议

案例:

删除组

[root@localhost ~]# groupdel newgroup

3、groupmod命令

语法:

groupmod [选项] 组名

选项:

选项 作用
-g, --gid GID 修改GID

案例:

修改组的GID

[root@localhost ~]# groupmod -g 54321 user1

4、gpasswd命令

项组内添加成员

语法:

gpasswd [选项] 组名

选项:

选项 作用
-a, --add USER 向组 GROUP 中添加用户 USER,单个添加
-M, --members USER,... 设置组 GROUP 的成员列表,批量添加,覆盖原有成员

案例:

1)、单个添加

[root@localhost ~]# gpasswd -a user2 root
正在将用户“user2”加入到“root”组中
​

2)、批量添加

[root@localhost ~]# gpasswd -M user3,user4,user5 root
[root@localhost ~]# cat /etc/group | grep root
root:x:0:user3,user4,user5

你可能感兴趣的:(linux,运维,服务器)