1.0 账号与用户组

1.1 用户标识符:UID,GID

虽然我们登陆Linux主机的时候输入的是账号,但其实Linux主机并不会直接认识你的账号名称,账号只是为了方便人。

一个文件如何判断他的拥有者ID和拥有组ID呢?

其实,就是利用UID和GID。每个文件都会有所谓的GID 和 UID。当我们需要显示文件实行的需求的时候,系统会根据/etc/passwd 与 /etc/group 的内容,找到相对应的账号与祖名在显示出来。

如果修改一个用户的UID,那么一个原本属于该用户的文件,现在属于该用户的UID(变成了数字,而不是账号名)。

同样,如果修改一个用户的GID,那么一个原本属于该用户的组,现在属于该用户的GID。

1.2 用户账号

登陆的顺序:

1.先查找/etc/passwd文件,寻找是否有输入的账号,如果没有就退出,如果有就将该账号对应的UID 和GID读出来,另外,该账号的家目录和shell设置一并读出。

2.再核对/etc/shadow文件,找出与uid gid相对应的账号和UID。然后核对密码

3.如果一切OK,那么就进入shell管理阶段。

1.2.1 /etc/passwd文件

/etc/passwd文件是Linux系统中最重要的文件之一,它存储了Linux系统中所有的用户账号信息。

/etc/passwd文件结构:

[root@server ~]# head -n 4 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

这个文件的结构是:

用户名:口令:UID:GID:注释:家目录:登录shell

每一行代表一个账号,有几行就代表有几个账号。特别注意的是,有很多账号,本来就是里面系统这个厂运行所必须的,我们可以称它为系统账号,例如bin,daemon,adm,nobody等,这些账号不要随意删除。

1.2.2 /etc/shadow文件

/etc/shadow文件是Linux系统中最重要的文件之一,它存储了Linux系统中所有的用户账号密码信息。

/etc/shadow文件结构:

[root@server ~]# head -n 4 /etc/shadow
root:$6$cVkANz1y$snmp8efw0x5J0wz5CwacyaSIq6cYM7F9b2lE5xrMd5KucmOSuoEi3x9xyIRBSoP2MVRMP9qgfHKH2xUXs8T6v0:19703:0:99999:7:::
bin:*:16925:0:99999:7:::
daemon:*:16925:0:99999:7:::
adm:*:16925:0:99999:7:::

这个文件的结构是:

用户名:加密口令:最后一次修改时间:最小天数:最大天数:警告天数:不活动天数:失效天数:保留字段

查看Linux中的加密机制

[root@server ~]# authconfig --test |grep hashing
password hashing algorithm is sha512
#这就是目前的密码加密机制

1.2.3 /etc/group文件

/etc/group文件是Linux系统中最重要的文件之一,它存储了Linux系统中所有的用户组信息。

/etc/group文件结构:

[root@server ~]# head -n 4 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:

这个文件的结构是:

组名:口令:GID:组内用户列表

1.2.4 /etc/passwd和/etc/shadow的区别

/etc/passwd文件中存储的是用户账号信息,包括账号名称、口令、UID、GID、注释、家目录和登录shell等。

/etc/shadow文件中存储的是用户账号密码信息,包括账号名称、

1.3 关于用户组:有效与初始用户组,groups,newgr

1.3.1 /etc/group 文件结构

[root@server ~]# head -n 4 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:

这个文件的结构是:

组名:口令:GID:组内用户列表
  • 如果要加入用户组,可以直接在组内用户列表处逗号分隔,加入用户名。

每个用户可以加入多个用户组,那么到底哪一个用户组为主呢?

1.3.2 初始用户组

在/etc/passwd文件中,用户对应的GID,到/etc/group中找到对应的,那个就是用户的初始用户组。

[root@server ~]# cat /etc/passwd |awk -F: '{print $4}'
0
1
2
3

1.3.3 有效用户组

groups命令

如果一个用户,同时加入多个用户组,使用groups查看用户当前有效用户组。

[hum@server root]$ groups
hum wheel sum

newgrp命令

如果一个用户,同时加入多个用户组,使用newgrp命令切换用户组。

[hum@server root]$ groups
hum wheel sum
[hum@server root]$ newgrp sum
[hum@server root]$ groups
sum wheel hum

newgrp 是有限制的,你想要切换的用户组一定为你已经加入的用户组。

注意:记得退出newgrp环境,因为newgrp命令是新建了一个shell环境,退出这个环境后,原来的用户组就恢复了。

[hum@server root]$ groups
hum wheel sum
[hum@server root]$ newgrp sum
[hum@server root]$ groups
sum wheel hum
[hum@server root]$ exit
exit
[hum@server root]$ groups
hum wheel sum

1.3.4 /etc/gshadow文件

[root@server ~]# head -n 4 /etc/gshadow
root:::
bin:::
daemon:::
sys:::

这个文件的结构是:

组名:口令:用户组管理员的账号:有加入该用户组支持的所属账号

tips:这个文件最大的用处就是建立用户组管理员。(一般root很忙,又有用户想加入组,用户组管理员就能江那么账号加入自己挂里的用户组中,可以免去root的忙碌。不过,目前有类似sudo的之类的工具,这个功能也很少用)

2.0 账户管理

2.1 新增与删除用户:useradd,先关配置文件,passwd,usermod,userdel

2.1.1 useradd命令

选项 解释
-u 后面接UID 直接制定一个特定的UID给这个账号
-g 后面接的用户组就是初始用户组,该用户组的GID会放在/etc/passwd文件的第四个栏位
-G 后面接的用户组则是该账号还可加入的用户组,这个参数会修改/etc/group文件里的
-M 强制,不要建立使用者的家目录(是系统账号的默认值)
-m 强制,要建立使用者的家目录(一般账号的默认值)
-c /etc/passwd文件的第五栏,解释说明字段,可以随便设置
-d 指定某个目录就是家目录,而不要使用默认值,务必使用绝对路径
-r 建立一个系统的账号,这个账号的UID会有限制(参考/etc/login.defs)
-s 后面接一个shell,若没有指定则默认是/bin/bash
-e 后面接一个日期,格式为YYYY-MM-DD,此选项可写入shadow第八栏位,也就是账号失效日期
-f 后面接shadow的第七栏,指定密码是否会失效,0为立即失效,-1为用不是小(密码只是会过期而强制于登陆重新设置)

useradd的默认值用useradd -D查看

[root@server ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

而这些数据其实是由/etc/default/useradd文件决定的。

[root@server ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

明文输入密码:

echo '123' |passwd --stdin hum
#先echo密码 显示出来密码 在进行passwd命令 --stdin(明文输入密码) 用户名

2.1.2 passwd命令

选项 解释
--stdin 可以通过来自前一个管道的数据,作为密码输入,对shell脚本有帮助
-l 是lock的意思,会将/etc/shadow第二栏最前面加上!使密码失效
-u 是unlock的意思,与-l相对
-S 列出密码相关参数,即shadow文件内的大部分信息
-n 后面接天数,对应shadow的第四栏位,多久不可修改密码天数
-x 后面接天数,对应shadow的第五栏位,多久内必须修改密码
-w 后面接天数,对应是shadow的第六栏位,密码过期前的警告天数
-i 后面接[日期],shadow的第七栏位,密码失效日期

实验:

让sum暂时无法登陆

[root@server ~]# passwd -l sum
Locking password for user sum.
passwd: Success
[root@server ~]# passwd -S sum
sum LK 2023-12-02 0 99999 7 -1 (Password locked.)
[root@server ~]# passwd -u sum
Unlocking password for user sum.
passwd: Success
[root@server ~]# passwd -S sum
sum PS 2023-12-02 0 99999 7 -1 (Password set, SHA512 crypt.)

2.1.3 chage

除了passwd -S 之外,chage命令也能看密码的相关参数,且更加详细

选项 解释
-l 列出该账号的详细密码参数
-d 后面接日期,修改shadow第三栏位(最近一次修改密码的日期),格式 YYYY-MM-DD
-E 后面接日期,修改shadow第八栏位(账号失效日),格式为YYYT-MM-DD
-I 后面接天数,修改shadow第七栏位(密码失效日期)
-m 后面接天数,修改shadow的第四栏位(密码最短保存天数)
-M 后面接天数,修改shadow第五栏位(密码多久需要进行修改)
-w 后面接天数,修改shadow的第六栏位(密码过期前警告日期)

linux的账号和组的更多相关文章

  1. Linux 的账号与群组[转自vbird]

    Linux 的账号与群组 管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务 ...

  2. Linux学习之CentOS(十)----Linux 的账号与群组

    Linux 的账号与群组 管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务 ...

  3. Linux的用户和组

    1. 查看配置文件/etc/shadow第一行中root账号的第三个字段(以':'分隔)中的数字,请算一下这个数字是怎么来的?距离1970年1月1日到上次更改密码的时间的间隔天数.例如root密码日期 ...

  4. Linux的账号口令机制及其爆破

    账号保存 谈到linux的账号认证,其实就是如何保存于通过口令(password)鉴别,这里首先要将两个文件,一个是/etc/passwd,另外一个是/etc/shadow. /etc/passwd文 ...

  5. linux备忘录-账号管理与ACL权限设定

    知识 账号管理中的一些文件结构 /etc/passwd 每一行的内容都为下面结构 账号名称:密码:UID:GID:用户信息说明:家目录:shell ---- UID ---- -- 0 -> 代 ...

  6. linux用户账户与组账户,文件权限及归属管理

    Linux是一个多用户, 多任务多进程的服务器操作系统 用户角色:超级用户(管理员),普通用户,程序用户 用户账号管理用户账号概述用户:使用者在计算机内部的身份标识 用户账号的常见分类:超级用户: r ...

  7. Linux修改用户所在组方法

    Linux修改用户所在组方法 usermod -g 用户组 用户名强行设置某个用户所在组usermod -G 用户组 用户名把某个用户改为 group(s) usermod -a -G 用户组 用户名 ...

  8. Linux只读账号配置【转】

    整个配置的命令如下(主要使用了:Linux bash受限的shell(RESTRICTED SHELL)) 步骤#1.创建只读shell(这步可以省略) ln -s /bin/bash /bin/rb ...

  9. Linux中的Wheel组的作用

    原文:http://www.360doc.com/content/11/0505/10/4644186_114496525.shtml Linux中的Wheel组的作用(用自己的话翻译的) (原文) ...

  10. 批量增加Linux系统账号、重置账号密码、FTP账号批量测试

    批量增加Linux系统账号.重置账号密码是用Linux Shell脚本来做的:批量FTP账号测试是用Python脚本来做的.这些脚本都是读取一个用户名和密码文件,然后基于该用户名密码文件进行自动批量测 ...

随机推荐

  1. C内存操作API的实现原理

    我们在编写C代码时,会使用两种类型的内存,一种是栈内存,另外一种是堆内存,其中栈内存的申请和释放是由编译器来隐式管理的,我们也称为自动内存,这种变量是最简单而且最常用的,然后就是堆内存,堆的申请和释放 ...

  2. 有效预警6要素:亿级调用量的阿里云弹性计算SRE实践

    简介: 关注保持良好的预警处理,持续解决系统隐患,促进系统稳定健康发展. 编者按:随着分布式系统和业务需求的飞速发展,监控告警在我们保障系统稳定性和事故快速恢复的全周期中都是至关重要的.9月3号,阿里 ...

  3. [FAQ] 钉钉 Excel 回车键不能换行 ? 在线编辑如何换行

      Win 端表格换行:AIT+ENTER Mac 端表格换行:AIT OPTION+ENTER Tool:ChatAI Refer:钉钉技巧 Refer:https://www.dingtalk.c ...

  4. IIncrementalGenerator 增量 Source Generator 生成代码入门 读取 csproj 项目文件的属性配置

    本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,读取项目里的项目文件属性,从而实现为项目定制的逻辑.或者是读取 NuGet ...

  5. WPF 将控件放入到 UserControl 里获取 HwndSource 为空的情况

    本文记录将 WPF 控件放入到 UserControl 里,如果此 UserControl 没有被设置 Visibility 为可见过,那么放在此 UserControl 内的控件将获取不到 Hwnd ...

  6. 使用WebSocket实现实时多人答题对战游戏

    前言 前两章教程,我们使用WebSocket的基础特性打造了一个小小聊天室,并在第二章对其进行了集群化改造. 系列教程回顾: [WebSocket]第一章:手把手搭建WebSocket多人在线聊天室( ...

  7. 应用zabbix的实时导出(real-time export)功能

    说明 zabbix作为监控软件,有时也会需要获取历史数据作进一步的分析,通常可以采用3种办法: 通过zabbix API定期获取(通过web) 通过后端数据库定期读取(通过db) 应用实时导出功能配合 ...

  8. 开源相机管理库Aravis例程学习(六)——camera-features

    目录 简介 例程代码 函数说明 arv_camera_get_integer arv_camera_get_string 简介 本文针对官方例程中的:04-camera-features做简单的讲解. ...

  9. Linux 开启防火墙端口策略

    1. 安装防火墙 yum install firewalld systemd -y 2. 手动开放防火墙端口 查看防火墙全部设置 firewall-cmd --list-all 若防火墙服务未启动可执 ...

  10. cesium教程2-加载显示地形地图

    上面地形数据,是调用cesium官方的地图服务,需要先注册cesium账户,配置cesium的账户token才行 1.在线地形服务的示例代码如下 <!DOCTYPE html> <h ...