Linux 用户和组

news/2024/10/18 16:47:20/
  • 理解Linux 用户和组的概念
  • 掌握passwd 文件的组成以及作用
  • 掌握shadow 文件的组成以及作用
  • 了解group 文件的内容

1.用户分类:

  • 超级管理员(root)
  • 普通用户
  • 程序用户

1.用户信息文件

/etc/passwd 文件中存储了所有用户信息。

1.passwd 格式

该文件每一行是一个用户信息,并且以: 为分隔符,一共7 段内容。

root:x:0:0:root:/root:/bin/bash
[--] - - - [--] [---] [--------]|   | | |   |    |        ||   | | |   |    |        +-> 7. Login shell|   | | |   |     +---------> 6. Home directory|   | | |   +---------------> 5. GECOS|   | | +-------------------> 4. GID|   | +---------------------> 3. UID|   +-----------------------> 2. Password+---------------------------> 1. Username

/etc/passwd文件中,排位代表:
[用户名]、[口令]、[uid]、[组id]、[备注]、[家目录]、[登录shell]

字段序号

示例

解释

说明

1

root

用户名

2

x

密码占位符

用户的密码
x代表有密码
无内容,用户登录系统无需密码

3

0

UID

当前用户的身份标识
0 就是超级管理员

4

0

GID

当前用户的基本组ID

5

root

用户的身份信息
大名

现已废弃

6

/root

用户家目录

超管:/root
普通用户:/home/用户名

7

/bin/bash

用户登录系统后
(默认)命令解释器

/sbin/nologin 不允许登录系统  
/bin/sh

[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@localhost ~]#

2.用户分类

用户分类

UID

普通用户

> 1000

程序用户

1 - 1000

超级管理员用户

0

1.用户密码文件

/etc/shadow 记录了系统中用户的密码信息。

2.shadow 格式

该文件每一行记录一个用户的密码信息,并且以: 作为分隔符,一共9 段内容。
可以尝试修改root 密码。

root:$6$.IOzaCZc$f.u0fVe5QZb0mhm6UZvjcfa.un7vRXw8frfyoURLrOHmo7JsTI40a/iaQuHm/uCFqRuljfAyBCJDvOk7ZsCEM.:18765:0:99999:7:::passwd rootroot:$6$T07ge8Py$.tZXOZIOpWq2sGZKEkKn2KMahL.mcyNrQrd3C3PIqNt8kA0p/K3JtG4Dwn4vyU2kSvyEg1K2xArTs61AG1Qo1/:18766:0:99999:7:::

字段序号

示例

含义

说明

1

root

用户名

2

$6$T07ge8

密码密文

sha-512 HASH 散列算法
salt 值  
加密后的密文

3

18766

密码修改时间

距离1970 年1 月1 日
密码最近一次的修改时间(天)

4

0

密码最短有效期

在最短有效期之内不能修改密码
3:三天之内不可以修改自己的密码
root 用户不受此限制

5

99999

密码最长有效期

密码可以使用多长时间
建议设置成90

6

7

密码过期时间

密码过期前7 天会有警告提示

7

密码的不活跃期

过了密码有效期没有修改密码,
处于不活跃期,仍然可以登录系统。

8

账户失效时间

密码距离1970 年1 月1 日的失效时间(天)

9

未分配功能


|             正常登录系统            |          仍然可以登录系统    |
0  用户不能修改密码  3 用户可以修改密码 83  提示修改密码 90   登录     |   密码锁定
|-------------------|----------------|----------------|------------|-------------->
^                   ^                ^                ^            ^
密码修改时间    密码最短有效期     密码过期时间     密码最长有效期  密码不活跃期

在/etc/shadow文件中,排位代表:
[用户名]、[密码口令]、[上次更改密码时间]、[最小修改密码时间间隙]、[密码有效期]、[密码需要变更前的警告天数]、[密码有效期]、[密码过期后的宽限天数]、[账户失效时间]、[保留]

3.shadow 爆破

1.密码密文:

$6$T07ge8Py$.tZXOZIOpWq2sGZKEkKn2KMahL.mcyNrQrd3C3PIqNt8kA0p/K3JtG4Dwn4vyU2kSvyEg1K2xArTs61AG1Qo1/$id$salt$encrypted$加密方式$盐值(随机的)$密码密文

2.密码密文加密方式:

man crypt

密码学: 
(安全性取决于密钥,算法公开的)密文  = 密码算法 (明文,盐值)- 密码算法对称加密(加密密钥与解密密钥一样)非对称加密(加密密钥与解密密钥不一样)Hash 算法陷门算法单项运算
- 密码体制明文加密算法加密密钥解密算法解密密钥密文

解密算法

import crypt
crypt.crypt("123456","$6$T07ge8Py$")
循环算法

3.shadow 文件爆破原理:穷举与枚举

[root@localhost ~]# python
Python 2.7.5 (default, Apr 11 2018, 07:36:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt
>>> crypt.crypt("123.com","$6$T07ge8Py")//密码    //加上盐值与加密算法(加盐值防碰撞)
'$6$T07ge8Py$3/./MkHtBbziE5UiB/PvR0vkcwtvCoV0G2uYuFfIpbDleXrPJ0BPPNkFZfOY1iTsap.pdxaMrkyXJ/jQ5nxiH0'
>>> crypt.crypt("123456","$6$T07ge8Py")
'$6$T07ge8Py$JFrusYYpGVwWWiqt99Zjs1SJ6h0k.68kigzB5RIswP64SvGeGTY5MlpSwuThUw3dPKcUT214xnReGwPvlbjU41'
>>>

4.组信息文件

/etc/group 保存了组信息。

5.group 格式

该文件的每一行记录了每一个组的信息,并且以: 作为分隔符,一共4 段内容。

caliy:x:1000:caliy

字段数

示例

含义

说明

1

caliy

组名

用户组的名称,由字母或数字构成。

2

x

密码

x 是密码标识,组密码默认保存在 /etc/gshadow 文件中。

3

1000

GID

Group ID

4

caliy

群组用户

6.组与用户

先有组,再有用户

  • 用户必须有且只有一个基本组
  • 当创建一个用户时,如果没有指定基本组,会先创建一个与该用户同名的组,再创建用户。

     

一个用户可以有多个附加组。
基本组内没有任何用户,才能被删除。


http://www.ppmy.cn/news/1428450.html

相关文章

【Linux驱动层】iTOP-RK3568学习之路(四):杂项设备驱动框架

一、杂项设备驱动简介 在 Linux 中,把无法归类的五花八门的设备定义成杂项设备。相较于字符设备,杂项设备有以下两个优点: (1)节省主设备号:杂项设备的主设备号固定为 10,而字符设备不管是动态分配还是静态分配设备号,都会消耗一…

Spring MVC 国际化

文章目录 国际化基本概念指明(并加载)资源文件获得 Locale 对象AcceptHeaderLocaleResolverSessionLocaleResolverCookieLocaleResolver 修改 Locale 信息非常规办法常规办法: LocaleChangeInterceptor 拦截器 国际化 基本概念 国际化 是开…

4月21敲一篇猜数字游戏,封装函数,void,无限循环,快去体验体验

今天敲一篇猜数字游戏 目录 今天敲一篇猜数字游戏 1.打开先学goto语句: 2.开干: 首次我们学习随机数: 讲解一下: 改用srand; 加入时间变量: 获取时间:哈​编辑 3.我本来想已近够完美了&#xff0…

【Python基础】MySQL

文章目录 [toc]创建数据库创建数据表数据插入数据查询数据更新 个人主页:丷从心 系列专栏:Python基础 学习指南:Python学习指南 创建数据库 import pymysqldef create_database():db pymysql.connect(hostlocalhost, userroot, passwordr…

程序员的成长之路与未来展望

目录 一、可能的收获和体会: 1. 技术技能的增长: 2. 问题解决能力: 3. 持续学习的习惯: 4. 团队合作的经验: 5. 时间管理和组织能力: 6. 面对压力的能力: 7. 理解不同文化的能力&#xf…

【架构-12】JWT和Token

什么是Token? Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。 Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客…

【算法刷题day29】Leetcode:491. 非递减子序列、46. 全排列、47. 全排列 II

文章目录 Leetcode 491. 非递减子序列解题思路代码总结 Leetcode 46. 全排列解题思路代码总结 Leetcode 47. 全排列 II解题思路代码总结 草稿图网站 java的Deque Leetcode 491. 非递减子序列 题目:491. 非递减子序列 解析:代码随想录解析 解题思路 大题…

头歌实训作业答案c++

由于“头歌实训作业答案C”这个表述可能指的是某个特定课程或机构的C编程作业答案,通常这类作业答案不会公开分享,因为这涉及到版权和学术诚信的问题。但我可以提供一些C编程的通用指导和资源,帮助你完成实训作业。 ### C编程基础 1. **变量…