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. CentOS+Django+uWSGI+Celery+Supervisor配置

    目录 背景 目录 安装 配置Supervisor 1.生成配置文件 2. 修改配置文件 3. 创建进程文件 创建 uwsgi.conf 进程文件 创建celery进程文件 启动supervisor 启 ...

  2. 力扣575(java&python)-分糖果(简单)

    题目: Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] .Alice 注意到她的体重正在增长,所以前去拜访了一位医生. 医生建议 Alice 要少摄入糖分,只吃掉她所有糖 ...

  3. 阿里云峰会 | 阿里云CDN六大边缘安全能力,全力助推政企数字化转型

    6月9日,2020年阿里云线上峰会召开.阿里云智能总裁张建锋认为,数字化已经成为中国经济的主要驱动力,疫情让政府.企业都认识到数字化的迫切性.在峰会上,阿里云CDN正式对外发布基于CDN构建的六大边缘 ...

  4. 兑现 Service Mesh 的新价值:精确控制“爆炸半径”

    ​简介:本文分享了阿里云内部所沉淀的全链路流量打标与路由的能力,做出服务网格技术新体验的同时,很好地兑现了服务网格的新价值. 作者:至简 软件是以持续迭代的方式去不断演进的.某种程度上,我们并不担心软 ...

  5. 数仓架构的持续演进与发展 — 云原生、湖仓一体、离线实时一体、SaaS模式

    简介: 数据仓库概念从1990年提出,经过了四个主要阶段.从最初的数据库演进到数据仓库,到MPP架构,到大数据时代的数据仓库,再到今天的云原生的数据仓库.在不断的演进过程中,数据仓库面临着不同的挑战. ...

  6. [ML] 工程师使用 Keras 的步骤指引

    设置 import numpy as np import tensorflow as tf from tensorflow import keras 介绍 在训练模型之前准备数据(将其转换为 NumP ...

  7. 阿里云OSS文件上传几种方法(主要是前端)

    目录 零.准备 一.服务端签名后直传 1. 阿里云控制台配置 2. 后端接口开发(PHP) 3. 前端获取签名后上传 二.使用STS临时凭证进行上传 1. 后端接口开发(node) 2. 前端获取临时 ...

  8. MindSpore强化学习:使用PPO配合环境HalfCheetah-v2进行训练

    本文分享自华为云社区<MindSpore强化学习:使用PPO配合环境HalfCheetah-v2进行训练>,作者: irrational. 半猎豹(Half Cheetah)是一个基于Mu ...

  9. k8s-nginx实战部署1

    目录 yaml 资源清单 run_deploy.sh .gitlab-ci.yml yaml 资源清单 deploy.yaml apiVersion: v1 kind: ConfigMap metad ...

  10. Docker基础 ubuntu安装docker

    目录 如何在Linux深度系统deepin下安装docker 介绍 安装docker 在ubuntu的docker中运行ubuntu 在ubuntu的docker中运行centos 卸载docker ...