💻
QMMMS的笔记
博客
  • QMMMS的笔记
  • agent
    • MCP的背景、原理和开发
    • Agent 历史与背景
    • Agentic Workflows
    • 环境检查与基础工具
    • Tool Call
    • 工具与运行时的值
    • temp
    • 处理 Tool Call error
    • trick
  • algorithm
    • 线性结构
    • 二叉树
    • 图
    • 查找
    • 排序
    • 动态规划
    • 优化方法
    • 数学
    • 迁移至Java
  • computer_composition
    • 系统总线
    • 存储器
    • 输入输出系统
    • 计算机的运算方法
    • 指令系统
    • 补充
  • computer_network
    • 引入
    • 应用层
    • 传输层
    • 网络层(数据平面)
    • 网络层(控制平面)
    • 链路层
    • 常见问答
    • 实验
  • database
    • SQL实战
    • 关系代数
    • 数据库设计
    • 规范化
    • 数据库基本概念
    • 查询原理
    • 数据库恢复技术
    • 并发控制
  • dev_tools
    • Git
    • Nginx
    • Spring
    • LangChain
    • PyTorch Cheat Sheet
    • MyBatis
    • MySQL Cheat Sheet
    • MySQL 补充
    • Redis
    • Docker
    • RocketMQ
    • Chrome
  • linux
    • Linux基础命令与使用
    • 文件与权限
    • 文件与目录操作
    • 权限属性高级
    • 命令与文件的查找
    • 文件压缩和打包
    • vim编辑器
    • shell变量
    • 命令补充
    • 数据流重定向
    • 管道命令
    • shell脚本
    • 用户管理
    • 用户间交流
    • 计划任务
    • 进程管理
    • 软件管理
    • 认识系统服务
    • 运维常用命令
    • 常用命令
  • llm
    • 大规模语言模型概述
    • 分布式训练概述
    • 有监督微调概述
    • 强化学习与LLM
    • LLM评估概述
    • 大模型应用
    • 理解大模型
    • 量化
    • 预训练
    • 上下文学习
  • machine_learning
    • 引入
    • 大致正确学习
    • 一致收敛
    • 偏差还是过拟合?
    • 可学习的充要条件
    • 非均匀可学习性
    • 计算复杂性
  • mathematics
    • 概率与统计基础
    • 线性代数基础
  • operating_system
    • 操作系统基本概念
    • 进程和线程
    • 同步,互斥与死锁
    • 内存管理
    • 文件系统
    • I/O系统
    • 保护与安全
    • 《现代操作系统》
  • statistical_learning
    • 统计学习引入
    • 线性回归
    • 分类
    • 重抽样方法
    • 线性模型选择与正则化
    • 非线性模型
    • 基于树的方法
    • 支持向量机
    • 无指导学习
    • 马尔科夫链和蒙托卡罗方法简明理解
    • R语言速查
  • deep_learning
    • basic_concepts
      • 逻辑回归与损失函数
      • 神经网络
      • 正则化、预处理、权重初始化
      • 优化算法
      • 机器学习策略
      • 复习:从计算机视觉的角度
      • 卷积神经网络
      • 深度卷积网络示例
      • 计算机视觉任务
      • 循环神经网络
      • 自然语言处理任务
      • 注意力
      • Transformers 家族
      • 显卡扫盲
      • 强化学习概述
    • semi-supervise
      • 半监督学习简介
      • Consistency Regularization
      • Proxy-label Methods
      • Holistic Methods
      • Generative Models
      • Graph-Based SSL
      • Self-Supervision for SSL
      • Other SSL methods
  • programming
    • cpp
      • STL
      • C++基础
      • 内存管理
      • 面向对象
    • java
      • 环境和介绍
      • 注释
      • String
      • 面向对象思想
      • Object
      • 包
      • 访问权限修饰符
      • 初始化块
      • 接口
      • 内部类
      • 注解
      • 枚举
      • 集合框架
      • List
      • Map
      • 泛型
      • 迭代
      • IO与流
      • 序列化
      • 异常
      • Lambda
      • Stream流
      • Socket
      • 缓冲
      • 命名规范
      • 拆箱装箱
      • 值传递
      • 深拷贝
      • 反射
      • JVM
      • 并发编程基础
    • python
      • 并发编程
      • 环境管理
  • software_engineering
    • basic_concepts
      • 系统分析与设计概述
      • 规划
      • 需求分析与原型设计
      • 项目管理
      • 建模
      • 数据库设计
      • 架构
      • 配置管理
      • 测试管理
      • 安全
      • 编码原则
      • 微服务
      • 补充内容
    • software_testing
      • CMMI基础
      • PPQA与SQA
      • 软件测试基础
      • 黑盒测试
      • 白盒测试
      • 集成测试
      • 系统测试
      • 测开面试补充
由 GitBook 提供支持
在本页
  • 相关文件
  • /etc/passwd文件
  • /etc/shadow文件
  • /etc/group文件
  • /etc/gshadow文件
  • 查询用户信息
  • 新增用户
  • 设置密码
  • 修改用户和密码参数
  • 删除用户
  • 新增用户组
  • 修改用户组
  • 删除用户组
  • 设置用户组管理员
  • 查询登录信息
在GitHub上编辑
  1. linux

用户管理

相关文件


在使用ssh远程登录时,发生的事件:

  1. 在/etc/passwd中寻找用户名

  2. 若没有用户名,退出。

  3. 若有用户名,在/etc/group读取用户ID(UID),用户组ID(GID)等相关信息

  4. 在/etc/shadow中核对密码

  5. 如果一切OK,进入shell

/etc/passwd文件

[root@qmmms user1]# 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

一行代表一个用户,信息用:分隔,分别代表:

  1. 账号名

  2. 密码,但已经迁移到/etc/shadow

  3. UID

  4. GID

  5. 信息说明栏

  6. 家目录

  7. 默认shell

/etc/shadow文件

[root@qmmms user1]# head -n 4 /etc/shadow
root:$6$5gDFheiF$vSo9u.mXhcZhsBov0nicqnboO2mR62waw9ww7QgY/OJBK6XaN9DAvYh3jgA6JYPx7HrsIZfQrRAC5BxiaonR50:19235:0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
  1. 账号名

  2. 密码,加密后的

  3. 最近修改密码的日期

  4. 密码修改后还要几天才能修改

  5. 密码需要重新修改的天数

  6. 在密码需要修改前的警告天数

  7. 密码过期后的宽限时间(密码已经过期,可以登录,登录后强制改密)(过期 != 失效)

  8. 账号实现日期

  9. 保留

/etc/group文件

[root@qmmms ~]# cat /etc/group | head -n 4
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
  1. 组名

  2. 用户组密码,已经迁移到/etc/gshadow

  3. GID

  4. 此用户组支持的用户名称

/etc/gshadow文件

[root@qmmms ~]# cat /etc/gshadow | head -n 4
root:::
bin:::
daemon:::
sys:::
  1. 组名

  2. 密码

  3. 用户组管理员账号

  4. 此用户组支持的用户名称

查询用户信息


格式:

id 账号名

例子:

[user1@qmmms ~]$ id user1
uid=1000(user1) gid=1000(basic_users) groups=1000(basic_users)

新增用户


格式:

useradd [参数] 账号名

常用参数:

  • 不加参数,使用默认值新建账号,查看默认值使用useradd -D命令

  • -g 初始用户组:添加初始用户组

  • -G 次要用户组:添加该账号还可加入的用户组

新建账号使用的默认值:

[root@qmmms user1]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
  1. 新建账号的初始用户组GID=100,但是CentOS不会参考这个默认值,而是创建一个与账号名一样的用户组

  2. 家目录所在目录

  3. 密码过期后几天失效,-1代表不失效

  4. 账号失效日期

  5. 默认shell

  6. 生成家目录的参考目录

    [root@qmmms ~]# cd /etc/skel
    [root@qmmms skel]# ls -la
    total 20
    drwxr-xr-x.  2 root root 4096 Feb 10  2022 .
    drwxr-xr-x. 76 root root 4096 Sep 26 13:29 ..
    -rw-r--r--   1 root root   18 Nov 25  2021 .bash_logout
    -rw-r--r--   1 root root  193 Nov 25  2021 .bash_profile
    -rw-r--r--   1 root root  231 Nov 25  2021 .bashrc
  7. 是否创建mailbox

注:

  • useradd -D展示的数据来自/etc/default/useradd 这个文件

  • 关于UID,GID等默认参数,参考/etc/login.defs 这个文件

设置密码


格式:

passwd [--stdin] [账号名]

常用参数:

  • 不加参数,不加用户名,为自己改密

  • 加账号名,为他人改密(权限允许时)

  • --stdin:通过管道设置密码,使用脚本大量创建账号时使用

显示详细的密码参数:

[root@qmmms skel]# chage -l user1
Last password change                                    : Sep 01, 2022
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

修改用户和密码参数


请参考书上useradd,passwd,chage,usermod等命令,功能很多不一一列举

如要更改shell,格式为:

chsh [参数]

参数:

  • -l:列出可用的shell

  • -s shell:更改自己的shell

注:查看自己正在使用的shell请使用echo ${SHELL}

删除用户


格式:

userdel [参数] 账号名

参数:

  • 处理的文件为

    • 账号密码相关:/etc/passwd,/etc/shadow

    • 用户组相关:/etc/group,/etc/gshadow

    • 个人数据相关:/home/账号名,/var/spool/mail/账号名

  • -r:连同家目录一起删除

新增用户组


格式:

groupadd [参数] 用户组名

参数:

  • -g GID:使用特点GID新增用户组

修改用户组


格式:

groupmod [参数] 用户组名

参数:

  • -g GID:修改GID数字

  • -n 新用户组名:改名

删除用户组


格式:

groupdel 用户组名

注意:只有当没有用户将这个用户组作为初始用户组时,才可以删除该用户组

设置用户组管理员


root使用命令:

gpasswd [参数] 用户组名

参数:

  • 不加参数,为用户组设置密码

  • -A 账号名:将用户设置为该用户组管理员

  • -M 账号名:将用户设置为该用户组普通成员

用户组管理员使用命令:

gpasswd [参数] 用户组名

参数:

  • -a 账号名:将用户设置为该用户组普通成员

  • -d 账号名:将用户移出用户组

例子:

[root@qmmms ~]# groupadd vip_users
[root@qmmms ~]# gpasswd vip_users
Changing the password for group vip_users
New Password: 
Re-enter new password: 
[root@qmmms ~]# gpasswd -A user1 vip_users
[root@qmmms ~]# su user1
[user1@qmmms root]$ gpasswd -a qms vip_users
Adding user qms to group vip_users
[user1@qmmms root]$ su
Password: 
[root@qmmms ~]# groupdel vip_users

查询登录信息


  • last和lastlog命令:查询用户登录的时间

  • who和w命令:查询当前谁在线

上一页shell脚本下一页用户间交流

最后更新于8个月前