Linux操作系统用户与组管理概述与命令操作

前言:
1.了解Linux系统中用户与组的概念
2.了解用户管理和组的管理
3.了解用户切换与sudo提权
4.了解用户登录信息查看        

目录

一、用户与组概述

1.用户类型

(1)root用户

(2)系统用户 (程序用户)

(3)普通用户

2.用户和用户组关系

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

(1)存储用户信息

   /etc/passwd

 tail -1 /etc/passwd  user10:x:1014:1014::/home/user10:/bin/bash

 #用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell

(2)保存用户密码信息 

   /etc/shadow

tail -1 /etc/shadow  user2:!!:19522:0:99999:7:::

#用户名:密码:用户创建时间:密码最短使用期限:密码最长使用期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用

注意: !! 表示该用户没有设置密码;! 表示用户密码被锁定,该用户无法登录操作系统。

(3)保存用户组的信息 

   /etc/group

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

(4)保存用户组的密码

   /etc/gshadow

(5)设置密码过期时间

   /etc/login.defs

密码最大长度限制等内容,影响的是新创建的用户密码信息。

(6)用户创建时默认文件的模版目录

   /etc/skel目录

二、用户管理

1.useradd命令

语法: 

选项:

案例:

(1)指定用户的UID

(2)指定用户家目录

(3)指定用户的登录shell

(4)创建用户时不创建家目录

(5)创建程序用户

(6)创建用户时指定基本组

(7)创建用户时指定附加组

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

2.userdel

语法: 

选项:

案例:

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

3.passwd命令

语法:

选项:

案例:

(1)设置用户密码 

(2)锁定用户密码

(3)查看密码的锁定状态

(4)解除密码的锁定状态

(5)清空用户密码

(6)强制密码失效

(7)非交互式修改用户密码

4.usermod命令

语法:

选项:

(1)锁定用户

(2)解锁账户

5.chpasswd命令

语法:

选项:

案例:

批量修改用户密码

6.chage命令

语法:

选项:

案例:

1、查看用户的密码信息

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

三、组管理

1.groupadd命令

语法:

选项:

案例:

(1)创建新组

(2)将用户添加为组成员

2.groupdel命令

语法:

选项:

案例:

删除组

3.groupmod命令

语法:

选项:

案例:

修改组的GID

4.gpasswd命令

语法:

选项:

案例:

(1)单个添加

(2)批量添加

四、用户切换与sudo提权

1.su命令

语法: 

选项:

案例:

su 与 su - 的对比

2.sudo命令

语法:

选项:

案例:

(1)切换到root用户

(2)提升普通用户使用命令的权限

五、用户登录信息查看

1.id命令

语法:

案例:

2、w命令

语法:

选项:

案例:

3.who命令

(1)查看系统的启动时间

(2)查看系统登录用户

4.whoami命令

语法:

案例:

5.finger命令

语法:

6.last命令

语法:

案例:

7.lastb命令

语法:

案例:

8.lastlog命令

语法:

案例:

总结:

  Linux 系统中的用户和组管理是确保系统安全和高效运作的重要组成部分。通过合理管理用户和组,系统管理员可以控制谁可以访问系统资源以及如何访问。在 Linux 中,用户和组的管理操作非常直观,常见的命令包括 useradd、groupadd、usermod、groupmod 等,熟悉这些命令可以帮助管理员高效地管理系统用户和权限。掌握用户和组的权限管理,对于保持 Linux 系统的安全性和可操作性至关重要。


一、用户与组概述

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

1.用户类型

(1)root用户

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

(2)系统用户 (程序用户)

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

(3)普通用户

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

2.用户和用户组关系

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

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

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

(1)存储用户信息

   /etc/passwd

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

(2)保存用户密码信息 

   /etc/shadow

tail -1 /etc/shadow  user2:!!:19522:0:99999:7:::
#用户名:密码:用户创建时间:密码最短使用期限:密码最长使用期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用
注意: !! 表示该用户没有设置密码;! 表示用户密码被锁定,该用户无法登录操作系统。

(3)保存用户组的信息 

   /etc/group

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

(4)保存用户组的密码

   /etc/gshadow

(5)设置密码过期时间

   /etc/login.defs

密码最大长度限制等内容,影响的是新创建的用户密码信息。
[root@ding ~]# 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

(6)用户创建时默认文件的模版目录

   /etc/skel目录

 [root@ding ~]# ls -a
 .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

二、用户管理

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@ding ~]# 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
案例:
(1)创建新组
 [root@ding ~]# groupadd -g 12345 newgroup
(2)将用户添加为组成员
 [root@ding ~]# usermod -a user1 -G newgroup
 [root@ding ~]# tail -1 /etc/group
 newgroup:x:12345:user1

2.groupdel命令

删除组

语法:
 groupdel [选项] 组名
选项:
选项作用
-f强制删除,但不建议
案例:
删除组
 [root@ding ~]# groupdel newgroup

3.groupmod命令

语法:
 groupmod [选项] 组名
选项:
选项作用
-g, --gid GID修改GID
案例:
修改组的GID
[root@ding ~]# groupmod -g 54321 user1

4.gpasswd命令

项组内添加成员

语法:
 gpasswd [选项] 组名
选项:
选项作用
-a, --add USER向组 GROUP 中添加用户 USER,单个添加
-M, --members USER,...设置组 GROUP 的成员列表,批量添加,覆盖原有成员
案例:
(1)单个添加
 [root@ding ~]# gpasswd -a user2 root
 正在将用户“user2”加入到“root”组中
 
(2)批量添加
 [root@ding ~]# gpasswd -M user3,user4,user5 root
 [root@ding ~]# cat /etc/group | grep root
 root:x:0:user3,user4,user5

四、用户切换与sudo提权

1.su命令

切换用户,从root用户切换到普通用户不需要密码。普通用户之间切换需要密码。

语法: 
su [-] 用户名
选项:
选项作用
-, -l, --login切换目录用户的登录shell
案例:
su 与 su - 的对比
 #su 不会切换目标用户的登录shell
 #su -会切换到目标用户的登录shell

2.sudo命令

sudo用来进行普通用户提升权限

语法:
 sudo [选项] 参数
选项:
选项作用
-i切换到指定用户的登录shell。采用本身的密码提供验证。

注意:sudo -i root,切换到root,必须存在于sudoers文件中的普通用户才有权限。

案例:
(1)切换到root用户
 vim /etc/sudoers
 #通过查看该文件发现当用户的附加组为wheel时,可以执行任意命令
 usermod -a ding -G wheel
 [root@ding ~]$ sudo -i
(2)提升普通用户使用命令的权限
 #使用ifconfig命令修改网卡的IP参数
 [root@ding ~]$ ifconfig ens37 192.168.1.2/24
 SIOCSIFADDR: 不允许的操作
 SIOCSIFFLAGS: 不允许的操作
 SIOCSIFNETMASK: 不允许的操作
 ##使用sudo命令提升权限
 [root@ding ~]$ sudo ifconfig ens37 192.168.1.2/24
 

五、用户登录信息查看

1.id命令

查看用户的基本属性,用户UID,基本组及附加组

语法:
 id [OPTION]... [USER]
案例:
 [root@ding ~]# id ding
 uid=1000(ding) gid=1000(ding) 组=1000(ding)

2、w命令

查看当前系统登录详情

语法:
  w [options]
选项:
选项作用
-h不显示表头
案例:
 [root@ding ~]# w
  19:33:13 up 18 min,  3 users,  load average: 0.06, 0.40, 0.31
 USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
 root     :0       :0               19:28   ?xdm?  38.72s  0.31s /usr/libexec/gnome-session-bi
 root     pts/0    :0               19:28    1:29   0.13s  0.13s bash
 root     pts/2    192.168.115.1    19:30    1.00s  0.04s  0.01s w
 ​

3.who命令

显示当前系统登录的摘要信息

选项:

选项作用
-b, --boot上次系统启动时间
-u, --users列出已登录的用户

案例:

(1)查看系统的启动时间
 [root@ding ~]# who -b
          系统引导 2024-04-08 19:15
(2)查看系统登录用户
 [root@ding ~]# who -u
 root     :0           2024-04-08 19:28   ?          2375 (:0)
 root     pts/0        2024-04-08 19:28 00:08        2996 (:0)
 root     pts/1        2024-04-08 19:35 00:04        3899 (192.168.115.1)
 root     pts/2        2024-04-08 19:30   .          3802 (192.168.115.1)
 

4.whoami命令

显示当前登录用户的名称

语法:
 whoami 
案例:
 [root@ding ~]# whoami
 root

5.finger命令

查看用户登录信息,默认系统不存在该命令,需要安装

 [root@ding ~]# yum install -y finger
语法:
 finger 

 案例:

 [root@ding ~]# finger 
 Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
 root      root      *:0             Apr  8 19:28                           (:0)
 root      root       pts/0      11  Apr  8 19:28                           (:0)
 root      root       pts/1       7  Apr  8 19:35                           (192.168.115.1)
 root      root       pts/2          Apr  8 19:30                           (192.168.115.1)
 

6.last命令

last命令可以查看登录用户列表,last命令实际上从日志文件/var/log/wtmp读取信息并显示用户最近的登录列表。此命令普通用户也可以执行。

语法:
 last
案例:
 [root@ding ~]# last
 root     pts/1        192.168.115.1    Mon Apr  8 19:35   still logged in   
 root     pts/2        192.168.115.1    Mon Apr  8 19:30   still logged in   
 root     pts/1        192.168.115.1    Mon Apr  8 19:30 - 19:32  (00:02)    
 root     pts/0        :0               Mon Apr  8 19:28   still logged in   
 root     :0           :0               Mon Apr  8 19:28   still logged in   
 reboot   system boot  3.10.0-1160.el7. Mon Apr  8 19:15 - 11:45  (-7:-29)   
 root     pts/0        :0               Tue Mar 26 10:08 - 10:09  (00:00)    
 root     :0           :0               Tue Mar 26 10:08 - crash (13+09:06)  
 reboot   system boot  3.10.0-1160.el7. Mon Mar 25 20:08 - 11:45 (13+15:37)  
 ​
 wtmp begins Mon Mar 25 20:08:19 2024
 ​

7.lastb命令

lastb命令可以从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录用于发现系统登录异常。此命令要求root用户才可以执行,lastb可用参数与last命令参数相同。

语法:
 last
案例:
 [root@ding ~]# lastb 
 zhx      pts/1                         Mon Apr  8 11:48 - 11:48  (00:00)    
 root     :0           :0               Mon Apr  8 19:28 - 19:28  (00:00)    
 ​
 btmp begins Mon Apr  8 19:28:15 2024

8.lastlog命令

统计当前系统中存在用户的登录情况

语法:
 lastlog
案例:
 lastlog 
 用户名           端口     来自             最后登陆时间
 root             pts/1    192.168.115.1    一 4月  8 19:35:06 +0800 2024
 bin                                        **从未登录过**
 daemon                                     **从未登录过**
 adm                                        **从未登录过**
 lp                                         **从未登录过**
 sync                                       **从未登录过**
 shutdown                                   **从未登录过**
 halt                                       **从未登录过**
 mail                                       **从未登录过**
 operator                                   **从未登录过**
 games                                      **从未登录过**
 ftp                                        **从未登录过**
 nobody                                     **从未登录过**
 systemd-network                            **从未登录过**
 dbus                                       **从未登录过**
 polkitd                                    **从未登录过**
 libstoragemgmt                             **从未登录过**
 colord                                     **从未登录过**
 rpc                                        **从未登录过**
 saned                                      **从未登录过**
 saslauth                                   **从未登录过**
 abrt                                       **从未登录过**
 setroubleshoot                             **从未登录过**
 rtkit                                      **从未登录过**
 pulse                                      **从未登录过**
 radvd                                      **从未登录过**
 chrony                                     **从未登录过**
 unbound                                    **从未登录过**
 qemu                                       **从未登录过**
 tss                                        **从未登录过**
 usbmuxd                                    **从未登录过**
 geoclue                                    **从未登录过**
 gluster                                    **从未登录过**
 gdm              :0                        一 4月  8 19:15:19 +0800 2024
 rpcuser                                    **从未登录过**
 nfsnobody                                  **从未登录过**
 gnome-initial-setup                           **从未登录过**
 sshd                                       **从未登录过**
 avahi                                      **从未登录过**
 postfix                                    **从未登录过**
 ntp                                        **从未登录过**
 tcpdump                                    **从未登录过**
 ding              pts/2                     一 4月  8 19:40:51 +0800 2024
 user1            pts/1                     一 4月  8 11:48:03 +0800 2024
 ​

总结:

  Linux 系统中的用户和组管理是确保系统安全和高效运作的重要组成部分。通过合理管理用户和组,系统管理员可以控制谁可以访问系统资源以及如何访问。在 Linux 中,用户和组的管理操作非常直观,常见的命令包括 useraddgroupaddusermodgroupmod 等,熟悉这些命令可以帮助管理员高效地管理系统用户和权限。掌握用户和组的权限管理,对于保持 Linux 系统的安全性和可操作性至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值