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. 【SSH通道数据库连接池】连接远程linix服务器上面的mysql

    首先,我用的是阿里的druid数据库连接池,其次,需要第三方jar包,maven坐标如下: <dependency> <groupId>com.jcraft</group ...

  2. GaussDB(DWS)基于Flink的实时数仓构建

    本文分享自华为云社区<GaussDB(DWS)基于Flink的实时数仓构建>,作者:胡辣汤. 大数据时代,厂商对实时数据分析的诉求越来越强烈,数据分析时效从T+1时效趋向于T+0时效,为了 ...

  3. js中“??“和“?.“怎么用?

    ??:空值合并操作符 逻辑操作符,左侧为null和undefined时,才返回右侧的数const sum = null ?? 12console.log(sum);//输出12const sum1 = ...

  4. Oracle 与当前日期有关的内容

    Oracle 与当前日期有关的内容 求当前日期是周几: 大概就是下面这种方法 to_char(date,'D') Select to_char(date,'ss') from dual取当前时间秒部分 ...

  5. 【笔记】join using&AVG

    oracle using 在oracle中,using用于简化连接查询,只有当查询是等值连接和连接中的列必须具有相同的名称与数据类型时,才能使用using关键字进行简化 比如原来是 select s. ...

  6. 力扣696(java)-计数二进制子串(简单)

    题目: 给定一个字符串 s,统计并返回具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是成组连续的. 重复出现(不同位置)的子串也要统计它们出现的次 ...

  7. 力扣258(java)-各位相加(简单)

    题目: 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数.返回这个结果. 示例 1: 输入: num = 38输出: 2 解释: 各位相加的过程为:38 --> 3 + 8 ...

  8. 解析 RocketMQ 业务消息--“顺序消息”

    简介: 本篇将继续业务消息集成的场景,从功能原理.应用案例.最佳实践以及实战等角度介绍 RocketMQ 的顺序消息功能. 作者:绍舒   引言 Apache RocketMQ 诞生至今,历经十余年大 ...

  9. 国内唯一连续入选Gartner,Quick BI是如何做到的?

    ​简介:阿里云Quick BI凭借灵活的公共云部署,私有化独立部署能力.无缝对接各类云上数据库和自建数据库.可视化搭建分析.高效数据处理能力与强大数据计算能力,使得在2022年持续入选Gartner ...

  10. 不改一行代码,轻松拥有企业级微服务治理|MSE微服务治理专业版重磅发布

    ​简介:随着业务的发展,微服务拆分越来越复杂,微服务的治理也成了一个比较令人头疼的问题.有没有更加简单且高效的方法来解决微服务治理的难题? 作者:十眠 随着业务的发展,微服务拆分越来越复杂,微服务的治 ...