Linux-Task03:Linux用户和组管理

本学习笔记为Datewhale-6月组队学习-Linux教程的学习内容,学习链接为:https://github.com/datawhalechina/team-learning-program/tree/master/Linux



前言

在前一篇博文【Linux-Task02:Linux系统安装】里,我们一起学习了如何用 Oracle VM VirtualBox虚拟机 安装 Linux系统,而在这篇博文中我们将会一起学习Linux用户和组管理


一、学习知识点概要

Task03:Linux用户和组管理

知识点:Linux系统的用户和用户组、用户与组的配置文件和用户与组的管理命令

二、学习内容

(一)用户和用户组

Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。

1. 什么是用户

用户需要使用系统资源则需向系统管理员申请账户进入系统,不同用户具有不问的权限,毎个用户在权限允许的范围内完成不间的任务,每个用户都有唯一的用户名和密码。用户分超级用户普通用户,超级用户即系统管理员root。
Linux 正是通过这种权限的划分与管理,实现了多用户多任务的运行机制,提供对用户文件的安全性保护。

2. 什么是用户组

为了简化对用户的管理, Linux 系统通过分组对用户进行管理及控制访问权限。同一用户组内的用户拥有相同的权限。
用户组也分两种,一种是主用户组(primary group),一种是次用户组(secondary group)

3. 用户和用户组关系

每个用户在创建时都会自动属于一个用户组,用户与用户组之间的关系可以分一对一、一对多、多对一和多对多四种。

4.Linux UID和GID(用户ID和组ID)

Linux 系统不是通过用户名称,而是通过用户 ID 号(UID)识别用户。Linux 系统将所有用户的名称与 ID 的对应关系都存储在 /etc/passwd 文件中。每个用户的 ID 分为用户 ID和组 ID两种。

在 /etc/passwd 文件中,利用 UID 可以找到对应的用户名;在 /etc/group 文件中,利用 GID 可以找到对应的群组名。

(二)用户与组的配置文件

在Linux中,万物皆文件,所以用户与组也以配置文件的形式保存在系统中,以下为用户和组的主要配置文件详解:

  • /etc/passwd:用户及其属性信息(名称、 UID、主组ID等)
  • /etc/shadow:用户密码及其相关属性
  • /etc/group:组及其属性信息
  • /etc/gshadow:组密码及其相关属性

1. Linux /etc/passwd

Linux 系统中的 /etc/passwd 文件,是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。

passwd文件格式,如下:
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

注:
密码
“x” 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中(此文件只有 root 用户),需要注意的是,虽然 “x” 并不表示真正的密码,但也不能删除,如果删除了 “x”,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆

UID(用户 ID)

UID 范围用户身份
0超级用户。UID 为 0 就代表这个账号是管理员账号。
1~499系统用户(伪用户)。也就是说,此范围的 UID 保留给系统使用。其中,1~99 用于系统自行创建的账号;100~499 分配给有系统账号需求的用户。
500~65535普通用户。通常这些 UID 已经足够用户使用了。

主目录
用户登录后有操作权限的访问目录,通常称为用户的主目录。

默认Shell
Shell 就是 Linux 的命令解释器,功能就是将用户输入的命令转换成系统可以识别的机器语言,是用户和 Linux 内核之间沟通的桥梁。
通常情况下,Linux 系统默认使用的命令解释器是 bash(/bin/bash),当然还有其他命令解释器,例如 sh、csh 等。

2. Linux /etc/shadow(影子文件)

/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。

shadow文件格式,如下:
用户名:加密密码:最后一次修改时间(从1970年1月1日起计算到现在为止):最小修改时间间隔(0表示随时可改):密码几天后必须变更(99999表示永不过期):密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间(从1970-1-1算起):保留字段

3. Linux /etc/group文件解析

/ect/group 文件是用户组配置文件,即用户组的所有信息都存放在此文件中
各用户组中。

shadow文件格式,如下:
组名:密码:GID:该用户组中的用户列表

注:
组密码
和 /etc/passwd 文件一样,这里的 “x” 仅仅是密码标识,真正加密后的组密码(组管理员可代root用户管理用户)默认保存在 /etc/gshadow 文件中。

组ID (GID)
就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。

组中的用户
此字段列出每个群组包含的所有用户。需要注意的是,如果该用户组是这个用户的初始组,则该用户不会写入这个字段,可以这么理解,该字段显示的用户都是这个用户组的附加用户。

4.Linux /etc/gshadow文件内容解析

组用户信息存储在 /etc/group 文件中,而将组用户的密码信息存储在 /etc/gshadow 文件中。

gshadow文件格式,如下:
组名:加密密码:组管理员:组附加用户列表

组密码
对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 “!”,指的是该群组没有组密码,也不设有群组管理员。

组管理员
从系统管理员的角度来说,该文件最大的功能就是创建群组管理员。那么,
由于目前有 sudo 之类的工具,因此群组管理员的这个功能已经很少使用了。

组中的附加用户
该字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同。

5.Linux初始组和附加组

一般情况下,用户的初始组就是在建立用户的同时建立的和用户名相同的组。
每个用户都可以加入多个附加组,但是只能属于一个初始组。所以我们在实际工作中,如果需要把用户加入其他组,则需要以附加组的形式添加。

(三)、用户和用户组管理命令

Linux用户和组管理命令主要有如下几类:

1. 用户的增删修改

添加用户

useradd 选项 用户名
选项作用
-u手工指定用户的 UID,注意 UID 的范围(不要小于 500)。
-d手工指定用户的主目录。主目录必须写绝对路径,而且如果需要手工指定主目录,则一定要注意权限;
-c手工指定/etc/passwd文件中各用户信息中第 5 个字段的描述性内容,可随意配置;
-g手工指定用户的初始组。一般以和用户名相同的组作为用户的初始组,在创建用户时会默认建立初始组。一旦手动指定,则系统将不会在创建此默认的初始组目录。
-G指定用户的附加组。我们把用户加入其他组,一般都使用附加组;
-s手工指定用户的登录 Shell,默认是 /bin/bash;
-e指定用户的失效日期
-o允许创建的用户的 UID 相同。例如,执行 “useradd -u 0 -o usertest” 命令建立用户 usertest,它的 UID 和 root 用户的 UID 相同,都是 0;
-m创建用户时强制建立用户的家目录。在建立系统用户时,该选项是默认的;
-r创建系统用户

删除用户

userdel 选项 用户名

-r 选项表示在删除用户的同时删除用户的家目录。

修改用户

usermod 选项 用户名
选项说明
-c 用户说明修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段;
-d 主目录修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
-e 日期修改用户的失效曰期,格式为 “YYYY-MM-DD”,即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
-g 组名修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID);
-u UID修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
-G 组名修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
-l 用户名修改用户名称;
-L临时锁定用户(Lock);
-U解锁用户(Unlock),和 -L 对应;
-s shell修改用户的登录 Shell,默认是 /bin/bash。

修改用户密码

passwd 选项 用户名
选项作用
-l暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 “!”,使密码失效。仅 root 用户可用;
-u解锁用户,和 -l 选项相对应,也是只能 root 用户使用;
-d使账号无口令,删除密码
-f强迫用户下次登录时修改口令
-S查询用户密码的状态,显示密码信息,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
-g修改群组密码
-n 天数设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
-x 天数设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
-w 天数设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
-i 日期设置用户密码失效日期,口令过期后多少天停用账户,对应 /etc/shadow 文件中各行密码的第 7 个字段

2. 用户组管理

添加用户组

groupadd 选项 用户组
选项描述
-g GID指定组 ID;
-r创建系统群组。

删除用户组

groupdel 组名

需要从系统上删除群组时,可用groupdel(group delete)指令来完成这项工作。

注意,不能使用 groupdel 命令随意删除群组。此命令仅适用于删除那些 “不是任何用户初始组” 的群组,换句话说,如果有群组还是某用户的初始群组,则无法使用 groupdel 命令成功删除。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

修改用户组属性

groupmod 选项 用户组
选项描述
-g GID修改组 ID
-n 新组名修改组名
-o重复使用群组识别码

切换用户组

newgrp 目标用户组

newgrp 指令类似 login 指令,当它是以相同的帐号,另一个群组名称,再次登入系统。 newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组。 欲使用 newgrp 指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则 newgrp 指令会登入该用户名称的预设群组。

三、学习问题与解答

问题一:UID和GID的区别?
解答:每个用户的 ID 分为用户 ID和组 ID两种。在 /etc/passwd 文件中,利用 UID 可以找到对应的用户名;在 /etc/group 文件中,利用 GID 可以找到对应的群组名。

四、学习思考与总结

本次学习,动手学会了如何在Linux系统下管理用户和用户组。Linux 是多用户多任务操作系统,支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。毎个用户在权限允许的范围内完成不间的任务,每个用户都有唯一的用户名和密码。

为了简化对用户的管理, Linux 系统通过分组对用户进行管理及控制访问权限。Linux 正是通过这种权限的划分与管理,实现了多用户多任务的运行机制,提供对用户文件的安全性保护。

希望大家可以互相交流、共同学习,如果发现博文中有错的或不解的,欢迎留言或私聊交流~
————————————————

五、参考文章

[1]https://github.com/datawhalechina/team-learning-program/tree/master/Linux
[2]https://www.cnblogs.com/ddz-linux/
[3]http://c.biancheng.net/view/844.html
[4]https://www.runoob.com/linux/linux-user-manage.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
当你输入 arm-buildroot-linux-gnueabihf- 时出现 "未找到命令" 的错误,这通常是因为缺少相应的编译器。根据引用和引用的内容,可能有以下两种解决方法: 1. 在终端中输入 make 命令时出现错误 "make: arm-linux-gnueabihf-gcc: Command not found",这说明缺少 arm-linux-gnueabihf-gcc 编译器。你可以使用引用中提到的方法,在编译系统时使用 arm-linux-gnueabihf-gcc-7 命令替代 arm-linux-gnueabihf-gcc 命令。这样做可以避免 sudo 编译时出现找不到 arm-linux-gnueabihf-gcc 的问题。 2. 如果在输入 arm-linux-gnueabihf-gcc -v 命令时出现错误 "bash: /home/l000/tools/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-gcc: No such file or directory",说明 arm-linux-gnueabihf-gcc 编译器的路径不正确。你可以检查一下编译器的路径是否正确,并确保该路径下存在 arm-linux-gnueabihf-gcc 编译器的可执行文件。 综上所述,你可以尝试使用 arm-linux-gnueabihf-gcc-7 替代 arm-linux-gnueabihf-gcc,并确保编译器的路径正确。这样应该能够解决 "arm-buildroot-linux-gnueabihf-:未找到命令" 的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [make:arm-linux-gnueabihf-gcc: Command not found](https://blog.csdn.net/whocarea/article/details/103365339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [sudo arm-linux-gnueabihf-gcc:Command not found 原因及解决办法](https://blog.csdn.net/qq_43257914/article/details/127073002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值