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

Linux用户管理命令:su与useradd

摘要

详解Linux用户管理核心命令su与useradd,涵盖身份切换、用户创建、权限配置及常见问题处理,提供安全使用建议与高效操作技巧。

一、用户身份切换:su命令详解

1. 核心功能与基础语法

su(Switch User)命令用于在不注销当前会话的情况下切换用户身份,是Linux系统管理员进行权限管理的核心工具。

基础语法

su [选项] [目标用户]

2. 常用选项与示例

选项功能说明使用示例
--l完全模拟用户登录环境su - root
-c以目标用户身份执行单条命令su -c "apt update" root
-s指定Shell解释器su -s /bin/zsh devuser

典型场景

# 切换到root用户(需输入root密码)
(su - 会同时切换环境变量,su 则不会切换环境变量,容易出错,一般用su - )
su - root# 以普通用户身份执行特权命令
su -c "systemctl restart nginx" root# 切换用户并保留当前环境变量
su devuser

二、用户创建:useradd命令详解

1. 命令功能与基础语法

useradd用于创建新用户账户,是Linux系统用户管理的基石。

基础语法

useradd [选项] 用户名

2. 关键参数解析

参数功能说明示例
-m创建用户家目录useradd -m alice
-d指定家目录路径useradd -d /data/alice
-g设置主组useradd -g developers bob
-G添加附属组useradd -G docker,git carol
-s指定默认Shelluseradd -s /bin/bash dave
-u手动指定用户UIDuseradd -u 1005 eve

完整用户创建流程

# 创建用户并初始化
sudo useradd -m -s /bin/bash -G developers,docker devuser
sudo passwd devuser  # 设置密码

三、suuseradd进阶技巧

1. su的安全使用实践

  • 避免直接使用root账户:推荐通过sudo su -切换

  • 限制切换权限:通过/etc/pam.d/su配置文件限制允许切换的用户组

    # 仅允许wheel组用户使用su
    auth required pam_wheel.so use_uid

2. useradd高级配置

自定义用户模板

# 修改默认配置(/etc/default/useradd)
SHELL=/bin/zsh
HOME=/home/users
SKEL=/etc/skel_custom  # 自定义初始配置文件

批量创建用户

# 结合脚本自动化创建
for user in alice bob charlie; douseradd -m -s /bin/bash $userecho "$user:Pass123!" | chpasswd
done

四、常见问题解决方案

1. su切换失败排查

错误现象可能原因解决方案
"Authentication failure"密码错误确认目标用户密码正确性
"su: cannot open session"目标用户Shell未正确配置检查/etc/passwd中Shell路径

2. useradd常见报错处理

错误信息原因分析修复方法
"useradd: user 'xxx' already exists"用户名重复更换用户名或删除旧账户
"useradd: cannot create directory"家目录权限不足检查父目录权限或使用-d参数

五、命令对比与最佳实践

1. susudo的核心区别

特性susudo
认证方式需目标用户密码需当前用户密码
权限范围完全切换用户身份按策略执行特定命令
日志审计需手动配置默认记录详细日志

2. useraddadduser的区别

特性useraddadduser(Debian系)
交互性无交互,需手动配置交互式引导用户创建
默认配置依赖/etc/default/useradd自动创建家目录/Skel
适用场景脚本批量创建用户手动创建单个用户
http://www.xdnf.cn/news/2832.html

相关文章:

  • 常用网址合集
  • 如何利用表格解决 Python 嵌套循环难题
  • SDK游戏盾、高防IP、高防CDN三者的区别与选型指南
  • 海外独立站VUE3加载优化
  • 第二届材料工程与智能制造国际学术会议
  • 【QinAgent应用案例】从开发到管理,QinAgent为某智能家居企业提效50%,降本20%
  • Airbnb更智能的搜索:嵌入式检索(Embedding-Based Retrieval,EBR)工作原理解析
  • git 如何清空当前分支的历史提交记录,仅保留最后一次提交
  • Vue3中Hooks与普通函数的区别
  • Python pip下载包及依赖到指定文件夹
  • 23.开关电源干扰控制的EMC改善措施
  • 正常流布局
  • Terraform的加密功能
  • 解决 Win11/Win10 “为了对电脑进行保护,已经阻止此应用”问题
  • Linux环境变量配置与std访问环境变量
  • 【Linux实践系列】:进程间通信:万字详解命名管道实现通信
  • 谷歌浏览器如何优化网页的视频播放体验【提升播放效果】
  • 二极管钳位电路——Multisim电路仿真
  • 数组滑动窗口单调栈单调队列trick集【leetcode hot100 c++速查!!!】
  • 遇到前后端半分离老项目的速度解决方法
  • 如何选择合适的RFID手持终端设备?
  • 【C++QT】Item Views 项目视图控件详解
  • Nginx支持HTTP2/HTTP3的并用CURL测试
  • RSYNC命令使用详解
  • JLink,程序烧写流程、步骤
  • 阿里语音处理工具ClearerVoice-Studio项目上手指南
  • 2302. 统计得分小于 K 的子数组数目 滑动窗口 or 前缀和+二分
  • 6. 页面对象开发的第一种实现方式:页面继承
  • 应用在通信网络设备的爱普生晶振SG2016CBN
  • Matplotlib可视化基础