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

用户与组管理命令

用户与组管理

一、用户操作

常用命令:useraddusermod 、passwd 、userdel

1、useradd

(1)、命令简介

useradd 是 Linux 系统中用于创建新用户账户的核心命令,通常需要 root 权限执行。

(2)、命令选项清单

#命令语法:useradd [选项] 用户名
#选项		说明
-m		创建用户家目录(通常为 /home/用户名)
-d		指定自定义家目录路径(如 -d /data/user1)
-s		指定登录 shell(如 -s /bin/bash)
-g		指定主用户组(可接组名或GID)
-G		指定附加用户组(多个组用逗号分隔)
-u		指定用户UID(如 -u 1005)
-c		添加用户备注/全名(如 -c "张三")
-e		设置账户过期日期(格式:YYYY-MM-DD)
-f		密码过期后宽限天数(0=立即禁用,-1=不限制)
-p		设置加密后的密码(不安全,建议用 passwd)
-r		创建系统账户(无家目录,UID<1000)
-k		指定骨架目录(默认 /etc/skel)

(3)、常用命令示例

创建普通用户

sudo useradd -m -s /bin/bash username
#-m 创建家目录
#-s 设置默认 shell

创建带备注的用户

sudo useradd -m -c "开发人员" -s /bin/bash devuser

创建指定UID的用户

sudo useradd -u 1500 -g developers -G docker,sudo newadmin
#-u 1500 指定UID
#-g developers 设置主组
#-G docker,sudo 加入附加组

创建系统账户(用于服务)

sudo useradd -r -s /usr/sbin/nologin mysql
#-r 创建系统账户
#-s /usr/sbin/nologin 禁止登录

创建用户时指定密码(不推荐)

sudo useradd -m -p $(openssl passwd -1 "mypassword") user1
#密码会出现在命令历史中,建议创建后用 passwd 设置:
sudo passwd username

用户信息验证,创建后检查用户信息

id username  # 查看UID/GID信息
finger username  # 查看用户详情(需安装finger包)
getent passwd username  # 查看账户配置

2、usermod

(1)、命令简介

usermod 是 Linux 系统中用于修改现有用户账户属性的命令,需要 root 权限执行。

(2)、命令选项清单

#命令语法:usermod [选项] 用户名
#选项		说明
-d		修改家目录路径(需配合 -m 移动内容)
-m		与 -d 联用,将旧家目录内容移至新位置
-s		修改用户登录 shell(如 /bin/bash 或 /sbin/nologin)
-g		修改用户主组(组名或GID)
-G		修改用户附加组(覆盖原有附加组,用逗号分隔)
-aG		追加附加组(不覆盖原有组)
-u		修改用户UID
-c		修改用户备注/全名
-l		修改用户名(登录名)
-e		修改账户过期日期(格式:YYYY-MM-DD)
-f		修改密码过期后宽限天数
-L		锁定用户账户
-U		解锁用户账户

(3)、常用命令示例

修改用户登录名

sudo usermod -l newname oldname
#以上操作不会自动修改家目录名,需额外操作:
sudo usermod -d /home/newname -m newname

修改用户主组

sudo usermod -g developers username

追加附加组

sudo usermod -aG sudo,docker username
#-aG 会保留原有附加组

修改家目录并迁移内容

sudo usermod -d /new/home/path -m username

修改用户UID

sudo usermod -u 1500 username

锁定/解锁账户

sudo usermod -L username  # 锁定
sudo usermod -U username  # 解锁

修改用户默认shell

sudo usermod -s /sbin/nologin username  # 禁止登录
sudo usermod -s /bin/bash username     # 允许登录

设置账户过期时间

sudo usermod -e 2024-12-31 username

验证修改

id username           # 查看用户组信息
finger username       # 查看用户详情
getent passwd username # 查看账户配置
ls -ld /home/username # 检查家目录权限

3、passwd

(1)、命令简介

passwd 是 Linux 系统中用于管理用户密码的核心命令,可以修改用户密码、设置密码策略等。

(2)、命令选项清单

#命令语法:passwd [选项] [用户名]
#选项		说明
-l		锁定用户密码(禁止登录)
-u		解锁用户密码
-d		删除用户密码(允许无密码登录)
-e		强制用户下次登录时修改密码
-n		设置密码最短使用天数
-x		设置密码最长使用天数
-w		设置密码过期前警告天数
-i		设置密码过期后宽限天数
-S		显示密码状态信息
-k		只更新过期的密码
-a		与-S联用,显示所有用户密码状态

(3)、常用命令示例

修改当前用户密码

passwd
#系统会提示输入当前密码和新密码

修改其他用户密码(需root权限)

sudo passwd username

锁定/解锁用户密码

sudo passwd -l username  # 锁定
sudo passwd -u username  # 解锁

删除用户密码

sudo passwd -d username  # 允许无密码登录(不安全)

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

sudo passwd -e username

设置密码策略

sudo passwd -n 7 -x 30 -w 7 username
#密码最少使用7天
#密码最多使用30天
#过期前7天开始警告

查看密码状态

sudo passwd -S username
#输出示例:
username P 05/10/2023 0 99999 7 -1
#字段说明:用户名 状态(L/P/NP) 最后修改日期 最小天数 最大天数 警告天数 不活动天数

显示所有用户密码状态

sudo passwd -Sa

批量修改用户密码

echo "username:newpassword" | chpasswd

生成随机密码

openssl rand -base64 12 | passwd --stdin username

检查密码是否过期

chage -l username

设置密码过期时间

chage -E YYYY-MM-DD username

密码策略配置文件
passwd 行为受以下文件影响:

/etc/pam.d/passwd - PAM 密码策略配置
/etc/login.defs - 密码过期默认设置
/etc/security/pwquality.conf - 密码复杂度要求

4、userdel

(1)、命令简介

userdel 是 Linux 系统中用于删除用户账户的命令,通常需要 root 权限执行。

(2)、命令选项清单

#命令语法:userdel [选项] 用户名
#选项		说明
-r		同时删除用户家目录和邮件池
-f		强制删除,即使用户已登录
-Z		同时删除用户的 SELinux 用户映射

(3)、常用命令示例

基本删除用户(保留家目录)

sudo userdel username
#只删除 /etc/passwd、/etc/shadow、/etc/group 中的用户信息
#家目录和邮件池(/var/mail/username)会保留

完全删除用户(包括家目录)

sudo userdel -r username
#同时删除 /home/username 目录
#删除 /var/mail/username 邮件池

强制删除已登录用户

sudo userdel -f username
#属于危险操作,可能导致该用户运行中的程序异常

删除用户并清理 SELinux 映射

sudo userdel -Z username

批量删除用户

sudo userdel -r user1 user2 user3

验证删除

id username  # 检查用户是否已删除
ls /home     # 检查家目录是否删除(如使用 -r 选项)

删除操作会影响以下文件:

/etc/passwd - 用户账户信息
/etc/shadow - 用户密码信息
/etc/group - 组信息
/etc/gshadow - 组密码信息
/home/username - 用户家目录(使用 -r 时)
/var/mail/username - 用户邮件池(使用 -r 时)

二、组操作

**常用命令:**groupadd、groupdel

1、groupadd

(1)、命令简介

groupadd 是 Linux 系统中用于创建新用户组的命令,需要管理员权限执行。

(2)、命令选项清单

#命令语法:groupadd [选项] 组名
#选项		说明
-g		指定组ID (GID)
-r		创建系统组 (GID 范围通常为 1-999)
-f		强制创建 (组已存在时忽略错误)
-o		允许使用重复的 GID
-p		设置组密码 (不建议直接使用)
-K		覆盖 /etc/login.defs 中的默认值

(3)、常用命令示例

创建普通用户组

sudo groupadd developers

创建指定 GID 的用户组

sudo groupadd -g 1500 admins

创建系统组

sudo groupadd -r systemgroup

强制创建组 (忽略已存在错误)

sudo groupadd -f developers

创建共享 GID 的组

sudo groupadd -o -g 1005 sharedgroup

自定义密码加密方法创建组

sudo groupadd -p '$6$salt$hashedpassword' securegroup
#不推荐直接设置密码,建议使用 gpasswd

验证创建

getent group 组名  # 查看组信息
grep 组名 /etc/group  # 检查组配置

**groupadd 行为受以下配置文件影响:**

/etc/login.defs - 定义 GID 范围等默认值
/etc/group - 用户组信息存储文件
/etc/gshadow - 组密码信息存储文件

**2、**groupdel

(1)、命令简介

groupdel 是 Linux 系统中用于删除用户组的命令,需要管理员权限执行。

(2)、命令选项清单

#命令语法:groupdel [选项] 组名
#选项		说明
-f		强制删除,即使组是某用户的主组
-h		显示帮助信息
-R		更改根目录(chroot)应用

(3)、常用命令示例

基本删除用户组

sudo groupdel developers

**强制删除用户组(即使是用作主组)**

sudo groupdel -f developers
#属于危险操作,可能导致某些用户无法正常使用

在 chroot 环境下删除组

sudo groupdel -R /mnt/chroot guestgrou

验证删除

getent group 组名  # 检查组是否已删除
grep 组名 /etc/group /etc/gshadow  # 检查组配置是否清除

安全删除流程

#检查组成员
grep 组名 /etc/group#修改相关用户主组
sudo usermod -g newgroup username#修改文件归属
sudo find / -group 组名 -exec chgrp newgroup {} \;#删除组
sudo groupdel 组名

批量删除组

for group in grp1 grp2 grp3; do sudo groupdel $group; done

删除操作会影响以下文件:

/etc/group - 用户组信息
/etc/gshadow - 组密码信息
http://www.lryc.cn/news/610350.html

相关文章:

  • 小实验:按键点灯(中断法)
  • 【笔记】ROS1|5 ARP攻击Turtlebot3汉堡Burger并解析移动报文【旧文转载】
  • traefik网关鉴权中间件转发multipart/form-data请求的multipart: NextPart: EOF问题
  • LLM大模型时代:生活服务领域的“生存革命“与新生态重构
  • 深度学习-卷积神经网络CNN-卷积层
  • 探索机器学习在医疗领域的应用与挑战
  • Flask 项目 Windows 服务器部署全流程
  • C++信息学奥赛一本通-第一部分-基础一-第一章
  • RTX5060显卡安装cuda版本PyTorch踩坑记录
  • 深度解析:CPU 与 GPU 上的张量运算,为何“快”与“慢”并非绝对?
  • chatgpt plus简单得,不需要求人,不需要野卡,不需要合租,不需要昂贵的价格
  • 从 0 到 1 开发图书管理系统:飞算 JavaAI 让技术落地更简单
  • Oracle MCP Server简单配置以及备份调用
  • Oracle EBS ERP接口开发 — 修复bug基本流程
  • Calcite自定义扩展SQL案例详细流程篇
  • Centos Docker 安装手册(可用)
  • el-table高度自适应vue页面指令
  • Mac中M系列芯片采用rbenv管理ruby版本
  • 板子指示灯状态设计
  • 2SA2016-TD-E ON安森美 功率晶体管 0.18Ω超低压降+30MHz高频 工业电源专用
  • C语言的指针
  • python采集拍立淘按图搜索API接口,json数据参考
  • 2.4.3-2.4.8控制成本-控制资源-监督沟通-监督干系人-监督风险-控制采购
  • 每日任务day0804:小小勇者成长记之药剂师的小咪
  • 断点续传Demo实现
  • 【目标检测基础】——yolo学习
  • 设备电机状态监测中的故障诊断与定位策略
  • HCIP笔记1
  • 微信小程序本地存储与Cookie的区别
  • 【node】如何开发一个生成token的接口