在Ubuntu系统中,通过命令行使用useradd或adduser创建新用户,并将其加入sudo组,即可获得具备管理员权限的非root账户,这是保障系统安全与日常操作便捷性的最佳实践。
日常使用Linux服务器时,直接以root身份登录犹如驾驶一辆没有刹车的高性能跑车,风险极高,一旦误操作,可能导致系统文件损坏甚至服务瘫痪,创建一个拥有sudo权限的普通用户,既能满足日常运维需求,又能通过权限隔离降低安全风险,这一过程并不复杂,只需掌握几个关键命令即可。
为何需要创建非root sudo账户
许多初学者倾向于直接使用root账户,认为这样最方便,业内专家指出,这种做法违背了最小权限原则,root账户拥有系统的最高控制权,任何细微的命令错误都可能引发连锁反应,相比之下,sudo机制允许普通用户在执行特定管理任务时临时提升权限,且所有操作都会被记录在日志中,便于审计和追溯。
安全性与权限隔离
使用普通账户日常登录,可以有效防止恶意软件或误操作直接破坏系统核心文件,即使账户密码泄露,攻击者获得的也是受限权限,而非完全控制权,这种隔离机制是构建安全Linux环境的基础。
操作审计与责任追溯
当多个管理员共同维护服务器时,sudo日志(通常位于/var/log/auth.log)能清晰记录谁在什么时间执行了什么命令,这对于故障排查和安全审计至关重要,若所有操作均通过root进行,责任归属将变得模糊不清。
Ubuntu创建用户教程:添加具有sudo权限的非root账户
在Ubuntu系统中,创建用户并赋予sudo权限主要有两种方法:使用
adduser交互式命令或使用useradd底层命令,对于大多数用户,推荐使用adduser,因为它会自动创建家目录并设置默认配置文件,更加人性化。
使用adduser命令(推荐)
adduser是Ubuntu自带的友好脚本,它会在创建用户的过程中引导你完成一系列设置,请确保你当前登录的账户具有sudo权限,或者直接使用root账户执行以下操作。
打开终端,输入创建用户的命令:
sudo adduser 新用户名
- 系统会提示你输入并确认新用户的密码,输入密码时屏幕上不会显示任何字符,这是Linux的安全机制,请仔细输入并记住密码。
- 系统会询问用户的全名、房间号等信息,对于大多数个人用户,直接按回车键跳过即可,这些信息并非必填项。
- 确认信息无误后,输入`Y`并回车,完成用户创建。
用户已创建成功,但尚未拥有sudo权限,需要将该用户添加到sudo组:
sudo usermod -aG sudo 新用户名
验证用户是否成功加入sudo组,可以执行:
groups 新用户名
如果输出结果中包含sudo,则说明权限配置成功。
使用useradd命令(高级用户)
useradd是更底层的命令,功能强大但不够友好,不会自动创建家目录或复制默认配置文件,如果你习惯手动配置,可以使用此方法。
创建用户并指定家目录:
sudo useradd -m -s /bin/bash 新用户名
这里的-m参数表示创建家目录,-s /bin/bash指定默认shell为bash。
设置用户密码:
sudo passwd 新用户名
将用户添加到sudo组:
sudo usermod -aG sudo 新用户名
验证sudo权限与常见问题排查
创建用户后,必须验证权限是否生效,有时,由于配置错误或组权限未刷新,新用户可能无法执行sudo命令。
如何测试sudo权限
切换到新用户账户,尝试执行一个需要root权限的命令,例如更新软件包列表:
su - 新用户名 sudo apt update
如果系统提示输入密码,输入该用户的密码后命令成功执行,则说明sudo权限配置正确,若提示“用户不在sudoers文件中”,请检查是否成功将用户加入了sudo组,或检查/etc/sudoers文件权限。
常见错误与解决方案
- 权限拒绝:确保执行`usermod`命令时使用了`-aG`参数,而不是`-G`,`-G`会覆盖用户原有的所有组,导致用户失去其他必要权限。
- 家目录缺失:若使用`useradd`未加`-m`参数,用户登录时将看不到家目录,可通过`cp -r /etc/skel/. ~/`手动复制默认配置文件,但推荐使用`adduser`避免此问题。
- 密码过期:若创建用户后无法登录,可能是密码已过期,可使用`sudo passwd -u 新用户名`解锁账户,或`sudo passwd -e 新用户名`强制下次登录修改密码。
Ubuntu创建用户教程:添加具有sudo权限的非root账户的安全最佳实践
创建用户只是第一步,合理的安全策略能进一步加固系统。
禁用root远程登录
为了进一步提升安全性,建议禁用root账户的SSH远程登录,编辑/etc/ssh/sshd_config文件,找到PermitRootLogin选项,将其修改为no,然后重启SSH服务:
sudo systemctl restart ssh
这样,即使root密码泄露,攻击者也无法直接通过SSH登录,必须使用普通账户登录后再通过sudo提权,增加了攻击难度。
配置SSH密钥登录
对于高频操作的管理员,使用SSH密钥对登录比密码更安全且便捷,在新用户家目录下生成密钥对,并将公钥添加到~/.ssh/authorized_keys文件中,此举可大幅降低暴力破解风险。
FAQ:Ubuntu创建用户教程:添加具有sudo权限的非root账户
如何删除具有sudo权限的用户?
使用deluser命令可以安全地删除用户及其家目录,删除名为testuser的用户并移除其家目录,执行sudo deluser --remove-home testuser,若需保留家目录,可省略--remove-home参数。
sudo权限是否永久有效?
sudo权限是永久有效的,除非手动移除,用户被加入sudo组后,只要不将该用户移出该组,或修改sudoers配置,权限将持续存在,若需临时撤销权限,可将用户从sudo组移除,或编辑/etc/sudoers文件限制特定命令的执行。
创建用户时忘记设置密码怎么办?
若创建用户时未设置密码,用户将无法通过密码登录,可使用sudo passwd 新用户名重新设置密码,建议定期审查用户账户,移除不再使用的账户,以减少潜在的安全隐患。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/473516.html



