首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2024全网最为详细的红帽系列【RHCSA-(10)】初级及进阶Linux保姆级别骚操作教程;学不费来砍我[就怕你日后学成黑客了]

2024全网最为详细的红帽系列【RHCSA-(10)】初级及进阶Linux保姆级别骚操作教程;学不费来砍我[就怕你日后学成黑客了]

作者头像
盛透侧视攻城狮
发布2024-10-22 10:43:10
发布2024-10-22 10:43:10
24400
代码可运行
举报
运行总次数:0
代码可运行

用户和组管理

1.Linux中的用户和组的分类 1、Linux下的用户可以分为三类:

  • 超级用户——用户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要 情形下才用超级用户登录,以避免系统出现安全问题。
  • 系统用户(伪用户)——是Linux系统正常工作所必需的用户。主要是为了满足相应的系统进程对文件属主的要求而建立的,例如:bin、daemon、adm、lp等用户。系统用户不能用来登录。
  • 普通用户——是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。

2、Linux中的组有以下两类:

  • 基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是基本组。
  • 附加组(公有组)可以容纳多个用户,组中的用户都具有组所拥有的权利

3、Linux中用户和用户组的配置文件 在Linux中,用户账号、密码、用户组信息和用户组密码均是存放在不同的配置文件中的

Linux中用户和用户组的配置文件功能及名称 文件功能 文件名称用户账号文件 /etc/passwd 用户密码文件/etc/shadow 用户组账号文件 /etc/group 用户组密码文件 /etc/gshadow

(1)用户账号文件——/etc/passwd passwd 是一个文本文件

用于定义系统的用户账号,由于所有用户都对passwd有读权限,所以该文件中/只定义用户账号,而不保存口令

举例:
代码语言:javascript
代码运行次数:0
运行
复制
[root@node13 ~]# ll /etc/passwd
-rw-r--r-- 1 root root 2917 May  6 17:44 /etc/passwd

[root@node13 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash

#每行定义一个用户账号信息,每行由7个字段组成,字段之间用“:”分隔,其格式如下:
 账号名称:密码:UID:GID:个人资料:主目录:Shell

字段名称

作用

账号名称

用户登录Linux系统时使用的名称。

密码

以前是以加密格式保存密码的位置,现在密码保存在/etc/shadow文件中此处只是密码占 位符“x”或“*”。若为“x”,说明密码经过了shadow的保护。

UID

用户的标识,是一个数值,用它来区分不同的用户每个用户都有一个UID数值:超级用户的UID——0 系统用户的UID——1~999 普通用户的UID——≥1000

GID

用户所在基本组的标识,是一个数值,用它来区分不同的组,相同的组具有相同的GID。

个人资料

可以记录用户的完整姓名、地址、办公室电话、家庭电话等个人信息。

主目录

类似Windows 的个人目录,通常是/home/username这里username是用户名,用户 执行“cd~”命令时当前目录会切换到个人主目录。

Shell

定义用户登录后激活的Shell默认是Bash Shell

  • 用户登录Linux系统时使用的名称。

密码

  • 以前是以加密格式保存密码的位置,现在密码保存在/etc/shadow文件中
  • 此处只是密码占 位符“x”或“*”。若为“x”,说明密码经过了shadow的保护。

UID

  • 用户的标识,是一个数值,用它来区分不同的用户
  • 每个用户都有一个UID数值:
  • 超级用户的UID——0
  • 系统用户的UID——1~999
  • 普通用户的UID——≥1000

GID

  • 用户所在基本组的标识,是一个数值,用它来区分不同的组,相同的组具有相同的GID。

个人资料

  • 可以记录用户的完整姓名、地址、办公室电话、家庭电话等个人信息。

主目录

  • 类似Windows 的个人目录,通常是/home/username
  • 这里username是用户名,用户 执行“cd~”命令时当前目录会切换到个人主目录。

Shell

  • 定义用户登录后激活的Shell
  • 默认是Bash Shell
(2)用户密码文件——/etc/shadow
代码语言:javascript
代码运行次数:0
运行
复制
[root@node13 ~]# ll /etc/shadow
---------- 1 root root 3872 May  6 17:44 /etc/shadow


[root@node13 ~]# head -1 /etc/shadow
root:$6$3EZ8vA1hgB3VTWb0$IlamoUyDh1RS.wftgz4qj0kmVrka7Yi6SgIo1aM6eu8nbFM9haOVRTt
NDDfkix8MCugx8p8lufmItgsOsu1rl1:19083:0:99999:7:::


#每行定义了一个用户信息,行中各字段用“:”隔开,其格式如下:
 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标
志

字段

含义

登录 名

登录名

加密 口令

使用SHA-512/SHA-256/MD5算法加密后的密码($id$,id为1表示md5,5表示 sha256,6为sha512)若为空,表示该用户无需密码即可登录若为“*”表示该账号不 能用于登录系统,若为“!!”表示该账号密码已被锁定

最后 一次 修改 时间

最近一次更改密码的日期,以距离1970年1月1日的天数表示

最小 时间 间隔

密码在多少天内不能被修改。默认值为0,表示不限制

最大 时间 间隔

密码在多少天后必须被修改。默认值为99999,表示不进行限制

警告 时间

提前多少天警告用户密码将过期,默认值为7天,0表示不提供警告

不活 动时 间

密码过期多少天后禁用此用户

失效 时间

密码失效日期,以距离1970年1月1日的天数表示,默认为空,表示永久可用

标志

保留未用,以便以后发展之用

  • 登录名

加密 口令 使用SHA-512/SHA-256/MD5算法加密后的密码(id,id为1表示md5,5表示 sha256,6为sha512)若为空,表示该用户无需密码即可登录若为“*”表示该账号不 能用于登录系统,若为“!!”表示该账号密码已被锁定 最后 一次 修改 时间

  • 最近一次更改密码的日期,以距离1970年1月1日的天数表示

最小 时间 间隔

  • 密码在多少天内不能被修改。默认值为0,表示不限制

最大 时间 间隔

  • 密码在多少天后必须被修改。默认值为99999,表示不进行限制

警告 时间

  • 提前多少天警告用户密码将过期,默认值为7天,0表示不提供警告

不活 动时 间

  • 密码过期多少天后禁用此用户

失效 时间

  • 密码失效日期,以距离1970年1月1日的天数表示,默认为空,表示永久可用

标志

  • 保留未用,以便以后发展之用
(3)用户组账号文件——/etc/group 系统中的每个组
  • 在/etc/group文件中有一行记录,任何用户均可以读取用户组账户信息配置文件。
举例:
代码语言:javascript
代码运行次数:0
运行
复制
[root@node13 ~]# ll /etc/group
-rw-r--r-- 1 root root 1150 May  6 17:44 /etc/group

[root@node13 ~]# head -1 /etc/group
root:x:0:

字段

说明

Groupname

组的名字

Passwd

组的加密口令

GID

是系统区分不同组的ID,在/etc/passwd域中的GID字段是用这个数来指定用户的基本组

GID

是用“,”分开的用户名,列出的成员以该组为附加组

2 用户管理

2.1 添加新用户

语法格式:
代码语言:javascript
代码运行次数:0
运行
复制
useradd [选项] <username>
常用选项详解说明:
代码语言:javascript
代码运行次数:0
运行
复制
-c 注释信息——设定与用户相关的说明信息(如,真实姓名、邮箱地址等)。

 -d 目录——设定用户的家目录(默认为/home/用户名)。

 -e YYYY-MM-DD——设置用户的失效日期,此日期后将不能使用该账号。

 -f 天数——指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定 

为-1,则表示账号过期后不被禁用(即密码永不过期)。

 -g 组名或GID号——为用户指定所属的基本组,该组在指定时必须已存在。

 -G 组名或GID号列表——为用户指定所属的附加组,各组在指定时已存在,附加组可以有多个,组之间

用“,”分隔。

 -M——不创建用户家目录。

 -N——不创建与用户名同名的基本组。

 -p 密码——指定用户的登录密码。

 -s shell名——指定用户登录后使用的Shell,默认是bash。

 -u 用户号——设置账号的UID,默认是已有用户的最大UID加1。如果同时有-o选项,则可以重复使用其他
用户的标识号。
举例:
代码语言:javascript
代码运行次数:0
运行
复制
#新建一个用户zhang3,查看passwd、shadow文件中的变化,并确认该用户的家目录中的初始配置
文件。


[root@localhost ~]# useradd zhang3

[root@localhost ~]# tail -1 /etc/passwd

zhang3:x:1001:1001::/home/zhang3:/bin/bash

[root@localhost ~]# tail -1 /etc/shadow

zhang3:!!:16925:0:99999:7:::       //注意密码字段的内容为“!!”,表示密码尚未设置

[root@localhost ~]# ls -ld /home/zhang3

drwx------. 3 zhang3 zhang3 74 11月   4 15:58 /home/zhang3

[root@localhost ~]# ls -A /home/zhang3

.bash_logout .bash_profile .bashrc .mozilla
更多举例:
代码语言:javascript
代码运行次数:0
运行
复制
#新建一个用户wang5,指定其UID为1005、登录Shell为/bin/bash,账号永不过期。

useradd -u 1005 -s /bin/bash -e -1 wang5


#新建一个辅助管理员用户admin,将其用户家目录指定为/admin,基本组指定为wheel,附加组
同时属于adm组和root组

useradd -d /admin -g wheel -G adm,root admin st3


#新建一个用于访问FTP的zhao6用户,禁止其登录且不创建家目录。

useradd -M -s /sbin/nologin zhao6

2.2 修改用户信息——usermod命令

语法格式:
代码语言:javascript
代码运行次数:0
运行
复制
usermod [选项] username
常用选项详解
代码语言:javascript
代码运行次数:0
运行
复制
常用的选项包括 -c,-d,-m,-g,-G,-s,-u 等,这些选项的意义与useradd命令中的选项一样,可以为用
户指定新的资源值。另外,还可以使用如下选项:

 -l 新用户名——更改账户的名称,必须在该用户未登录的情况下才能使用。

 -L——锁定(暂停)用户账户,使其不能登录使用。

 -U——解锁用户账户。
举例:
代码语言:javascript
代码运行次数:0
运行
复制
#将用户admin的家目录移至/home目录下。

sudo mv /home/admin /home/


#将用户wang5的名称修改为wangwu,并暂停使用该账号。

sudo usermod -l wangwu wang5

sudo passwd -l wangwu

2.3 为用户账号设置密码——passwd命令

Linux的账户必须设置密码后,才能登录系统

语法格式:
代码语言:javascript
代码运行次数:0
运行
复制
passwd [账户名]
常用选项详解说明:
代码语言:javascript
代码运行次数:0
运行
复制
-d——清空指定用户的口令。这与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的
账户可以。
 
-e——使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
 
-i——口令过期后多少天停用账户。
 
-l——锁定(停用)用户账户。
 
-n——指定口令的最短存活期。

-x——指定密码的最长使用期限。
 
-u——解锁用户账户。
补充:使用该方式也可修改用户密码
代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost ~]#echo 密码 | passwd --stdin 用户名
举例:
代码语言:javascript
代码运行次数:0
运行
复制
passwd

passwd zhang3

2.4 删除用户账号——userdel命令

语法格式:
代码语言:javascript
代码运行次数:0
运行
复制
userdel [-r] 账户名

-r——在删除该账户的同时,一并删除该账户对应的主目录。

2.5 用户间切换——su(substitute user)命令

语法格式:
代码语言:javascript
代码运行次数:0
运行
复制
su [用户名]

从root用户切换到任何用户不需要密码验证,而从普通用户到root或其他普通用户均需要输入目标
用户的密码且验证成功后才可切换。
su和su - 命令区别就是加载的配置文件不一样:

su 切换方式加载的文件: ~/.bashrc,/etc/bashrc

su - 切换方式加载的文件: /etc/bashrc,/etc/profile,~/.bashrc,~/.bash_profile

2.6 控制用户对系统命令的使用权限

简介:

使用 sudo 命令可以提高普通用户的操作权限,不过这个权限需要root用户进行配置/etc/sudoers文件才可使用。

sudo的执行流程如下(默认只有root用户能使用):

当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码);

若欲切换的身份与执行者身份相同,那也不需要输入密码。

若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限;

若用户具有执行sudo的权限,便开始sudo后续接的命令;

常用选项详解说明:
代码语言:javascript
代码运行次数:0
运行
复制
sudo -l :列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
常用选项:

 
-d——清空指定用户的口令。这与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的
账户可以。
 
-e——使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
 
-i——口令过期后多少天停用账户。
 
-l——锁定(停用)用户账户。
 
-n——指定口令的最短存活期。
 
-x——指定密码的最长使用期限。
 
-u——解锁用户账户。
配置/etc/sudoers文件的2种方式:
代码语言:javascript
代码运行次数:0
运行
复制
[root@localhost ~]# vim /etc/sudoers或者[root@localhost ~]# visudo
root  ALL=(ALL)   ALL


参数代表含义:

1、用户账号:系统哪个账号可以使用sudo这个命令。

2、登录者的来源主机名

3、可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。

4、可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。

说明:ALL是关键字,代表任何身份、主机或命令。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用户和组管理
    • (1)用户账号文件——/etc/passwd passwd 是一个文本文件
    • (2)用户密码文件——/etc/shadow
    • (3)用户组账号文件——/etc/group 系统中的每个组
  • 2 用户管理
    • 2.1 添加新用户
      • 语法格式:
      • 常用选项详解说明:
      • 更多举例:
    • 2.2 修改用户信息——usermod命令
      • 语法格式:
      • 常用选项详解
      • 举例:
    • 2.3 为用户账号设置密码——passwd命令
      • 语法格式:
      • 常用选项详解说明:
      • 举例:
    • 2.4 删除用户账号——userdel命令
      • 语法格式:
    • 2.5 用户间切换——su(substitute user)命令
      • 语法格式:
      • su和su - 命令区别就是加载的配置文件不一样:
    • 2.6 控制用户对系统命令的使用权限
      • 简介:
      • sudo的执行流程如下(默认只有root用户能使用):
      • 常用选项详解说明:
      • 配置/etc/sudoers文件的2种方式:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档