当前位置: 首页 > news >正文

[Linux] Linux用户和组管理

目录

用户和组介绍

用户介绍

passwd文件

group文件

组的类型

本地用户管理

whoami命令

who和w命令

users命令

useradd命令

usermod命令

userdel命令

本地组管理

groupadd命令

groupmod命令

groupdel命令

groupmems命令

管理用户密码

shadow文件

chage命令

设置账户过期

增加一个uid为0的用户


用户和组介绍

用户介绍

用户帐户主要有三种类型:

  • superuser:用于管理系统,用户名称为root,UID为o,对系统具有完全访问权限。

  • system users:系统具有系统用户帐户,由提供支持服务的进程使用。这些进程或守护进程通常不需要以超级用户身份运行。它们是非特权帐户,用户保护自己文件和其他资源。系统用户帐户不用于交互方式登录系统。

  • regular users:大多数用户拥有常规用户帐户,用于日常工作。

passwd文件

/etc/passwd文件保存操作系统登录用户信息。每行包含一个登录用户信息,以冒号分隔7个域。

格式:

name:password:UID:GIDGECOS:directory:shell

解释如下:

  • name:用户登录名

  • password:用户密码,以x表示

  • UID:用户ID

  • GID:用户主组ID

  • GECOS:用户描述信息,通常为用户的真实姓名

  • directory:用户主目录,启动shell时的工作目录,默认位于/home/username

  • shell:用户打开终端时运行的程序,默认是shell。

group文件

组是用户的集合,组中用户继承组权限。与用户一样,组具有组名称以使其更易于使用。系统通过分配给它们的唯一标识号,组ID或GID来区分组。

/etc/group文件保存操作系统组信息。每行包含一个组信息,以冒号分隔4个域。格式:

group_name:password:GID:user_list

解释如下:

  • group_name:组名称

  • password:组密码,用x表示

  • GID:组ID,唯一表示组

  • user_ist:作为补充的成员

组的类型

  • 主要组:每个用户只有一个主要组,/etc/passwd文件中的GID编号定义。默认情况下,用户创建的新文件组所有者为用户的主要组。通常,在创建新的常规用户时,会创建一个与该用户同名的新组。该组用作新用户的主要组,该用户是此用户专用组的唯一成员,有助于简化文件权限管理。

  • 补充组:用户还可以拥有补充组。补充组的成员资格由/etc/group文件确定。根据用户的任何组是否具有访问权限,授予用户访问权限的权限。例如,如果用户user01具有主要组user01和补充组wheel和webadmin,则该用户可以读取这三个组中任何一个组可读的文件。

#查看用户信息
id

#查看用户uid
id -u demisse

本地用户管理

whoami命令

查看当前终端中登录的用户

whoami

who和w命令

查看当前系统中所有终端上登录的用户,以及用户登录的时间

users命令

users

useradd命令

#创建用户usertest
useradd usertest
grep usertest /etc/passwd

useradd -u 8888 -d /opt/usertest2 -c "user for software manager" -g wheel -s /sbin/nologin usertest2

各选项说明:

  • -u 8888:指定用户ID(UID)为8888

  • -d /opt/usertest2:设置家目录为/opt/usertest2

  • -c "user for software manager":添加用户描述信息(用于软件管理)

  • -g wheel:将用户的主组设为wheel组(管理员组)

  • -s /sbin/nologin:设置登录shell为/sbin/nologin表示这是一个服务账户,不能用于直接登录系统

  • usertest2:要创建的用户名

#创建一个没有密码的账户
useradd -p '' tom

新用户家目录中的文件来源于/etc/skel/目录。创建用户的时候,用户属性默认参数配置在/etc/login.defs文件

usermod命令

修改用户属性

usermod usertest2 -u 1008 -md /home/usertest2 -s /bin/bash
grep usertest2 /etc/passwd
ls -d /home/usertest2/
su - usertest2#添加补充组,如果没有-a选项,则代表将补充组设置为usertest1,原先的补充组就被覆盖了
usermod -aG usertest1 usertest2
id usertest2

userdel命令

#删除
userdel usertest1
[10:50:36 root@rocky8-znf ~]# userdel usertest2
#无法删除
userdel: user usertest2 is currently used by process 4418
#强制删除
[10:51:21 root@rocky8-znf ~]# userdel -f  usertest2

尽量不要强制删除,要找到无法删除的原因

本地组管理

groupadd命令

#创建名为admin的组
[10:52:35 root@rocky8-znf ~]# groupadd admin
#创建名为susadmin的组,组id为2000
[12:50:54 root@rocky8-znf ~]# groupadd sysadmin -g 2000
#查看
[12:51:14 root@rocky8-znf ~]# grep admin /etc/group

groupmod命令

#修改组名称
groupmod --new-name admins admin
#修改组id
groupmod -g 2002 admins
#验证
grep 'admins' /etc/group

groupdel命令

groupdel sysadmin

groupmems命令

#添加成员
groupmems -g admins -a demisse
groupmems -g admins -l
id demisse

#删除成员
groupmems -g admins -d demisse
#清空组中所有成员
groupmems -g admins -a demisse
groupmems -g admins -p

管理用户密码

shadow文件

/etc/shadow文件保存操作系统登录用户密码信息

  • login name:用户登录名。

  • encrypted password:加密的密码。

  • date of last password change:上一次密码更改日期,以距离1970-1-1过去的天数表示。设置为0,强制用户下次登录时更改密码。

  • minimumpasswordage:最小密码生命周期。设置为0,密码可以随时更改。

  • maximum password age:最大密码生命周期。

  • password warning period:密码过期前,提前多少天告警。设置为0,不提示过期。

  • password inactivity period:密码过期后,非活跃天数,在期间密码仍可以使用。

  • account expirationdate:账户过期时间,以距离1970-1-1过去的天数表示。

  • reserved field:保留域。

chage命令

#查看用户密码信息
chage -l demisse

#修改用户密码要求
chage -M 100 demisse
chage -m 10 demisse

#设置用户密码过期时间是过去的一个时间,以便确保用户密码过期,登录时强制用户更改密码
chage -d 0 demisse
#设置为1,确保密码很久未改动
chage -d 1 demisse
#设置用户账户过期时间是过去的一个时间,一边锁定用户账户
chage -E 1970-1-1 demisse
  • usermod -p 更改用户密码

  • usermod -s 限定用户shell

  • usermod -L 锁定用户密码

  • usermod -U 解锁用户密码

  • usermod -d 删除用户密码

设置账户过期

等效于passwd -e

usermod -e 1999-1-1 demisse

增加一个uid为0的用户

方法1:进入etc/passwd中将自己的用户id改为0,此时该账户就可以行使root权限了

demisse:x:0:1000:demisse:/home/demisse:/bin/bash

方法2:

useradd -o -u 0 demisse

demisse和root账户是两个不同的账户,但是demisse用户获得了root账户的权限。

http://www.lqws.cn/news/502291.html

相关文章:

  • GoAdmin代码生成器实践
  • 大模型项目实战:业务场景和解决方案
  • TongWeb替换tomcat
  • Linux Sonic Agent 端部署(详细版)(腾讯云)
  • MySQL:深入总结锁机制
  • 系统架构设计的全方位视角:深入解析4+1视图模型及其应用实践
  • prometheus+grafana+MySQL监控
  • 飞算 JavaAI 插件炸场!一小时搭图书管理系统
  • 从拥塞控制算法热交换到内核错误修复
  • Golang Kratos 系列:业务分层的若干思考(一)
  • 从用户到社区Committer:小米工程师隋亮亮的Apache Fory成长之路
  • WPF/Net Core 简单显示PDF
  • Windows WSL安装Emscripten‌/emsdk(失败)
  • Netty内存池核心PoolArena源码解析
  • OSS监控体系搭建:Prometheus+Grafana实时监控流量、错误码、存储量(开源方案替代云监控自定义视图)
  • RAG大模型开发初探 || 动手大模型应用开发
  • 医疗AI数智立体化体系V2.0泛化多模块编程操作手册--架构师版(下)
  • 第一篇Anaconda/Pytorch/Opencv/Yolov5环境搭建
  • 本地部署搜索引擎 Elasticearch 并实现外网访问(Windows 版本)
  • 6.24_JAVA_微服务day07_RabbitMQ高级
  • 基于C#实现(WinForm)P2P聊天小程序
  • NLP基础1_word-embedding
  • SQL关键字三分钟入门:UPDATE —— 修改数据
  • 秋招Day14 - MySQL - 场景题
  • 3D看房实现房屋的切换
  • 基于目标驱动的分布式敏捷开发
  • 使用ffmpeg根据时间戳自动截取音频
  • 集成 Odoo、n8n 与 Dify,实现智能业务流程自动化
  • 《AI大模型应用技术开发工程师》学习总结
  • 工作流会使用到Webhook是什么