linux用户及用户组的分类、管理

news2025/7/10 10:59:56

一、分类

1.用户和用户组分类

(1)用户分类

  • 超级用户(root)——它具有一切权限,只有进行系统维护(例:建立用户)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。---UID:0
  • 系统用户(伪用户)——是linux系统正常工作所必需的内建用户---UID:201-999
  • 普通用户——是为了让使用者能够使用linux系统资源而建立的---UID:1000-60000

(2)用户组分类

  • 基本组(私有组):创建用户时,默认情况下创建一个和用户同名的组
  • 附加组(公共组):可以容纳多个用户。
  • 系统组:创建系统时,创建一个和系统同名的组。

在linux中,用户账号、密码、用户组信息和用户密码均是放在不同的配置文件中的

文件功能文件名称
用户账号文件/etc/passwd
用户密码文件

/etc/shadow

用户组账号文件/etc/group
用户组密码文件/etx/gshadow

2.用户及组文件

(1)用户账号文件---/etc/passwd

超级用户root:x:0:0:root:/root:/bin/bash

                  账户名称:密码占位符:UID:GID:个人资料:主目录:shell

字段说明

字段含义
账号名称用户登录linux系统使用的名称
密码占位符此处只是密码占位符“x” 或“*”。若为“x”,说明密码经过了shadow的保护
UID用户标识,数值,用来区分不同用户
GID用户所在基本组的标识
个人资料记录用户完整姓名、地址等等个人信息
主目录

用户的主目录(家目录)(普通用户的主目录,在home目录下面,和用户名同名)

Shell

定义用户登录后激活的Shell,默认是Bash Shell

不允许登录:/sbin/nlogin;不允许交互:/bin/false

(2)用户密码文件---/etc/shadow


账号名称:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

字段说明

字段含义
账号名称登录名
加密口令使用SHA-512/SHA-256/MD5算法加密后的密码
最后一次修改时间以距离1970年1月1日的天数表示
最小时间间隔密码多少天内不能修改。默认为0,表示不限制
最大时间间隔密码多少天内必须修改。默认99999,表示不进行限制
警告时间提前多少天警告密码将过期,默认7天,0为不提供警告
不活动时间密码过期多少天禁用用户
失效时间以距离1970年1月1日的天数表示,默认为空,表示永久可用
标志保留

例:计算用户上次修改密码的日期

[root@server ~]# head -1 /etc/shadow
root:$6$ySIbEt.2ieNLyZRD$XC4ssD7iMSiGzJ.2wxGrH9tKSbwmetdtE75aKp9WtnH.0HiCC7zzD7DpAPIqT5OVO1rJ9RFA6ycE9KJ9Ht9CK/:19286:0:99999:7:::
[root@server ~]# date -u -d "1970-01-01 UTC $((19286 * 86400 )) seconds"    
Fri Oct 21 00:00:00 UTC 2022

(3)用户组账号文件---/etc/group


系统中的每一个组,在/etc/group文件中都有一行记录

字段说明:

字段说明
Groupname组的名字
Passwd组的加密口令
GID是系统区分不同组的
Userlist用“,”分开的用户名。列出的是附加组的成员

二、管理

1.用户

(1)创建用户:

  • 格式: useradd [选项]
  • 常用选项:
选项作用
-c(注释信息)设定与用户相关的说明信息
-d(目录)设定用户的家目录
-e(YYYY-MM-DD)设定用户失效日期,过期不能使用该账号
-f(天数)指定密码到期后多少天账号被禁用。0--到期立即禁用;-1--过期不被禁用
-g(组名或GID号)为用户指定所属的基本组,该组在指定时必须已存在
-M不创建用户家目录
-N不创建与用户名同名的基本组
-p(密码)指定用户的登录密码
-s(shell)指定用户登陆使用的Shell,默认bash
-u(用户号)设定账号UID,默认已有用户的最大UID加1。若有-o选项,则可重复使用其它用户标识号

<1> 示例1:创建用户user1

[root@server ~]# useradd user1
[root@server ~]# grep user1 /etc/passwd---在passwd中查看含有user1的行
user1:x:1001:1001::/home/user1:/bin/bash
[root@server ~]# grep user1 /etc/group---在group中查看含有user1的行
user1:x:1001:

<2> 示例2:创建用户user2,uid为1111

[root@server ~]# useradd -u 1111 user2
[root@server ~]# grep user2 /etc/group
user2:x:1111:
[root@server ~]# grep user2 /etc/passwd
user2:x:1111:1111::/home/user2:/bin/bash

<3> 示例3:创建用户mysql,说明信息‘mysql server’,系统账号,可以登录

[root@server ~]# useradd -c 'mysql server' -r mysql
[root@server ~]# grep mysql /etc/passwd
mysql:x:977:975:mysql server:/home/mysql:/bin/bash

<4> 示例4:创建用户li4,指定用户的家目录为/usr/li4

[root@server ~]# useradd -d /usr/li4 li4
[root@server ~]# grep li4 /etc/passwd
li4:x:1112:1112::/usr/li4:/bin/bash

<5> 示例5:创建用户,为其设置密码

[root@server ~]# openssl passwd -1 -salt `openssl rand -hex 8 ` '123456'---将123456设置成为随机数
$1$efe34e21$k.sLYXp7oZ/W7IA2aFNXm1
[root@server ~]# useradd -p '$1$efe34e21$k.sLYXp7oZ/W7IA2aFNXm1' user4—将设置为的随机数设置为密码
可用123456作为密码登录

<6> 示例6:新建用户user5,指定用户附加组是user1

[root@server ~]# useradd -G user1 user5
[root@server ~]# grep user1 /etc/group
user1:x:1001:user5

(2)修改用户

  • 格式:usermod [选项] username
  • 常用选项:-c,-d,-m,-g,-G,-s,-u,-o这些选项的意义与useradd命令中的选项意义相同
选项作用
-l更改账户的名称,必须在该用户未登录的情况下才能使用
-L锁定账户,令其不能登录使用
-U解锁用户账户

<1> 示例1:修改用户user1的失效时间为2022.11.07

[root@server ~]# usermod -e '2022-11-27' user1
[root@server ~]# grep user1 /etc/shadow

<2> 示例2:修改用户li4为lis

[root@server ~]# usermod -l lis li4

<3> 示例3:锁定用户user4

[root@server ~]# usermod -L user4(锁定当前用户)
[root@server ~]# passwd -S user4---查看当前user4的状态
user4 LK 2022-11-06 0 99999 7 -1 (Password locked.)

<4> 示例4:解锁用户user4

[root@server ~]# usermod -U user4(解锁当前用户)
[root@server ~]# passwd -S user4
user4 PS 2022-11-06 0 99999 7 -1 (Password set, MD5 crypt.)

(3)删除用户

  • 格式:userdel [-r] 账户名
  • 常用选项:-r——在删除用户该账户的同时,一并删除该账户对应的主目录

<1> 示例:删除用户user4

[root@server ~]# userdel -r user4---连同用户的家目录以及邮件队列一起删除

(4)用户设置密码(linux账户必须设置密码,才能登录系统)

  • 格式:passwd [账户名]
  • 常用选项
选项功能
-l锁定用户
-u解锁用户
-S显示用户当前状态信息
-i口令过期多少天后停用账户
-n指定口令最短存活期

<1> 示例1:设置密码

法1:
[root@server ~]# passwd user1
法2:利用管道实现,将前面命令的标准输出作为后面命令的标准输入
[root@server ~]# echo 2 | passwd --stdin user1
法3:
[root@server ~]# echo "user1:3" | chpasswd

<2> 强制用户下次登录修改密码

[root@server ~]# chage -d 0 user1---强制user1下次登录修改密码

2.用户组

(1)创建用户组

  • 格式:groupadd [-r] 用户组名称
  • 常用选项:
选项功能
-g GID制定新用户组的标识号(GID),默认是已有最大GID值加1
-r建立一个系统组账号,与-g不同时使用时,分配一个1-999的GID

<1> 示例1:创建组hr

[root@server ~]# groupadd hr

<2> 示例2:创建组IT,gid为1234

[root@server ~]# groupadd -g 1234 IT

(2)修改用户组属性

  • 命令格式: groupmod 选项 用户组
  • 常用选项:
选项功能
-g GID为用户组指定新的组标识号
-n将用户组的名字改为新名字,修改用户组的名称和用户组的GID值

<1> 示例1:修改用户组hr为HR

[root@server ~]# groupmod -n HR hr

(3)管理组成员(root用户和组管理员才可使用)

  • 格式: gpasswd [选项] [用户] [组]

  • 常用选项
选项功能
-a将用户加入组
-d将用户移出组
-M同时添加多个用户
-A给组指派管理员

<1> 示例1:向组内添加成员:将user1添加到HR组

法1:
[root@server ~]# usermod -a user1 -G HR
[root@server ~]# grep HR /etc/group
HR:x:1115:user1
法2:
[root@server ~]# gpasswd -d user1 HR---将user1从HR组中移除
Removing user user1 from group HR
[root@server ~]# gpasswd -a user1 HR---将user1添加到HR组中
Adding user user1 to group HR

<2> 示例2:将user2和user1都加入IT组

[root@server ~]# gpasswd -M user2,user1 IT
[root@server ~]# grep IT /etc/group
IT:x:1234:user2,user1

<3> 示例3:设置user2为IT组管理员

[root@server ~]# gpasswd -A user2 IT

(4)删除组账户

  • 格式: groupdel 用户组名

<1> 示例:删除用户组IT、HR

[root@server ~]# groupdel IT
[root@server ~]# groupdel HR

附:信息显示

命令格式作用
uesrs | w | who显示当前用户信息(三条命令)
id [用户名]显示当前用户或指定用户的ID,以及所属组ID
groups [用户名]显示当前用户或指定用户所属组账号的信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt程序打包成一个单独exe的方法

目录 Qt程序打包成一个单独exe的方法 程序发布 程序打包 问题 Qt程序打包成一个单独exe的方法 Qt程序发布及打包&#xff0c;同时修改可执行文件的图标。本教程使用Qt自带的 windeployqt 工具外加Enigma Virtual Box打包工具。首先需要知道的是&#xff0c;Qt程序发布需要的…

【MM小贴士】物料主数据的中止与后继(3)

话不多说&#xff0c;直接上3&#xff0c; 前两篇的blog可以参考&#xff1a; 【MM小贴士】物料主数据的中止与后继(1)_竹大的博客-CSDN博客https://yanshoushuai.blog.csdn.net/article/details/125660495【MM小贴士】物料主数据的中止与后继(2)_竹大的博客-CSDN博客https:/…

QT 事件处理

03 Qt中是事件处理_哔哩哔哩_bilibili 1&#xff0c;新加mylabel文件&#xff0c;并 修改mylabe的基类QLabel 2 label提升为类 3&#xff0c;鼠标事件 myLabel.h #ifndef MYLABEL_H #define MYLABEL_H#include <QLabel>class myLabel : public QLabel {Q_OBJECT public…

TCP三次握手四次挥手简介

TCP三次握手四次挥手简介 图解三次握手、四次挥手 建立连接&#xff1a;三次握手 关闭连接&#xff1a;四次挥手 上图传递过程中出现的几个字符&#xff08;SYN,ACK,FIN,seq,ack&#xff09;各代表什么意思 SYN&#xff0c;ACK&#xff0c;FIN存放在TCP的标志位(标志位一共有…

【设计模式】设计模式的七大原则

目录标题4. 设计模式的七大原则4.1 开闭原则&#xff08;对扩展开发&#xff0c;对修改关闭&#xff1a;需要接口和抽象类来实现&#xff09;Demo: 搜狗输入法 的皮肤设计4.2 里氏替换原则&#xff08;任何基类可以出现的地方&#xff0c;子类一定可以出现&#xff1a;尽量不要…

[Redis]-四种部署方式

森格 | 2022年11月 本文是对Redis部署方式的学习&#xff0c;主要学习基本原理&#xff0c;以及几种方式的优缺点。 一、部署方式概况 对于Redis的安装部署主要可以分为单机版、主从同步、Sentinel哨兵、Cluster集群部署四种方式&#xff0c;下面一起看下几种方式的优缺点。 二…

Python闭包

目录 变量作用域规则(LEGB规则) 闭包 闭包的用途 &#xff08;一&#xff09;读取函数内部的变量 &#xff08;二&#xff09;让函数内部的局部变量始终保持在内存中 &#xff08;三&#xff09;总结 变量作用域规则(LEGB规则) 在下面的实例中,我们定义一个测试函数,它读取…

112. 路径总和

文章目录2.示例3.答案①递归②BFS③DFS给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返…

智慧电力解决方案-最新全套文件

智慧电力解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 智慧电力全套最新解决方案合集一、建设背景 电力能源是支撑整个社会运行的最重要基础体系之一。伴随着经济和社会生活的发展&#xff0c;人们对电力需求不断增长&#xff0c;同时随着能源需求日…

docker 安装 portainer 来管理容器 (记录 1)

docker 安装 portainer 来管理容器 &#xff08;记录 1&#xff09; 初docker 安装 portainer前置条件&#xff1a;安装docker下载镜像 portainer部署容器配置进入监控初 希望能写一些简单的教程和案例分享给需要的人 docker 安装 portainer 前置条件&#xff1a;安装docker…

【JavaSE】异常处理

文章目录什么是异常异常的分类异常的处理流程throw异常的抛出throws 和 try-catch捕获异常finally自定义异常类什么是异常 在生活中我们头疼脑热都是身体出现的异常&#xff0c;在代码中也是一样的&#xff0c;尽管程序员在写代码时已经非常追求完美&#xff0c;但是总会有一些…

【真北读书】弗兰克意义三途径,让你人生的意义不漂移

维克多弗兰克&#xff0c;意义疗法创始人&#xff0c;出生于奥地利维也纳一个贫困的犹太人家庭。弗兰克15岁时质疑化学老师说的生命只是化学燃料&#xff0c;开始思考生命的意义&#xff0c;曾学习弗洛伊德、阿德勒、海德格尔和尼采&#xff0c;在被囚禁之前&#xff0c;已形成…

终于有人把大数据的相关知识讲全了(大数据基础框架、数据库、大数据分析分布式技术),从入门到进阶全部涵盖了!

前言 经常有初学者在博客和微信问我&#xff0c;自己想往大数据方向发展&#xff0c;该学哪些技术&#xff0c;学习路线是什么样的&#xff0c;觉得大数据很火&#xff0c;就业很好&#xff0c;薪资很高。如果自己很迷茫&#xff0c;为了这些原因想往大数据方向发展&#xff0…

用VB设计年级人员管理系统

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 课题研究背景 1 1.2 课题研究目的和任务 1 1.3 课题研究的意义 2 1.4 论文的主要内容和章节安排 2 第二章 运行环境开发工具 3 2.1 运行环境 3 2.2 开发工具简介 3 2.2.1 VB6.0基础 3 2.2.2 SQL Server2000数据库基础 3 第三章 需…

【HDU No. 2874】 城市之间的联系 Connections between cities

【HDU No. 2874】 城市之间的联系 Connections between cities 杭电OJ 题目地址 【题意】 由于大部分道路在战争期间已被完全摧毁&#xff0c;所以两个城市之间可能没有路径&#xff0c;也没有环。 已知道路状况&#xff0c;想知道任意两个城市之间是否存在路径。若答案是肯…

11.一键分析你的上网行为(web页面可视化)

## 一键分析你的上网行为, 看看你平时上网都在干嘛? ## Chrome浏览器历史记录文件可视化### 简介**想看看你最近一年都在干嘛&#xff1f;看看你平时上网是在摸鱼还是认真工作&#xff1f;想写年度汇报总结&#xff0c;但是苦于没有数据&#xff1f;现在&#xff0c;它来了。*…

国外顶尖程序员手写,402页汉译版微服务与事件驱动架构开发手册

为什么用事件驱动型微服务&#xff1f; Marshall McLuhan认为&#xff0c;影响人类并给社会带来根本性变革的不是媒介的内容&#xff0c;而是与媒介的互动过程。在我们的集体参与下&#xff0c;报纸、广播、电视、互联网、即时通信和社交媒体改变了人类的互动方式以及社会结构…

JDK17新特性

一.JEP 409: Sealed Classes 1.1简介 官网链接sealed class 从如下官网的简介与描述可以看出&#xff0c;这个新特性的目的是为了限制类与接口的 被继承与实现&#xff0c;比如说我有个 A类&#xff0c;那么我现在限定只有 B&#xff0c;C&#xff0c;D三个类可以继承 那么就需…

DRM架构介绍(一)

1、 DRM简介&#xff08;Direct Rendering Manager&#xff09;传统linux显示设备驱动开发时&#xff0c;通常使用FB驱动架构&#xff0c;随着显卡性能升级&#xff1a;显示覆盖&#xff08;菜单层级&#xff09;、GPU加速、硬件光标&#xff0c;传统FB架构无法很好支持&#x…

activiti-bpmn-converter

activiti-bpmn-converter目录概述需求&#xff1a;设计思路实现思路分析1.BpmnXMLConstants2.BpmnXMLConverter3.StartEventXMLConverter4.EndEventXMLConverter参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full bu…