在Linux系统中,用户管理是系统运维的基础操作之一,创建新用户是确保系统安全、实现多用户协作的关键步骤,Linux通过用户(User)和用户组(Group)的概念实现权限隔离,每个用户拥有唯一的UID(用户标识符)和GID(组标识符),通过权限控制文件访问、命令执行等操作,本文将详细介绍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 |
示例操作
-
创建普通用户(默认方式)
执行useradd testuser
,系统会自动创建名为testuser
的用户,UID从1000开始递增,家目录为/home/testuser
,Shell为/bin/bash
,并创建同名主用户组testuser
。 -
创建带自定义属性的用户
若需指定UID、家目录和附加组,可执行:useradd -u 1500 -d /opt/custom -m -G sudo,developers -c "Developer User" devuser
该命令会创建用户
devuser
,UID为1500,家目录为/opt/custom
(自动创建),附加组为sudo
和developers
,注释为“Developer User”。 -
创建系统用户
运行系统服务(如MySQL、Nginx)时,需创建无登录权限的系统用户:useradd -r -s /bin/false nginx
此处
-r
表示系统用户,-s /bin/false
禁止其通过Shell登录。
使用adduser
创建新用户
adduser
是useradd
的封装工具,在Debian/Ubuntu等发行版中默认安装,采用交互式提示引导用户输入信息,无需记忆复杂参数,适合新手使用,其基本语法为:
adduser [选项] 用户名
示例操作
执行adduser newuser
后,系统会依次提示:
- 用户名(默认直接回车使用命令中的用户名)
- 初始密码(需输入两次,不显示明文)
- 用户全名(可选,直接回车跳过)
- 房间号、电话等额外信息(均可选,回车跳过)
- 确认信息(输入
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
执行所有命令(需输入密码):
username ALL=(ALL:ALL) ALL
或仅允许执行特定命令(如apt
、systemctl
):
username ALL=(ALL:ALL) /usr/bin/apt, /bin/systemctl
相关问答FAQs
Q1:创建用户后无法登录,提示“Authentication failure”,如何解决?
A:可能原因及解决方法:
- 密码错误:确认输入的密码正确(注意大小写、空格等),可通过
passwd username
重置密码。 - Shell权限问题:检查用户登录Shell是否被禁用(执行
grep username /etc/passwd
,若显示/bin/nologin
则无法登录),需用usermod -s /bin/bash username
修改。 - 家目录权限错误:确保家目录所有者为用户(执行
ls -ld /home/username
,若所有者不是username:username
,需用chown -R username:username /home/username
修复)。 - SSH服务配置问题:若通过SSH远程登录,检查
/etc/ssh/sshd_config
中PermitRootLogin
和PasswordAuthentication
是否被禁用,需重启SSH服务(systemctl restart sshd
)。
Q2:如何批量创建多个用户?
A:可通过以下两种方式批量创建用户:
-
使用
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
-
使用循环脚本(适用于动态生成用户)
创建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