当前位置: 首页 > news >正文

【Linux】用户与用户组,用户账号系统文件

目录

一 用户与用户组

1.1 含义

1.2 用户相关语法

1.2.1 useradd(添加用户账号)

1.2.2 userdel(删除用户账号)

1.2.3 usermod(修改用户账号)

1.2.4 passwd(用户口令的管理)

1.2.5 su(切换用户)

1.2.6 退出登入方式

1.3 用户组相关语法

1.3.1 groupadd(增加用户组)

1.3.2 groupdel (删除用户组)

1.3.3 groupmod (修改用户组)

1.3.4 newgrp (切换用户组)

二 用户账户系统文件

2.1 /etc/passwd

2.2 /etc/shadow

2.3 /etc/group


一 用户与用户组

1.1 含义

  1. 用户 (User):

    • 用户是系统的使用者。每个用户都有一个唯一的用户名和密码。
    • 当用户在Linux系统上执行命令或访问文件时,系统会检查该用户是否有相应的权限。
    • 用户的主要目的是确保只有授权的用户可以访问系统的特定部分。
    • 可以通过id命令查看当前用户的ID和其他相关信息

UID为用户ID

  1. 用户组 (User Group):

    • 用户组是一组用户的集合。它是为了方便管理和分配权限而创建的。
    • 一个用户可以是一个或多个用户组的成员。
    • 当为一个文件或目录设置权限时,可以指定哪些用户组可以访问它。
    • 例如,sudo命令通常只允许root组的成员执行。
    • 可以通过groups命令查看当前用户所属的所有用户组

GID为用户组ID

用户账户分类:

1 超级用户root (0):

root ,其 UID GID 0
在每台 unix/linux 操作系 中都是唯一且真 存在的,通 它可以登 ,可以操作系 中任何文件和命令, 有最高的管理 限。
在生 产环 境,一般禁止 root 程登 SSH 接服 器,以加 安全

2.程序用户(1~499): 
与真 区分开来, 这类 的最大特点是安装系 后默 就会存在的,且默 情况不能登
是系 正常运行必不可少的,他 的存在主要是方便系 管理, 足相 的系 统进 程都文件属主的要求。
例如系 bin adm nodoby mail 等。由于服 器角色的不同,有部分用不到的系 被禁止开机 行,
因此,在做系 安全 ,被禁止开机启 了的服 务对应 的虚 也是可以 理掉的 ( 除或注 )


3 普通用户(500~65535):

这类 一般是由具 管理 root 限的运 添加的

1.2 用户相关语法

1.2.1 useradd(添加用户账号)

useradd  选项  用户名
参数说明:
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
- G 用户组指定用户所属的附加组
-s Shell文件指定用户的登录Shell
- u 用户号指定用户的用户号,如果同时有-选项,则可以重复使用其他用户的标识号
用户名:指定新账号的登录名
 ------------------------------------------------------------------------------------------------
示例1:
useradd -d home/sam -m sam2
此命令创建了一个用户san ,其中-d和-m选项用来为登录名sam2产生一个主目录
/home/sam (/home为默认的用户主目录所在的父目录)

--------------------------------------------------------------------------------------------------------

示例2:
此命令新建了一个用户gem,该用户的登录Shell是bin/sh,它属于group用户组,同
useradd-s/bin/ sh-g group -G adm, root gem
其中group用户组是其主组。这里可能新建组:#groupadd group及groupadd adm

注1:增加用户账号就是在/etc/passwd文件中为新用户增加一条记录
同时更新其他系统文件如/etc/shadow,/etc/group等
注2:Linux提供了集成的系统管理工具usercorf,它可以用来对用户账号进行统一管理

1.2.2 userdel(删除用户账号)

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

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

--------------------------------------------------------------------------------------------

示例1:
userdel -r sam
此命用在系经文件中(主要是/etc/passd,/ect/shadow/,/ect/group)等记录,同时删除用户的主目录

1.2.3 usermod(修改用户账号)

`usermod` 用于修改用户的属性和配置。通过 `usermod` 命令,可以对用户的各种属性进行修改,如用户的用户名、用户ID、用户组ID、用户主目录、用户登录shell等。

-----------------------------------------------------------------------------------------------------

然而,需要注意的是,`usermod` 命令不允许改变正在线上的使用者帐号名称。当使用 `usermod` 命令来改变用户ID(user ID)时,必须确保该用户没有在电脑上执行任何程序。此外,还需要手动更改使用者的 crontab 文件和 at 工作档。如果系统采用 NIS server,还需要在 server 上更改相关的 NIS 设定。
 -----------------------------------------------------------------------------------------------------
`usermod` 命令的语法是 `usermod [选项] [参数]`。其中,选项包括:
* `-c<备注>`:修改用户帐号的备注文字。
* `-d<登入目录>`:修改用户登入时的目录。
* `-e<有效期限>`:修改帐号的有效期限。
* `-f<缓冲天数>`:修改在密码过期后多少天即关闭该帐号。
* `-g<群组>`:修改用户所属的群组。
* `-G<群组>`:修改用户所属的附加群组。
* `-l<帐号名称>`:修改用户帐号名称。
* `-L`:锁定用户密码,使密码无效。
* `-s<shell>`:修改用户登入后所使用的shell。
* `-u<uid>`:修改用户ID。
* `-U`:解除密码锁定。
 参数 `登录名` 指定了要修改信息的用户登录名。
 -----------------------------------------------------------------------------------------------------

1.2.4 passwd(用户口令的管理)

passwd  选项  用户名

可使用的选项:

-l 锁定口令,即禁用账号

-u 口令解锁。

-d 使账号无效

-f 强迫用户下次登入时修改密码。如果是默认用户名,则修改当前用户的口令

--------------------------------------------------------------------------------------------------------
示例1:修改密码

假设当前用户是sam,则下面的命令修改该用户自己的口令

pass

Old password: *******
New password:********

Re-enter new password: ************

超级用户,可以用下列形式指定任何用户的口令

pass sam 

New password: *********

Re-enter new password: ***********

注1:普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两边新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户输入口令,就不需要知道原口令
--------------------------------------------------------------------------------------------------------
示例2:用户指定空口令时

passwd -d sam

此命令将用户sam的口令删除,这样用户sam下一次登陆时,系统就不再允许该用户登入了

--------------------------------------------------------------------------------------------------------
示例3:passwd命令还可以用 -l(lock)选项锁定某一用户,使其不能登入

解锁用-u passwd -l sam

1.2.5 su(切换用户)

su username

1.2.6 退出登入方式

exit

    这是最常用的方法。只需在命令行界面输入exit,然后按下回车键即可退出当前用户。exit命令会立即退出当前用户,并返回到上一级用户或登录界面。 

logout

注意:在某些情况下,logoutexit命令可能具有相同的效果,特别是在shell提示符下使用时 

ctrl+d

在大多数shell中,按下Ctrl+D组合键也可以退出当前用户的登录会话。这通常与logout命令有相同的效果。 

1.3 用户组相关语法

1.3.1 groupadd(增加用户组)

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

-----------------------------------------------------------------------------------------------------------------

示例1:
groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的
基础上加1

-----------------------------------------------------------------------------------------------------------------
示例2:
groupadd -g 101 group2
此命令向系统中增加了一个新组group2同时指定新组的组标识号是101

1.3.2 groupdel (删除用户组)

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

groupdel  用户组

示例:

groupdel  group1

1.3.3 groupmod (修改用户组)

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

-----------------------------------------------------------------------------------------------------------------
示例1:
groupmod -g 102 group2
此命令将组group2的组标识号修改为102

-----------------------------------------------------------------------------------------------------------------
示例2:
groupmod -g 10000-n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3

1.3.4 newgrp (切换用户组)

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

-----------------------------------------------------------------------------------------------------------------
示例1:
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附
加组

二 用户账户系统文件

2.1 /etc/passwd

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

root:x:0:0:Superuser:/:

daemon:x:1:1:System daemons:/etc:

bin:x:2:2:0wner of system commands:/bin:

sys:x:3:3:0wner of system files:/usr/sys:

adm:x:4:4: System accounting:/usr/adm:

uucp:x:5:5:UUCP administrator:/usr/lib/uucp:

auth:x:7:21: Authentication administrator:/tcb/files/auth:

cron:x:9:16:Cron daemon:/usr/spool/cron:

listen:x:37:4:Network daemon:/usr/net/nls:

lp:x:71:18:Printer administrator:/usr/spool/lp:

sam:x:200:50: Sam san:/home/sam:/bin/sh

从上面的列子可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号:分隔为7个字段,格式如下

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

-------------------------------------------------------------------------------------------------------

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

-------------------------------------------------------------------------------------------------------

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

-------------------------------------------------------------------------------------------------------

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

-------------------------------------------------------------------------------------------------------
4、“组标识号”字段记录的是用户所属的用户组。

它对应着/etc/group文件中的一条记录。

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

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

-------------------------------------------------------------------------------------------------------
7、用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即she11°She11是用户与Limux系统之间的接口。Limux的She11有许多种,每种都有不同的特点。

常用的有sh(Boume Shell),csh(C Shell),ksh(Kom Shell),tcsh(TENEX/TOPS-20 type CShell),bash(Bourne Again Shell)等。

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

-------------------------------------------------------------------------------------------------------
8、系统中有一类用户称为伪用户(rseudo users)。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求

2.2 /etc/shadow

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

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

上方格式说明:

"登录名”:是与/etc/passwd文件中的登录名相一致的用户账号
"口令":字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{ ./0-9A-Za-z }中的字符,则对应的用户不能登录
"最后一次修改时间":表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
"最小时间间隔":指的是两次修改口令之间所需的最小天数。
"最大时间间隔":指的是口令保持有效的最大天数。
"警告时间":字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
"不活动时间":表示的是用户没有登录活动但账号仍能保持有效的最大天数。
"失效时间":字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了

2.3 /etc/group

该/etc/group主要存储用户组的信息

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员

格式:组名:口令:组标识号:组内用户列表

格式说明:

"组名":是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
"口令":字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是 * 。
"组标识号":与用户标识号类似,也是一个整数,被系统内部用来标识组。
"组内用户列表":是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

相关文章:

  • 全球游戏市场回暖,Flat Ads推动海外获客增长
  • gin源码实战 day2
  • 【GPTs分享】每日GPTs分享之Canva
  • 【Git】:标签功能
  • 【JVM】垃圾回收算法
  • Unity2023.1.19_ShaderGraph节点说明以及使用技巧
  • kafka和ZK的关系
  • Apache Camel定时任务
  • 跳槽前应该做好哪些准备?
  • Redis 缓存(Cache)
  • 全栈笔记_工具篇(nvm免安装版自动配置,无需手动设置环境变量)
  • 基于Java的宠物领养管理网站系统设计与实现
  • HarmonyOS—使用低代码开发应用或服务
  • 基于springboot+vue的智能推荐的卫生健康系统(前后端分离)
  • Linux设备模型(二) - kset/kobj/ktype APIs
  • 【comparator, comparable】小总结
  • Android组件 - 收藏集 - 掘金
  • CSS 三角实现
  • ES6系统学习----从Apollo Client看解构赋值
  • quasar-framework cnodejs社区
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Twitter赢在开放,三年创造奇迹
  • Vim 折腾记
  • 前端面试之CSS3新特性
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​一些不规范的GTID使用场景
  • #1014 : Trie树
  • #HarmonyOS:Web组件的使用
  • #Linux(帮助手册)
  • #mysql 8.0 踩坑日记
  • (1) caustics\
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (javascript)再说document.body.scrollTop的使用问题
  • (JS基础)String 类型
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (十一)手动添加用户和文件的特殊权限
  • (四)模仿学习-完成后台管理页面查询
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)Java算法:二分查找
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • *1 计算机基础和操作系统基础及几大协议
  • ../depcomp: line 571: exec: g++: not found
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 的程序集加载上下文
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • /bin、/sbin、/usr/bin、/usr/sbin