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

linux的用户操作(详细介绍)

在 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.dtcms.com/a/315361.html

相关文章:

  • 牛客笔试题错题整理(1)
  • Field and wave electromagnetics 复习
  • 【编程实践】点云曲率计算与可视化
  • Pimpl惯用法
  • 【秋招笔试】2025.08.03虾皮秋招笔试-第二题
  • [GYCTF2020]FlaskApp
  • 0804 进程
  • 【笔记】重学单片机(51)(下)
  • 数据结构——并查集及C++实现
  • Javascript面试题及详细答案150道(046-060)
  • 5天从0到1!用阿里Qwen3-Coder开发故障调度指挥室系统,运维也能搞定开发
  • 嵌入式 C 语言入门:函数指针基础笔记 —— 从计算器优化到指针本质
  • 文本转语音(TTS)脚本
  • 【项目实践】在系统接入天气api,根据当前天气提醒,做好plan
  • C语言的控制语句
  • 16day-人工智学习-机器学习-特征工程
  • 【世纪龙科技】虚拟技术助力职教汽车自动变速器拆装虚拟实训软件
  • RFID技术在汽车倍速链中的应用:驱动智能制造的隐形引擎
  • Windows/Linux入侵排查
  • CPP学习之多态
  • Python高频元素分析技术:高效找出序列中出现次数最多的元素
  • 【Unity3D实例-功能-镜头】第三人称视觉
  • FeiQ飞秋安装教程:FeiQ.1060559168 详细安装步骤(附注意事项)​
  • 【QT】常⽤控件详解(三)常用按钮控件PushButton RadioButton CheckButton Tool Button
  • 茗鹤工业低代码可视化技术开发平台
  • 网络相关命令
  • 全国计算机二级C语言二级考试通关笔记
  • 风光储并网协同运行simulink仿真模型实现
  • [找出字符串中第一个匹配项的下标]
  • MiDSS复现