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

【Linux命令大全】004.系统管理之adduser命令(实操篇)

【Linux命令大全】004.系统管理之adduser命令(实操篇)

✨ 本文为Linux系统管理命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。

(关注不迷路哈!!!)

文章目录

  • 【Linux命令大全】004.系统管理之adduser命令(实操篇)
    • 一、功能与作用
    • 二、基本用法
      • 1. 创建新用户
      • 2. 指定登录shell
      • 3. 创建无密码用户
      • 4. 查看默认配置
      • 5. 快速创建用户
      • 6. 创建系统用户
    • 三、高级用法
      • 1. 自定义用户信息
      • 2. 指定用户ID和组
      • 3. 不创建主目录
      • 4. 配置模板目录
      • 5. 批量创建用户
      • 6. 与其他命令结合使用
    • 四、实用技巧与常见问题
      • 实用技巧
      • 常见问题
    • 五、总结

一、功能与作用

adduser命令是Linux系统中的一个用户账户创建工具,它是useradd命令的高级封装,通常提供交互式界面,引导用户设置用户名、密码、主目录等信息。adduser命令在Debian/Ubuntu等系统中特别常用,它会自动创建用户主目录、设置默认shell、复制skel文件等,极大简化了用户创建过程,适合系统管理员日常使用。

参数详解

参数说明
-D显示默认配置
-h显示帮助信息
-s shell指定登录 shell
--disabled-password创建无密码用户
--gecos GECOS设置用户的GECOS字段
--no-create-home不创建主目录
--uid UID指定用户ID

二、基本用法

1. 创建新用户

使用adduser命令最基本的功能是创建新用户,系统会引导你完成一系列设置:

# 创建新用户,系统会引导设置密码等信息sudoadduser john# 执行过程示例# Enter new UNIX password: # 输入密码# Retype new UNIX password: # 确认密码# passwd: password updated successfully# Changing the user information for john# Enter the new value, or press ENTER for the default# Full Name []: John Doe# Room Number []: 101# Work Phone []: 123-4567# Home Phone []: 987-6543# Other []:# Is the information correct? [Y/n] y

2. 指定登录shell

使用-s参数可以指定用户的登录shell:

# 创建用户并指定bash作为登录shellsudoadduser -s /bin/bash alice# 创建用户并指定zsh作为登录shellsudoadduser -s /bin/zsh bob# 创建用户并指定dash作为登录shellsudoadduser -s /bin/dash charlie# 创建无法登录的系统用户(使用nologin)sudoadduser -s /sbin/nologin systemuser

3. 创建无密码用户

使用--disabled-password参数可以创建无密码用户,用户无法使用密码登录,但可以通过其他方式(如SSH密钥)登录:

# 创建无密码用户sudoadduser --disabled-password dave# 为无密码用户设置SSH密钥登录(需要手动配置)sudomkdir-p /home/dave/.sshsudochmod700/home/dave/.sshsudotouch/home/dave/.ssh/authorized_keyssudochmod600/home/dave/.ssh/authorized_keyssudochown-R dave:dave /home/dave/.ssh# 然后将公钥添加到authorized_keys文件中

4. 查看默认配置

使用-D参数可以查看adduser命令的默认配置:

# 查看adduser默认配置sudoadduser -D# 输出示例# GROUP=100# HOME=/home# INACTIVE=-1# EXPIRE=# SHELL=/bin/bash# SKEL=/etc/skel# CREATE_MAIL_SPOOL=no

5. 快速创建用户

如果你已经熟悉流程,可以使用非交互式方式快速创建用户:

# 非交互式创建用户(仅指定用户名)sudoadduser --gecos""--disabled-password eve# 完全自动化创建用户(在脚本中使用)sudoadduser --gecos"Test User"--disabled-password --quiet frank# 创建用户并自动设置密码(在脚本中使用)# 注意:这种方式密码会明文显示在命令历史中,仅在安全环境下使用echo"george:Password123"|sudochpasswdsudoadduser --gecos"George User"george

6. 创建系统用户

使用--system参数可以创建系统用户(通常用于运行服务):

# 创建系统用户sudoadduser --system --group --no-create-home mysql# 创建系统用户并指定shellsudoadduser --system --shell /bin/false nginx# 创建系统用户并指定UIDsudoadduser --system --uid999apache

三、高级用法

1. 自定义用户信息

使用--gecos参数可以自定义用户的GECOS字段(包含全名、办公室、电话等信息):

# 自定义用户信息sudoadduser --gecos"Alice Smith,IT Department,123-4567,987-6543"alice# 仅设置全名sudoadduser --gecos"Bob Johnson"bob# 清空所有GECOS字段sudoadduser --gecos""charlie

2. 指定用户ID和组

使用--uid参数可以指定用户ID,使用--gid参数可以指定用户的主组ID:

# 指定用户ID和主组IDsudoadduser --uid1001--gid1001david# 指定用户ID和主组名sudoadduser --uid1002--gid developers emily# 创建用户并添加到多个附加组sudoadduser franksudousermod-aG sudo,admins,developers frank

3. 不创建主目录

使用--no-create-home参数可以创建用户但不创建对应的主目录:

# 创建用户但不创建主目录sudoadduser --no-create-home guest# 创建系统用户且不创建主目录sudoadduser --system --no-create-home serviceuser# 创建用户不创建主目录但指定shellsudoadduser --no-create-home --shell /bin/rbash tempuser

4. 配置模板目录

adduser命令会从模板目录(默认为/etc/skel)复制默认配置文件到新用户的主目录。你可以自定义这个模板目录:

# 创建自定义模板目录mkdir-p /etc/custom-skelcp-r /etc/skel/.bashrc /etc/skel/.profile /etc/custom-skel/# 编辑自定义模板文件nano/etc/custom-skel/.bashrc# 使用自定义模板目录创建用户sudoadduser --skel /etc/custom-skel grace# 验证模板文件是否已复制ls-la /home/grace/

5. 批量创建用户

在系统管理中,有时需要批量创建多个用户。可以编写简单的脚本来实现:

# 创建批量用户脚本cat>create_users.sh<<'EOF' #!/bin/bash # 检查是否以root权限运行 if [ "$EUID" -ne 0 ] then echo "请以root权限运行此脚本" exit fi # 从文件读取用户名列表 if [ -f "$1" ] then # 读取文件中的每个用户名 while IFS= read -r username do # 跳过空行和注释行 if [[ -z "$username" || "$username" == \#* ]]; then continue fi echo "正在创建用户: $username" # 创建用户 adduser --gecos "" --disabled-password "$username" # 为用户设置默认密码 echo "$username:ChangeMe123" | chpasswd # 强制用户首次登录时修改密码 chage -d 0 "$username" echo "用户 $username 创建完成" done < "$1" else echo "用法: $0 <用户列表文件>" exit 1 fi EOF# 使脚本可执行chmod+x create_users.sh# 创建用户列表文件echo"user1\nuser2\nuser3">user_list.txt# 运行脚本批量创建用户sudo./create_users.sh user_list.txt

6. 与其他命令结合使用

adduser命令可以与其他命令结合使用,实现更复杂的用户管理任务:

# 创建用户并添加到sudo组sudoadduser john&&sudousermod-aGsudojohn# 创建用户并设置密码过期策略sudoadduser marysudochage -M90-W14mary# 创建用户并设置主目录权限sudoadduser petersudochmod700/home/peter# 创建用户并配置SSH密钥登录sudoadduser paulsudomkdir-p /home/paul/.sshsudochmod700/home/paul/.sshecho"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3..."|sudotee/home/paul/.ssh/authorized_keyssudochmod600/home/paul/.ssh/authorized_keyssudochown-R paul:paul /home/paul/.ssh

四、实用技巧与常见问题

实用技巧

  1. 查看用户列表:使用cut命令可以快速查看系统中的用户列表:

    # 查看系统中的用户列表cut-d: -f1 /etc/passwd# 查看最近创建的用户tail-n10/etc/passwd
  2. 检查用户是否存在:在创建用户前,可以先检查该用户是否已存在:

    # 检查用户是否存在ifid"john"&>/dev/null;thenecho"用户 john 已存在"elseecho"用户 john 不存在,正在创建..."sudoadduser johnfi
  3. 复制用户配置:如果你想创建一个与现有用户配置相似的新用户,可以复制其主目录和设置:

    # 创建新用户sudoadduser newuser# 复制现有用户的配置(假设现有用户为olduser)sudocp-r /home/olduser/.bashrc /home/olduser/.profile /home/olduser/.vimrc /home/newuser/sudochown-R newuser:newuser /home/newuser
  4. 设置用户资源限制:可以通过编辑/etc/security/limits.conf文件来设置用户的资源限制:

    # 编辑资源限制文件sudonano/etc/security/limits.conf# 添加以下行来设置用户john的资源限制# john soft nofile 4096# john hard nofile 8192# john soft nproc 1024# john hard nproc 2048
  5. 创建临时用户:对于临时使用的用户,可以设置过期时间:

    # 创建临时用户,有效期为7天sudoadduser tempusersudochage -E$(date-d"+7 days"+%Y-%m-%d)tempuser# 查看用户过期信息sudochage -l tempuser

常见问题

  1. 权限不足adduser命令需要管理员权限才能运行,确保使用sudo或以root用户身份执行。

    # 正确的使用方式sudoadduser username# 错误的使用方式(会提示权限不足)adduser username
  2. 用户已存在:如果尝试创建的用户名已经存在,adduser命令会提示错误。使用id命令检查用户是否存在:

    # 检查用户是否存在idusername# 如果用户存在,可以使用usermod命令修改用户属性,或使用其他用户名
  3. 主目录已存在:如果尝试创建的用户主目录已经存在,adduser命令会提示错误。可以选择使用其他用户名,或使用--no-create-home参数:

    # 使用其他用户名sudoadduser otherusername# 不创建主目录sudoadduser --no-create-home username
  4. 密码复杂度要求:现代Linux系统通常有密码复杂度要求,如果设置的密码过于简单,adduser命令会拒绝设置。确保密码包含大小写字母、数字和特殊字符:

    # 示例:设置符合复杂度要求的密码# Good: MySecur3P@ssw0rd# Bad: password123
  5. 与useradd命令的区别:在Debian/Ubuntu系统中,adduser是一个高级脚本,而useradd是一个底层命令。adduser提供交互式界面,而useradd需要手动指定所有选项。

    # adduser(交互式,自动创建主目录等)sudoadduser username# useradd(非交互式,需要手动指定选项)sudouseradd-m -s /bin/bash usernamesudopasswdusername

五、总结

adduser命令是Linux系统中一个功能强大的用户创建工具,它提供了交互式界面和丰富的选项,极大简化了用户创建过程。通过本文的详细介绍和实例,相信您已经掌握了adduser命令的基本用法和高级技巧,可以在日常系统管理工作中灵活运用这个工具来创建和管理用户账户。无论是创建普通用户、系统用户,还是批量创建用户,adduser命令都能满足您的需求。同时,我们也介绍了一些实用技巧和常见问题的解决方法,帮助您在使用adduser命令时更加得心应手。

http://www.jsqmd.com/news/214735/

相关文章:

  • BongoCat桌面宠物完全指南:打造你的专属互动伴侣
  • MGeo地址匹配系统日志分析技巧
  • 如何通过MGeo提升CRM系统地址质量
  • 是否该选Z-Image-Turbo?一文看懂它与Midjourney的核心差异
  • 从国内火到CES:上纬启元Q1引爆拉斯维加斯
  • AI如何自动生成USB设备检测工具代码
  • Scarab空洞骑士模组管理器:5分钟从零开始轻松管理游戏模组
  • 大模型入门必读:预训练语言模型与通用文本嵌入技术详解(建议收藏)
  • 如何用MGeo辅助地址数据库去重
  • AI内容生产革命:开源图像模型+自动化流程重塑创意行业
  • AI自动提交工具:一键完成搜索引擎收录
  • 性能调优手册:Z-Image-Turbo conda环境优化实战
  • 如何用MGeo辅助房地产中介房源去重
  • LangGPT结构化提示词:从零构建AI高效对话体系
  • MGeo地址匹配系统容量规划方法
  • AI辅助UI设计:Z-Image-Turbo生成界面原型图
  • ddu官网客户案例:某车企使用Z-Image-Turbo经历
  • AI助力InnoSetup:自动生成安装包脚本的智能方案
  • 1小时搭建虚拟串口通信原型验证你的创意
  • 多智能体协作 (Multi-Agent) 落地:CrewAI + Python 打造“全自动软件开发组”
  • 油管视频封面生成:Z-Image-Turbo批量制作方案
  • MGeo在医疗健康档案地址归并中的作用
  • ComfyUI离线安装终极指南:三步掌握ZIP包部署技巧
  • 鸿蒙版“元服务”开发:仿美团“骑车”卡片,代码量只有安卓的 1/3?
  • GELU激活函数:AI如何优化神经网络性能
  • 鸿蒙 Next 纯血版实战:如何复用你现有的 TypeScript 工具库?(拒绝重复造轮子)
  • AI信息流服务系统:让信息精准找到你的技术逻辑
  • AI如何优化SYSTEM.ARRAYCOPY的代码实现
  • 西门子S7 - 300与S7-200smart以太网通讯例程分享
  • MGeo在税务系统纳税人地址核验中的应用