零基础搞懂Linux用户权限:从创建到设置完整教程
动手前需要准备什么
在开始操作之前,确保你有一台可以远程连接的Linux服务器。
如果是本地虚拟机同样适用。
你需要以下条件:
- 一台安装了 CentOS 7/8、Ubuntu 20.04+ 或 Debian 11+ 的服务器
- 能够通过 SSH 登录(例如使用终端工具或 Xshell)
- 登录用户具有 root 权限(或可以使用 sudo 提权)
- 基本的命令行认识(知道如何输入命令并按回车)
如果没有 root 权限,建议先联系服务商获取,或者用 sudo -i 切换到 root 用户。
一步一步配置用户和目录权限
1. 添加新用户
使用 useradd 命令创建一个常规用户,比如名字叫 devuser:
useradd devuser
创建完成后,需要设置登录密码:
passwd devuser
系统会提示你输入两次密码,输入时不会显示字符,正常回车即可。
2. 将用户加入必要的组
很多场景下需要让新用户拥有 sudo 权限,方便执行管理员命令。
将用户加入 wheel 组(CentOS/RHEL)或 sudo 组(Ubuntu/Debian):
- CentOS:
usermod -aG wheel devuser - Ubuntu:
usermod -aG sudo devuser
如果你希望用户只能访问某个特定文件夹,可以创建一个专用组并分配:
groupadd webadmin
usermod -aG webadmin devuser
3. 创建目录并设置权限
假设我们要创建一个项目目录 /var/www/webapp,并将所有权给 devuser 和组 webadmin:
mkdir -p /var/www/webapp
chown devuser:webadmin /var/www/webapp
现在设置目录权限,让所有者有读写执行、组有读和执行、其他人无任何权限:
chmod 750 /var/www/webapp
权限数值解释(新手必记):
- 7 = 读(4) + 写(2) + 执行(1) → 所有者
- 5 = 读(4) + 执行(1) → 组
- 0 = 无权限 → 其他人
4. 使用新用户测试登录
打开一个新的 SSH 会话,用 devuser 登录,然后尝试进入该目录:
ssh devuser@你的服务器IP
cd /var/www/webapp
touch test.txt
如果没有报错,说明权限配置正确。
新手最容易踩的坑
忘记设置密码
git useradd 后不设置密码,用户无法登录。
务必执行 passwd。
目录权限数字用错
常见错误是给了 777(所有人完全控制),安全风险极大。
尽量使用 750 或 755。
如果目录需要写入,只有所有者和组才有写权限。
更改文件归属时用了大写 -R 递归
如果目录下有子目录,要递归修改所有权必须加 -R:
chown -R devuser:webadmin /var/www/webapp
否则子目录仍属于原用户。
sudo 权限不生效
加入 sudo 组后,用户要重新登录才能生效。
测试时尽量退出当前 SSH,重新连接。
确认权限是否正确
快速查看文件权限
使用 ls -l 查看目录下文件的详细信息:
ls -ld /var/www/webapp
输出类似:drwxr-x--- 2 devuser webadmin 4096 Apr 15 10:00 /var/www/webapp
- 第一个字符
d表示目录 - 后面
rwxr-x---对应所有者、组、其他人的权限 - 紧接着是所有者
devuser和组webadmin
测试用户写权限
用 devuser 在目录下创建文件,如果成功则写权限正常。
也可以尝试用 su - devuser 切换用户来测试。
su - devuser -c "touch /var/www/webapp/ok"
如果没有报错,说明一切就绪。
常见问题解答
Q:我执行 chmod 后,普通用户还是无法进入目录?
A:检查目录的组权限是否包含执行(x),组用户需要执行权限才能进入目录。
Q:如何删除用户?
A:使用 userdel -r devuser,-r 会同时删除用户主目录和邮箱。
Q:为什么修改了权限还是无法写入?
A:确认当前用户是否属于目标组,使用 groups devuser 查看所属组列表。
如果你正在处理 Linux用户权限,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。