零基础搞定Linux用户权限管理:从创建用户到精准授权全流程
前置准备
开始之前,确保你拥有一台Linux服务器(CentOS 7/8、Ubuntu 20.04+均可),并且已经通过SSH登录到root账号。
如果你是用普通用户登录,记得先切换到root:
sudo -i准备好之后,我们就正式开始Linux用户权限管理的学习。
分步操作
1. 创建新用户并设置密码
Linux用户的创建命令是 useradd,接着用 passwd 设置密码。
示例:
useradd zhangsan
passwd zhangsan系统会提示输入两次密码,输入时不会显示字符,这是正常现象。
2. 创建用户组并将用户加入组
权限管理经常要用到用户组。
创建一个组 devteam,然后把用户 zhangsan 加进去:
groupadd devteam
usermod -aG devteam zhangsan查看用户所在组:
groups zhangsan输出应包含 devteam。
3. 设置目录权限
假设有一个项目目录 /opt/project,我们需要让 devteam 组的成员都能读写执行:
chown root:devteam /opt/project
chmod 775 /opt/project775含义:所有者(root)可读写执行,所属组(devteam)可读写执行,其他用户只读执行。
4. 配置sudo权限
有时需要让普通用户临时用root权限执行命令。
编辑sudoers文件(强烈建议用visudo):
visudo在末尾添加一行(允许 zhangsan 执行所有命令):
zhangsan ALL=(ALL) ALL如果想只允许某个命令(比如 systemctl),可以写成:
zhangsan ALL=(ALL) /usr/bin/systemctl保存并退出。
以后 zhangsan 就可以用 sudo systemctl restart nginx 了。
5. 验证权限切换
用新用户重新登录或 su 切换用户:
su - zhangsan尝试进入 /opt/project:
cd /opt/project && touch test.txt如果没有报错,说明权限生效。
接着测试sudo:
sudo whoami应输出 root。
避坑指南
- 忘记设置密码:新用户没有密码无法登录,必须执行
passwd 用户名。 - 目录权限过松:不建议用
777,会让所有人随意修改文件,存在安全隐患。 - sudoers语法错误:用
visudo编辑会自动检查语法,如果直接编辑/etc/sudoers可能导致系统无法使用sudo。 - 用户组未生效:如果用
usermod -G(小写g)而不是-aG,会覆盖用户原先的附属组,导致丢权限。
高频问题解答
问题1:为什么我用useradd创建用户后,用户没有家目录?
答:默认 useradd 会创建家目录,但如果系统默认配置被改过,可以加 -m 参数手动创建:useradd -m zhangsan。
问题2:我给用户加了sudo权限,但执行sudo时提示“不在sudoers文件中”?
答:检查 /etc/sudoers 里写的用户名和实际用户名是否一致,注意大小写和拼写。
另外,确认是否用了 %devteam 来给整组授权(需要 % 前缀)。
问题3:如何查看某个文件当前的所有者和权限?
答:使用 ls -l /opt/project。
输出第一列如 drwxrwxr-x 表示类型和权限,第三列是所有者,第四列是所属组。
效果验证
完成以上步骤后,你可以通过以下方式确认Linux用户权限管理配置成功:
- 使用
id zhangsan查看用户UID、GID和组信息,应包含devteam。 - 用
ls -ld /opt/project确认权限为drwxrwxr-x,所有者为root:devteam。 - 切换至普通用户执行
cd /opt/project && echo "ok" > test.txt无报错。 - 执行
sudo -l列出当前用户可执行的sudo命令。
如果你正在处理Linux用户权限管理,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。