Linux如何创建新用户?

在Linux系统中,用户管理是系统运维的基础操作之一,创建新用户是确保系统安全、实现多用户协作的关键步骤,Linux通过用户(User)和用户组(Group)的概念实现权限隔离,每个用户拥有唯一的UID(用户标识符)和GID(组标识符),通过权限控制文件访问、命令执行等操作,本文将详细介绍Linux中创建新用户的方法、常用参数及相关管理操作,帮助用户全面掌握用户管理技能。

linux如何创建新用户

Linux用户管理基础

Linux用户分为三类:超级用户(root,UID为0)、系统用户(UID通常为1-999,用于运行系统服务)和普通用户(UID通常从1000开始,供日常使用),创建新用户时,系统会默认为其分配一个UID,并创建一个同名用户组作为主用户组(GID与UID相同),同时在家目录(/home/用户名)下生成用户配置文件(如.bashrc、.profile等),确保用户拥有独立的操作环境。

创建用户的核心命令主要有两个:useradd(低级命令,功能灵活但参数较多)和adduser(高级命令,交互式操作,适合新手),两者均可完成用户创建,但useradd更适合脚本自动化,而adduser更适合手动操作。

使用useradd创建新用户

useradd是Linux中最基础的创建用户命令,通过参数可以灵活控制用户属性(如UID、家目录、登录Shell等),其基本语法为:

useradd [选项] 用户名

常用参数说明

为方便理解,以下通过表格列举useradd的常用参数及作用:

参数 说明 示例
-u 指定用户的UID(需确保唯一) useradd -u 2000 testuser
-d 指定用户家目录(默认为/home/用户名) useradd -d /data/test testuser
-m 自动创建家目录(若未指定-d,则默认创建/home/用户名) useradd -m testuser
-s 指定登录Shell(默认为/bin/bash,可设置为/bin/nologin禁止登录) useradd -s /bin/sh testuser
-g 指定主用户组(需提前存在,或使用-G添加附加组) useradd -g developers testuser
-G 指定附加用户组(多个组用逗号分隔) useradd -G sudo,docker testuser
-c 添加用户注释信息(如用户全名) useradd -c "Test User" testuser
-r 创建系统用户(无家目录、Shell为/bin/false,UID在系统范围内) useradd -r systemd-network
-p 指定初始密码(不推荐,密码明文显示;建议创建后用passwd设置) useradd -p 123456 testuser

示例操作

  1. 创建普通用户(默认方式)
    执行useradd testuser,系统会自动创建名为testuser的用户,UID从1000开始递增,家目录为/home/testuser,Shell为/bin/bash,并创建同名主用户组testuser

  2. 创建带自定义属性的用户
    若需指定UID、家目录和附加组,可执行:

    useradd -u 1500 -d /opt/custom -m -G sudo,developers -c "Developer User" devuser

    该命令会创建用户devuser,UID为1500,家目录为/opt/custom(自动创建),附加组为sudodevelopers,注释为“Developer User”。

  3. 创建系统用户
    运行系统服务(如MySQL、Nginx)时,需创建无登录权限的系统用户:

    useradd -r -s /bin/false nginx

    此处-r表示系统用户,-s /bin/false禁止其通过Shell登录。

使用adduser创建新用户

adduseruseradd的封装工具,在Debian/Ubuntu等发行版中默认安装,采用交互式提示引导用户输入信息,无需记忆复杂参数,适合新手使用,其基本语法为:

adduser [选项] 用户名

示例操作

执行adduser newuser后,系统会依次提示:

linux如何创建新用户

  • 用户名(默认直接回车使用命令中的用户名)
  • 初始密码(需输入两次,不显示明文)
  • 用户全名(可选,直接回车跳过)
  • 房间号、电话等额外信息(均可选,回车跳过)
  • 确认信息(输入Y确认创建)
sudo adduser alice
# 输出:
# Adding user 'alice' ...
# Adding new group 'alice' (1001) ...
# Adding new user 'alice' (1001) with group 'alice' ...
# Create home '/home/alice'? [y/N] y  # 确认创建家目录
# Copying files from '/etc/skel' ...   # 从模板目录复制配置文件
# New password:                        # 输入密码
# Retype new password:                 # 确认密码
# passwd: password updated successfully
# Changing the user information for alice
# Enter the new value, or press ENTER for the default
#         Full Name []: Alice Wang      # 用户全名
#         Room Number []: 
#         Work Phone []: 
#         Home Phone []: 
#         Other []: 
# Is the information correct? [Y/n] Y   # 确认信息

创建完成后,用户alice即可使用设置的密码登录系统,家目录/home/alice会自动生成,并包含/etc/skel目录下的默认配置文件(如.bashrc.profile等)。

创建用户后的必要操作

设置/修改用户密码

无论使用useradd还是adduser,若未通过-p参数指定密码(或adduser未设置密码),用户无法登录,需使用passwd命令设置密码:

passwd username  # 普通用户可修改自己的密码,root可修改任意用户密码

passwd testuser,输入两次密码即可完成设置,若需强制用户下次登录时修改密码,可执行:

passwd --expire testuser  # 下次登录时需先设置新密码

修改用户属性

若需调整用户属性(如家目录、附加组、Shell等),可使用usermod命令(参数与useradd基本一致):

# 修改用户名
usermod -l newname oldname  
# 修改家目录(需确保目录存在或使用-m自动移动)
usermod -d /new/home -m testuser  
# 添加/移除附加组
usermod -aG docker testuser  # -a表示追加,避免覆盖原有附加组
usermod -G sudo testuser     # 直接设置附加组(覆盖原有组)
# 禁止/允许用户登录
usermod -s /bin/nologin testuser  # 禁止登录(仍可通过SSH密钥或其他服务登录)
usermod -s /bin/bash testuser     # 恢复登录权限

删除用户

若不再需要某用户,可使用userdel命令删除:

userdel username          # 仅删除用户,保留家目录
userdel -r username       # 删除用户及家目录、邮件文件(推荐)

userdel -r testuser会彻底删除用户testuser及其家目录下的所有文件。

用户权限管理(sudo配置)

默认情况下,普通用户无法执行需要管理员权限的操作(如安装软件、修改系统文件),若需让普通用户拥有部分管理员权限,可将其加入sudo组(或编辑/etc/sudoers文件)。

方法1:将用户加入sudo组

在Ubuntu/Debian中,sudo组已配置好sudo权限,直接将用户加入该组即可:

usermod -aG sudo username

在CentOS/RHEL中,对应组为wheel

usermod -aG wheel username

方法2:编辑sudoers文件(高级配置)

使用visudo命令编辑/etc/sudoers文件(语法检查,避免错误):

visudo

在文件末尾添加以下内容,允许用户username执行所有命令(需输入密码):

linux如何创建新用户

username ALL=(ALL:ALL) ALL

或仅允许执行特定命令(如aptsystemctl):

username ALL=(ALL:ALL) /usr/bin/apt, /bin/systemctl

相关问答FAQs

Q1:创建用户后无法登录,提示“Authentication failure”,如何解决?
A:可能原因及解决方法:

  1. 密码错误:确认输入的密码正确(注意大小写、空格等),可通过passwd username重置密码。
  2. Shell权限问题:检查用户登录Shell是否被禁用(执行grep username /etc/passwd,若显示/bin/nologin则无法登录),需用usermod -s /bin/bash username修改。
  3. 家目录权限错误:确保家目录所有者为用户(执行ls -ld /home/username,若所有者不是username:username,需用chown -R username:username /home/username修复)。
  4. SSH服务配置问题:若通过SSH远程登录,检查/etc/ssh/sshd_configPermitRootLoginPasswordAuthentication是否被禁用,需重启SSH服务(systemctl restart sshd)。

Q2:如何批量创建多个用户?
A:可通过以下两种方式批量创建用户:

  1. 使用newusers命令(需提前准备用户列表文件)
    创建一个文本文件(如users.txt),每行格式为用户名:密码:UID:GID:注释:家目录:Shell

    user1:123456:1001:1001:User1:/home/user1:/bin/bash
    user2:654321:1002:1002:User2:/home/user2:/bin/bash

    执行newusers users.txt导入用户,然后使用chpasswd批量设置密码(若未在文件中指定密码):

    echo -e "user1:password1nuser2:password2" | chpasswd
  2. 使用循环脚本(适用于动态生成用户)
    创建10个用户(user01-user10),密码为“Passwd@123”:

    for i in {01..10}; do
        useradd -m "user$i"
        echo "Passwd@123" | passwd --stdin "user$i"
    done

    此方法需确保系统已安装passwd--stdin选项(CentOS/RHEL默认支持,Ubuntu需安装whois包)。

批量创建用户后,建议检查/etc/passwd/etc/shadow文件确认用户信息正确,并清理临时文件。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/18425.html

(0)
酷番叔酷番叔
上一篇 6小时前
下一篇 6小时前

相关推荐

  • linux如何带端口ftp

    Linux中,可使用vsftpd等FTP服务器软件,配置时指定端口号来实现带

    2025年8月16日
    700
  • 如何高效可靠测试Linux内核?开发运维必看

    测试前的核心准备工作环境搭建硬件:推荐物理机(避免虚拟化干扰),备用方案为 KVM 虚拟机(需开启嵌套虚拟化),系统:干净的 Linux 发行版(如 Ubuntu LTS 或 Fedora),预留 20GB 磁盘空间,工具链:安装编译依赖: # Ubuntu/Debiansudo apt install bui……

    2025年7月24日
    1700
  • 如何实现linux计划任务

    Linux 中,通过 crontab 命令设置计划任务,编辑任务列表,指定

    2025年8月16日
    700
  • 如何快速上手Linux模拟器?

    Linux模拟器(如WSL、Cygwin、QEMU等)允许用户在Windows、macOS或其他系统上运行Linux环境,无需安装双系统或虚拟机,本教程以Windows平台为例,重点讲解最主流的WSL(Windows Subsystem for Linux),同时涵盖其他工具的基本用法,为什么使用Linux模拟……

    2025年6月24日
    2600
  • Linux下怎样让鼠标光标消失?

    方法1:使用命令行工具 unclutter(推荐)原理:unclutter 是一个轻量级后台工具,当鼠标静止时自动隐藏光标,移动时恢复显示,步骤:安装工具(支持Debian/Ubuntu、Fedora等主流发行版):sudo apt install unclutter # Debian/Ubuntusudo d……

    2025年7月28日
    900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信