在 Linux 系统中,用户管理是系统管理员的核心工作之一,涉及用户账号的创建、修改、删除、权限分配等操作。Linux 采用多用户多任务机制,通过严格的用户和组管理确保系统安全性和资源分配合理性。以下是 Linux 用户操作的详细介绍:

一、用户账号的基本概念

  1. 用户类型

    • 超级用户(root):拥有系统最高权限(UID=0),可执行所有操作。
    • 系统用户:用于运行服务(如nginxmysql),通常不允许登录,UID 范围一般为 1-999(不同发行版可能不同)。
    • 普通用户:由 root 创建的用户,权限受限制,UID 范围通常从 1000 开始。
  2. 用户标识

    • UID(User ID):系统识别用户的唯一数字标识(如 root 的 UID 为 0)。
    • GID(Group ID):用户所属主组的唯一标识。
    • 用户名:用户登录时使用的字符串(如alicebob)。
  3. 关键配置文件

    • /etc/passwd:存储用户账号基本信息(用户名、UID、GID、家目录等)。
    • /etc/shadow:存储用户密码哈希及密码策略(权限为 000,仅 root 可读取)。
    • /etc/group:存储组信息(组名、GID、成员列表)。
    • /etc/gshadow:存储组密码信息(较少使用)。

二、用户账号管理命令

1. 创建用户(useradd

用于新建用户账号,语法:

useradd [选项] 用户名

常用选项:

  • -u <UID>:指定用户的 UID(需确保唯一)。
  • -g <GID/组名>:指定用户的主组(默认会创建与用户名同名的组)。
  • -G <组1,组2>:指定用户的附加组(逗号分隔多个组)。
  • -d <家目录>:指定用户的家目录(默认/home/用户名)。
  • -s <shell路径>:指定用户的登录 shell(默认/bin/bash,禁止登录可设为/sbin/nologin)。
  • -m:自动创建家目录(默认创建,部分发行版需显式指定)。
  • -c <注释>:添加用户注释(如全名、用途)。

示例:

# 创建用户alice,主组为users,附加组为sudo,家目录为/home/alice,shell为bash
useradd -g users -G sudo -d /home/alice -s /bin/bash -c "Alice Smith" alice
2. 设置 / 修改密码(passwd

用于管理用户密码,语法:

passwd [选项] 用户名  # 不指定用户名则修改当前用户密码

常用选项:

  • -l:锁定用户(密码前加!,禁止登录)。
  • -u:解锁用户。
  • -d:删除用户密码(允许空密码登录,不推荐)。
  • -e:强制用户下次登录时修改密码。
  • -n <天数>:设置密码最小有效期(不能提前修改)。
  • -x <天数>:设置密码最大有效期(过期需修改)。

示例:

# 为alice设置密码(输入时无回显)
passwd alice# 强制alice下次登录修改密码
passwd -e alice
3. 修改用户信息(usermod

用于修改已有用户的属性,语法:

usermod [选项] 用户名

常用选项(与useradd类似,新增关键选项):

  • -aG <组>:追加附加组(需配合-G,否则会覆盖原有附加组)。
  • -l <新用户名>:修改用户名(家目录和 UID 不变)。
  • -m -d <新家目录>:移动家目录到新路径并更新配置。
  • -s <新shell>:修改登录 shell。

示例:

# 将alice的附加组新增docker
usermod -aG docker alice# 修改alice的用户名为alice_new,并移动家目录到/home/alice_new
usermod -l alice_new -m -d /home/alice_new alice
4. 删除用户(userdel

用于删除用户账号,语法:

userdel [选项] 用户名

常用选项:

  • -r:删除用户时同时删除家目录和邮件目录(默认仅删除账号信息)。

示例:

# 彻底删除alice(包括家目录)
userdel -r alice

⚠️ 注意:删除正在登录的用户可能导致文件残留,建议先确认用户已退出。

5. 查看用户信息
  • id:查看用户 UID、GID 及所属组:

    id alice  # 输出:uid=1001(alice) gid=100(users) groups=100(users),27(sudo),998(docker)
    
  • finger(需安装):查看用户详细信息(全名、登录时间等):

    finger alice
    
  • getent:从系统数据库中查询用户 / 组信息(兼容 NIS/LDAP 等):

    getent passwd alice  # 等价于查看/etc/passwd中alice的行
    

三、用户组管理

用户组用于批量管理权限,每个用户至少属于一个主组,可加入多个附加组。

1. 创建组(groupadd

语法:

groupadd [选项] 组名

选项:

  • -g <GID>:指定组的 GID。

示例:

# 创建GID为1005的组dev
groupadd -g 1005 dev
2. 修改组信息(groupmod

语法:

groupmod [选项] 组名

选项:

  • -g <新GID>:修改组的 GID。
  • -n <新组名>:修改组名。

示例:

# 将组dev改名为development
groupmod -n development dev
3. 删除组(groupdel

语法:

groupdel 组名  # 需确保组不是任何用户的主组,否则需先修改用户主组
4. 管理组成员(gpasswd

语法:

gpasswd [选项] 组名

常用选项:

  • -a <用户名>:添加用户到组。
  • -d <用户名>:从组中删除用户。
  • -M <用户1,用户2>:批量设置组成员(覆盖原有成员)。

示例:

# 将alice添加到development组
gpasswd -a alice development# 批量设置development组的成员为alice和bob
gpasswd -M alice,bob development

四、用户切换与权限提升

1. 切换用户(su

用于切换到其他用户身份,语法:

su [选项] 用户名  # 不指定用户名默认切换到root

选项:

  • - 或 -l:模拟完整登录环境(加载目标用户的环境变量)。
  • -c <命令>:以目标用户身份执行单个命令后返回当前用户。

示例:

# 切换到root并加载环境变量
su - root# 以alice身份执行ls命令
su - alice -c "ls /home/alice"
2. 权限提升(sudo

允许普通用户以 root 权限执行指定命令(需配置sudoers文件)。
配置方法:

  1. 执行 visudo 打开sudoers配置文件(自动校验语法,比直接编辑更安全)。
  2. 添加规则:

    bash

    # 允许alice执行所有命令(需输入alice自己的密码)
    alice  ALL=(ALL)   ALL# 允许sudo组成员执行所有命令(无需密码)
    %sudo  ALL=(ALL)   NOPASSWD: ALL
    

使用示例:

# 以root权限安装软件
sudo apt install nginx

五、用户登录相关操作

1. 查看当前登录用户(who/w
  • who:显示登录用户的用户名、终端、登录时间和 IP:

    bash

    who  # 输出:alice  pts/0  2025-08-04 10:00 (192.168.1.100)
    
  • w:在who基础上增加用户当前运行的命令和系统负载:

    bash

    w  # 显示更详细的登录用户活动信息
    
2. 强制用户 logout(pkill/kill

若需强制踢掉登录用户,先通过who获取其终端(如pts/0),再发送终止信号:

pkill -kill -t pts/0  # 强制终止pts/0终端的所有进程

六、用户管理最佳实践

  1. 最小权限原则:普通用户仅授予必要权限,避免直接使用 root 操作。
  2. 密码策略:通过passwd设置密码有效期,禁止空密码,推荐使用复杂密码(字母 + 数字 + 符号)。
  3. 定期清理:删除无用账号(userdel -r),锁定长期不使用的账号(passwd -l)。
  4. 使用 sudo 替代 su:通过sudoers精细控制权限,便于审计操作日志(日志位于/var/log/sudo.log/var/log/auth.log)。
  5. 避免修改系统用户:系统用户(如binsys)用于服务运行,随意修改可能导致服务异常。

通过上述命令和概念,可完成 Linux 用户从创建到删除、权限配置的全生命周期管理。合理的用户管理是保障系统安全和稳定运行的关键。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s常见问题

以下是 Kubernetes 常见问题&#xff08;FAQ&#xff09;的整理&#xff0c;涵盖了初学者和运维人员常遇到的痛点&#xff1a; ​一、部署与安装问题​ ​安装太复杂&#xff1f;​​ 解决方案&#xff1a;使用 ​kubeadm​&#xff08;官方工具&#xff09;、Minikube​&#…

RK Android14 新建分区恢复出厂设置分区数据不擦除及开机动画自定义(一)

文章目录 前言 一、分区创建与参数配置 二、分区挂载配置 三、SELinux 安全策略 四、系统初始化配置 五、开机动画路径重定向 总结 前言 本方案通过在 RK3568 Android 14 系统中创建一个独立的 rk_partition 分区(128MB),实现以下核心功能: 出厂设置保护:该分区在恢复出厂…

如何快速给PDF加书签--保姆级教程

买的电子书没有目录书签看着不舒服&#xff0c;手动加书签加到想吐。想有没有办法快速加书签。这要分为PDF目录部分可以被复制和不可被复制两种情况。不可复制时&#xff0c;要用到工具把目录提取出来&#xff0c;变成文字。 工具&#xff1a;Foxit Phantom福昕阅读器&#xff…

Redis面试精讲 Day 9:Redis模块开发与扩展

【Redis面试精讲 Day 9】Redis模块开发与扩展 文章标签 Redis,模块开发,扩展机制,面试技巧,Redis模块,Redis插件 文章简述 本文是"Redis面试精讲"系列第9天&#xff0c;聚焦Redis模块开发与扩展机制。文章详细解析Redis模块系统的架构设计&#xff0c;包括模块加…

八股训练--Spring

目录 一、引言 二、Spring 1.Spring框架的特性 2.介绍一下IOC和AOP 3.IOC和AOP都是如何实现的 4.怎么实现依赖注入 5.为什么AOP不用静态代理 6.介绍一下反射 7.Spring如何解决循环依赖问题 8.Spring常用注解 9.Spring事务什么情况会失效 10.Bean的生命周期 11.Bean…

无公网环境下在centos7.9上使用kk工具部署k8s平台(amd64架构)

文章目录前言一、环境列表二、思路三、环境准备四、有网环境下准备文件1.下载所需的rpm包2.准备harbor需要用到的镜像3. k8s的镜像文件4、 生成离线安装包5、harbor创建项目脚本五、无公网环境部署单点集群1、基础环境安装2、安装harbor3 、 准备k8s镜像4、安装k8s六、无公网环…

Objective-C中非传统设计模式的探索与实践

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;Objective-C的设计模式不仅仅局限于经典模式&#xff0c;还可以利用其动态特性实现一些非传统的模式。本文介绍了一系列基于Objective-C动态特性的设计模式&#xff0c;包括使用协议代替类继承、通过分类扩展类…

【笔记】重学单片机(51)(下)

中断系统 正常运行过程中&#xff0c;被打断进行另外工作&#xff0c;结束后回到原有进程。 5个中断源 外部中断源&#xff08;2个&#xff09;&#xff1a;INT0——由P3.2端口线引入&#xff0c;低电平或下降沿引起。INT1——由P3.3端口线引入&#xff0c;低电平或下降沿引起。…

Go实现程序启动器进而实现隐藏真实内容

注意&#xff1a; 本文内容于 2025-08-03 01:10:35 创建&#xff0c;可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容&#xff0c;请访问原文地址&#xff1a;Go实现程序启动器进而实现隐藏真实内容。感谢您的关注与支持&#xff01; 突发奇想&#xff0c;…

Fiddler 中文版怎么用 实现接口抓包调试与前后端联调闭环

API调试在现代开发流程中的地位愈发重要&#xff1a;接口数量激增、请求逻辑复杂、数据结构多变、安全校验机制加严……一个小小的参数错误、一次隐蔽的跨域问题、一个环境配置疏漏&#xff0c;都可能导致长时间的排查成本。而拥有一款既强大又易用的调试工具&#xff0c;尤其是…

ollama 多实例部署

如果我们需要在一台服务器上使用多个ollama服务&#xff0c;那么我们需要进行将ollama前端和ollama后端对应连接的操作&#xff0c;否则就会出现如下场景&#xff1a;我们可以在当前端口设置&#xff0c;这句话就是指明当前ollama实例使用哪个后端进行请求&#xff1a;export O…

orchestrator部署

场景&#xff1a; 用于管理MySQL高可用 下载jq包 每台orchestrator集群机器上都进行下载。 # wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # rpm -ivh epel-release-latest-7.noarch.rpm # yum repolist ###检查是否已经添加到源列表 # yum i…

CentOS 6.4 上安装 Oracle 10.2.0.1 并升级到 10.2.0.4

目录 一、系统检查与设置 1. 检查系统版本与磁盘空间 2. 修改系统参数 3. 创建组和用户 4. 设置主机名 5. 检查安装软件包 6. 设置 oracle 用户环境变量 二、安装 Oracle 软件包 1. 安装 10.2.0.1 安装包 2. 安装 10.2.0.4 补丁 三、建库 四、配置监听器 1. 编辑配…

【基于C# + HALCON的工业视系统开发实战】二十六、车规级PCB全自动质检:3D SPI+AI光学检测融合方案

摘要&#xff1a;本文详细阐述基于C# .NET Core 6与HALCON 24.11开发的车规级PCB板AOI智能检测系统&#xff0c;提出3D SPI与AI光学检测融合方案。系统通过结构光3D测量技术实现锡膏印刷质量检测&#xff0c;结合多算法融合的自动光学检测完成元件缺陷识别&#xff0c;构建SPI与…

Go源码解读——互斥锁与读写锁

互斥锁Mutextype Mutex struct {// 表示互斥锁状态state int32// 表示信号量&#xff0c;协程阻塞等待该信号量&#xff0c;解锁的协程释放信号量从而唤醒等待信号量的协程sema uint32 }Locked: 表示该Mutex是否已被锁定&#xff0c;0&#xff1a;没有锁定 1&#xff1a;已被锁…

Linux(centos)安全狗

sdui进入操作页面 [rootlocalhost safedog_an_linux64_2.8.32947]# sdui维护 查看、启动或停止服务。 [rootiZbp1f0xuq9rc41s6gdvfyZ /]# systemctl status safedog [rootiZbp1f0xuq9rc41s6gdvfyZ /]# systemctl start safedog [rootiZbp1f0xuq9rc41s6gdvfyZ /]# systemct…

ES9 / ES2018 正则表达式增强

✅ 一、命名捕获组&#xff08;Named Capture Groups&#xff09;给捕获结果起名字&#xff0c;更易读、更易维护。&#x1f539; 传统写法&#xff08;位置识别&#xff09;&#xff1a;const result /(\d{4})-(\d{2})-(\d{2})/.exec("2025-07-31"); console.log(…

深入Java开发:Token的全方位解析与实战指南(下)

深入Java开发&#xff1a;Token的全方位解析与实战指南&#xff08;下&#xff09; 上一篇 深入Java开发&#xff1a;Token的全方位解析与实战指南&#xff08;上&#xff09; 五、Token 的生命周期与管理 5.1 Token 的生命周期状态 Token 的生命周期涵盖了从创建到最终失效…

第二十四天(数据结构:栈和队列)队列实践请看下一篇

栈和队列栈 &#xff1a; 是限定在表尾进行插入和删除操作的线性表实现是一回事&#xff0c;但是必须要满足栈的基本特点它的设计思路是:先进后出&#xff0c;后进先出栈有两端1 栈顶(top) &#xff1a;插入数据删除数据都只能在这一端访问也只能访问栈顶2 栈底(bottom) : 栈底…

三、Spark 运行环境部署:全面掌握四种核心模式

作者&#xff1a;IvanCodes 日期&#xff1a;2025年7月25日 专栏&#xff1a;Spark教程 Apache Spark 作为统一的大数据分析引擎&#xff0c;以其高性能和灵活性著称。要充分利用Spark的强大能力&#xff0c;首先需要根据不同的应用场景和资源环境&#xff0c;正确地部署其运行…