Linux之用户账号、用户组和与账号有关的系统文件

目录

一、基本介绍

1.用户和用户组

2.UID和GID

二、 账户管理

1.查看用户的UID和GID

2.添加账户

3.删除账号

4.修改账号

5.账户口令

三、分组管理

1.新增用户组

2.删除用户组

3.修改用户组

4.用户组切换

四、与账号有关的系统文件

1./etc/passwd

2./etc/shadow

3./etc/group


一、基本介绍

1.用户和用户组

在Linux系统中,用户和用户组是为了有效管理系统资源而设计的重要概念

  1. 用户(User):

    • 每个使用 Linux 系统的个体都必须有一个关联的用户账户。这个账户有一个用户名(User Name)和一个唯一的用户ID(User ID,UID)。
    • 用户账户的信息通常存储在/etc/passwd文件中。
    • 每个用户账户都有自己独立的家目录(Home Directory),用于存储用户个人的文件和设置。
  2. 用户组(User Group):

    • 用户组是将多个用户集合在一起以共享文件访问权限的一种方式。
    • 用户组有一个名称和一个唯一的组ID(Group ID,GID)。
    • 用户组的基本信息通常存储在/etc/group文件中。

基本的一些 Linux 用户和用户组管理相关的命令包括:

  • useradd:用于创建新用户账户。
  • usermod:用于修改现有用户账户的属性。
  • userdel:用于删除用户账户。
  • groupadd:用于创建新用户组。
  • groupmod:用于修改现有用户组的属性。
  • groupdel:用于删除用户组。

通过管理用户和用户组,系统管理员可以更好地控制文件和目录的访问权限,确保系统的安全性和可管理性

2.UID和GID

在Linux系统中,UID(User Identifier)是用于唯一标识用户的数字。每个用户都有一个唯一的UID,系统通过UID来识别和管理用户。

GID(Group Identifier)是用于唯一标识用户组的数字。用户可以属于多个用户组,每个用户组都有一个唯一的GID,系统通过GID来识别和管理用户组。

UID和GID在Linux系统中是非常重要的概念,它们用于控制文件和目录的访问权限。每个文件和目录都有一个所有者(owner)和一个所属组,系统通过UID和GID来确定文件和目录的所有者和所属组,并根据这些信息来确定访问权限。

用户账号可以分为以下几种分类:

  1. 超级用户(Superuser):超级用户也被称为root用户,拥有系统的最高权限。root用户可以执行系统的管理任务,如安装软件、修改系统配置等。为了安全起见,应该避免在root用户下进行常规操作。

  2. 系统用户(System Users):系统用户是用于运行和管理系统服务的特殊账号。这些账号通常不具备登录系统的权限,并且其UID和GID通常在低范围内。系统用户的主要目的是为了提供服务和执行系统任务,例如apache用户用于运行Web服务器。

  3. 普通用户(Regular Users):普通用户是指普通的用户,每个用户都有一个唯一的UID和GID。普通用户可以登录系统,并根据其权限执行各种任务。普通用户通常用于个人使用或共享系统用户(Special Users):特殊用户是一类具有特殊权限和功能的用户账号。例如,bin用户用于存放系统核心文件,nobody用户用于运行无需特定所有者的进程,daemon用户用于运行系统服务等。

需要注意的是,在Linux系统中,用户账号是由其唯一的UID来标识的,而不是用户名。用户名只是与UID相关联的一个友好的标识符。同样,组账号也是由其唯一的GID来标识的。

二、 账户管理

在Linux系统中,账号管理是指创建、配置和管理用户账号和组账号的过程。账号管理是系统管理员的重要任务之一

需要注意的是,账号管理具有管理员权限(如root用户)才能执行。同时,为了系统的安全性,应该遵循最佳实践,如使用强密码、限制特权用户的访问等。

用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令

1.查看用户的UID和GID

        查看当前用户的UID和GID:

id

        查看指定用户的UID和GID: 将"username"替换为要查看的具体用户名

id username

        查看所有用户的UID和GID: 这将显示系统中所有用户的UID和其他相关信息。

cat /etc/passwd

        查看指定用户的UID:这将只显示指定用户名"username"的UID。

id -u username

UID和GID是在用户创建时分配的唯一标识符,用于在系统中唯一标识用户和用户组;

2.添加账户

管理员可以使用useradd命令创建新的用户账号。在创建账号时,可以指定用户名、UID、所属组、家目录、登录Shell等信息。例如,以下命令可以创建一个名为"john"的用户账号:

useradd john

参数说明:

参数选项说明
-c指定一段注释性描述
-d指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g指定用户所属的用户组
-G指定用户所属的附加组
-s指定用户的登录Shell
-u指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

案例演示:

# 示例一:
# 此命令创建了一个用户john,其中-d和-m选项用来为登录名john产生一个主目录
# /home/john(/home为默认的用户主目录所在的父目录)
useradd -d /home/john -m john# 示例二:
# 创建用户组group
groupadd group
# 新建用户johns,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于john和root用户组
useradd -s /bin/sh -g group -G john,root johns

注意: 1)示例二中的group用户组是主组,adm和root是附加组;

            2)增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group

3.删除账号

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。例如,以下命令可以删除名为"john"的用户账号:

userdel john

常用的选项是 -r,它的作用是把用户的主目录一起删除

案例演示:

userdel -r john

此命令删除用户john在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录

4.修改账号

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。 例如,以下命令可以修改名为"john"的用户账号的登录Shell为/bin/bash:

usermod -s /bin/bash john   

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

案例演示:

# 此命令将用户john的登录Shell修改为johns,主目录改为/home/a,用户组改为developer
usermod -s /bin/johns -d /home/a -g developer john

5.账户口令

用户口令的管理。语法格式:

passwd [选项] 用户名

选项参数:

参数选项说明
-l锁定口令,即禁用账号
-u口令解锁
-d使账号无口令
-f强迫用户下次登录时修改口令

如果默认用户名,则修改当前用户的口令

案例演示:

# 未指定用户名的情况下,将修改当前登录用的密码
passwd
# 指定用户名并修改登录密码
passwd john
# 用户指定空口令
# 此命令将用户john的口令删除,这样用户john下一次登录时,系统就不再允许该用户登录了
passwd -d john
# 用 -l(lock) 选项锁定某一用户,使其不能登录,解锁用-u
passwd -l john

三、分组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

1.新增用户组

新增用户组,语法格式:

groupadd [选项] 用户组 

选项有: -g:GID指定新用户组的组标识号(GID) -o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

案例演示:

# 增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1
groupadd group1
# 增加了一个新组group2,同时指定新组的组标识号是101
groupadd -g 101 group2

2.删除用户组

如果要删除一个已有的用户组,使用groupdel命令:

groupdel 用户组

3.修改用户组

修改用户组的属性,语法格式:

groupmod 选项 用户组

常用的选项有: -g:GID 为用户组指定新的组标识号。 -o:与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。 -n:新用户组 将用户组的名字改为新名字

案例演示:

# 将组group2的组标识号修改为102
groupmod -g 102 group2
# 将组group2的标识号改为10000,组名修改为group3
groupmod -g 10000 -n group3 group2

4.用户组切换

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换。 用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。

newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

四、与账号有关的系统文件

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

1./etc/passwd

/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

cat /etc/passwd

每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

  • 用户名

"用户名"是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

  • 口令

“口令”一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

  • 用户标识号

“用户标识号”是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

  • 组标识号

“组标识号”字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

  • 注释性描述

“注释性描述”字段记录着用户的一些个人情况。例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

  • 主目录

“主目录”,也就是用户的起始工作目录。它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

  • 登录Shell

用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即ShellShell是用户与Linux系统之间的接口。LinuxShell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。

系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。

利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

2./etc/shadow

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

cat /etc/shadow

格式说明:

  • "登录名"是与/etc/passwd文件中的登录名相一致的用户账号

  • "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。

  • "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。

  • "最小时间间隔"指的是两次修改口令之间所需的最小天数。

  • "最大时间间隔"指的是口令保持有效的最大天数。

  • "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

  • "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。

  • "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账

3./etc/group

用户组的所有信息都存放在/etc/group文件中,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

cat /etc/group

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:组名:口令:组标识号:组内用户列表

格式说明:

  • "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。

  • "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。

  • "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。

  • "组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/294391.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第五篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas在教育数据和研究数据处理领域的应用

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas 在教育和学术研究中的常见应用介绍二、数据清洗和预处理示例代码三、数据分析和统计示例代码四、数据可视化示例代码五、时间序列分析示例代码六、数据导入和导出示例代码七、数…

【SQL Server】2. 将数据导入导出到Excel表格当中

最开始,博主介绍一下自己的环境:SQL Sever 2008 R2 SQL Sever 大致都差不多 1. 通过自带软件的方式 首先找到下载SQL Sever中提供的导入导出工具 如果开始界面没有找到自己下载的路径 C:\Program Files\Microsoft SQL Server\100\DTS\Binn下的DTSWiz…

Dapr(一) 基于云原生了解Dapr

(这期先了解Dapr,之后在推出如何搭建Dapr,以及如何使用。) 目录 引言: Service Mesh定义 Service Mesh解决的痛点 Istio介绍 Service Mesh遇到的挑战 分布式应用的需求 Multiple Runtime 理念推导 Dapr 介绍 Dapr 特性 Dapr 核心…

【技巧】如何解除Excel“打开密码”?

给Excel表格设置“打开密码”,可以保护表格不被他人随意打开,那如果后续不需要保护了,不想每次打开Excel都需要输密码,要怎么去除“打开密码”呢? 今天分享3个方法,最后一个方法记得收藏起来,以…

QT-飞机水平仪图标

QT-飞机水平仪图标 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include <stdio.h> #include <stdlib.h> #include <string.h>#include <QtCore> #include <QtGui> #include <QDebug> #include <QTableWidget&g…

算法系列--递归,回溯,剪枝的综合应用(1)

&#x1f495;"对相爱的人来说&#xff0c;对方的心意&#xff0c;才是最好的房子。"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–递归,回溯,剪枝的综合应用(1) 大家好,今天为大家带来的是算法系列--递归,回溯,剪枝的综合应用(1) 1.全排…

量化交易入门(三十八)CCI指标Python实现和回测

今天我们先单纯用CCI指标来完成策略的编写&#xff0c;后续我们会改进这个策略&#xff0c;将CCI指标和前面讲到的MACD和RSI相结合来优化&#xff0c;看看我们优化后的效果会不会更好。 一、量化策略 CCI指标在量化交易中的策略&#xff1a; 在以下情况下生成买入信号&#…

《第3选择》解决所有难题的关键思维 - 三余书屋 3ysw.net

第3选择&#xff1a;解决所有难题的关键思维 《第3选择》解决所有难题的关键思维&#xff0c;面对两难困境&#xff0c;从冲突中找到互相协同的出路 你好&#xff0c;今天我们要聊的这本书是《第3选择》&#xff0c;它出自美国著名作家史蒂芬科维之手。科维是国际上非常知名的…

RPA-财务对账邮件应用自动化(客户对账机器人)

《财务对账邮件应用自动化》&#xff0c;将会使用邮箱的SMTP服务&#xff0c;小北把资源包绑定在这篇博客了 Uibot (RPA设计软件)———机器人的小项目友友们可以参考小北的课前材料五博客~ (本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; …

MySQL常见故障案例与优化介绍

前言 MySQL故障排查的意义在于及时识别并解决数据库系统中的问题&#xff0c;确保数据的完整性和可靠性&#xff1b;而性能优化则旨在提高数据库系统的效率和响应速度&#xff0c;从而提升用户体验和系统整体性能。这两方面的工作都对于保证数据库系统稳定运行、提升业务效率和…

1.5编写一个程序,输入梯形的上底,下底和高,输出梯形的面积。

1、编写一个程序,输入梯形的上底,下底和高,输出梯形的面积。 package com.kangning.web.controller.system;import java.util.Scanner;/*** 编写一个程序,输入梯形的上底,下底和高,输出梯形的面积。*/ public class CountArea {public static void main(String[] args) …

【智能家居项目】RT-Thread版本——DHT11获取温湿度 | MQTT上传到服务器 | 服务器控制外设

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《智能家居项目》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 这篇文章中&#xff0c;本喵将使用RT-Thread Studio来实现这个智能家居的项目&#xff0c;最终…

使用Git处理Github中提交有冲突的pull request

前言&#xff1a; 为什么要写这篇文章&#xff0c;因为前段时间有一个开源的github中的项目有一个朋友提交了一个pr看了下是帮忙优化了下代码&#xff08;十分感谢这位网友&#xff09;。但是他提交的pr刚好和我的项目有许多的冲突导致无法自动合并&#xff0c;在github中提示…

C++入门(2)

目录 3. C输入&输出 4. 缺省(默认)参数 4.1 缺省参数概念 4.2 缺省参数分类 全缺省参数 半缺省参数 5. 函数重载 5.1 函数重载概念 6. 引用 6.1 引用概念 6.2 引用特性 6.3 常引用 6.4 使用场景 6.5 传值、传引用效率比较 6.5.1 值和引用的作为返回值类型的性能比较 6.6 引…

一文入门Ubuntu22

目录 1.安装Ubuntu22 2.常用目录 3.常用指令 1.sudo 超级用户权限运行命令 2.ls 罗列当前文件信息 3.文件目录相关&#xff1a; 1.cd改变工作路径&#xff1a; 2.pwd 3.创建目录和文件&#xff1a; 4.which 5.ps 6.kill 7.ping 4.用户相关 5.ssh与scp 6.服务相关…

鸿蒙(HarmonyOS)ArkTs语言基础教程开发准备

本文档适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用&#xff08;如下图所示&#xff09;&#xff0c;快速了解工程目录的主要文件&#xff0c;熟悉HarmonyOS应用开发流程。 在开始之前&#xff0c;您需要了解有关HarmonyOS应用的一些基本概…

缺陷检测项目 | 使用小数据集训练实现锅炉水冷壁管表面视觉缺陷检测

项目应用场景 面向锅炉水冷璧管表面视觉缺陷检测场景&#xff0c;项目支持训练&#xff0c;使用小数据集就能够实现很好的缺陷检测效果。 项目效果&#xff1a; 项目细节 > 具体参见项目 README.md (1) 安装依赖&#xff0c;包括 gcForest、AutoKeras&#xff0c;然后安装其…

快速上手Pytrch爬虫之爬取某应图片壁纸

一、前置知识 1 爬虫简介 网络爬虫&#xff08;又被称作网络蜘蛛、网络机器人&#xff0c;在某些社区中也经常被称为网页追逐者)可以按照指定的规则&#xff08;网络爬虫的算法&#xff09;自动浏览或抓取网络中的信息。 1.1 Web网页存在方式 表层网页指的是不需要提交表单&…

JavaEE初阶之线程安全(一)

目录 题外话 正题 1.线程调度是随机的 2.修改共享数据 知识点 线程同步机制 线程异步机制 举例说明 synchronized() 知识点 举例说明 举例代码详解 死锁 举个例子: 代码 小结 题外话 这两天忽冷忽热的感冒了,昨天状态特别不好断更了一天,今天继续加油! 我会把…

远控桌面多任务并发文件保密传输

远程桌面文件传输是一个重要的功能&#xff0c;大多数远控都是用的桌面程序模式&#xff0c;利用系统自带复制粘贴拖拽文件拷贝功能&#xff0c;做一个ole调用对接&#xff0c;可以将很多控制权交给操作系统。 但我做的是浏览器版&#xff0c;浏览器是沙盒原理&#xff0c;为了…