Linux服务器用户权限分配实操
为什么要管好Linux用户权限
多用户共用的服务器上,权限混乱会导致数据泄露、误删文件、配置冲突。
合理分配用户权限,既能保证各自工作区隔离,又能让需要管理员权限的人通过 sudo 临时提权,而不用直接使用 root。
下面从最基础的创建用户开始,一步步带你完成权限分配。
---
准备工作:一个可 SSH 登录的 Linux 服务器
你只需要一台跑 CentOS 7/8、Ubuntu 20.04/22.04 或 Debian 11/12 的服务器,并且已经能用 root 或拥有 sudo 权限的账号通过 SSH 远程连接。
如果没有现成用户,请先以 root 登录。
如果还没有 SSH 连接工具,推荐使用 Terminal(macOS/Linux)或 Xshell/PuTTY(Windows)。
---
第一步:创建新用户并设置密码
登录服务器后,执行以下命令创建一个名为 devuser 的普通用户:
useradd -m -s /bin/bash devuser
参数说明:-m 创建同名家目录 /home/devuser;-s 指定默认 Shell 为 bash。
接着设置密码:
passwd devuser
系统会提示输入两次密码(输入时不显示字符),设置成功后会显示 passwd: all authentication tokens updated successfully。
---
第二步:将用户添加到特定用户组
用户组方便批量管理权限。
例如,如果想给 devuser 分配 docker 组(如果已安装 Docker),执行:
usermod -aG docker devuser
常见组:sudo(Ubuntu/Debian)或 wheel(CentOS/RHEL)代表管理员组。添加组后需要重新登录才能生效。
---
第三步:赋予普通用户 sudo 权限
为了安全,不应直接让用户使用 root。
正确做法是通过 /etc/sudoers 文件配置 sudo 权限。
建议用 visudo 命令打开编辑(它会检查语法错误):
visudo
找到类似 root ALL=(ALL:ALL) ALL 的行,在其下方添加:
devuser ALL=(ALL:ALL) ALL
保存退出。
如果希望执行 sudo 时不重复输密码,可以改为:
devuser ALL=(ALL:ALL) NOPASSWD:ALL
注意:NOPASSWD 会降低安全性,仅适合调试环境或特定自动化场景。
---
第四步:调整文件和目录的归属与权限
新用户创建的文件归属自己,但有时需要让 devuser 访问某个已有的项目目录 /var/www/project。
变更归属:
chown -R devuser:devuser /var/www/project
若只想改变所属组,但保留用户归属,用 chgrp。
调整目录权限:
chmod -R 755 /var/www/project
755 表示所有者可读写执行,同组和其他用户只能读和执行。
更细粒度控制可以用 setfacl(本文暂不展开)。
---
避坑指南:新手最易犯的五个错误
- 直接修改系统用户(如 www-data、nobody)的密码:不要这样做,这些是服务专用账户,应该专注于创建专用普通用户。
- sudoers 语法错误导致所有用户无法 sudo:修改前请
cp /etc/sudoers /etc/sudoers.bak,并始终坚持visudo。 - 使用
chmod 777解决问题:这会开放全部权限,应当只给最小必要权限。 - 用户组生效问题:添加组后用户必须退出重新登录,或者用
newgrp临时切换组。 - 忘记设置
sudo用户时出现user is not in the sudoers file:需要回到 root 用户重新配置。
---
效果验证:三步确认权限生效
- 切换用户测试:用
su - devuser登录新用户,执行whoami应显示devuser。 - 测试 sudo:在
devuser下运行sudo whoami,如果返回root则说明 sudo 配置成功。若配置了 NOPASSWD 则不会提示密码。 - 验证文件权限:尝试在之前
chown过的目录下创建文件touch /var/www/project/test.txt,应成功;然后以另一个普通用户身份访问该目录,应提示Permission denied。
---
结语
Linux服务器用户权限分配并不复杂,核心就是“创建用户→配置组→设定sudo→调整文件归属”。
按照本文的命令顺序操作,你就能快速搭建一个安全、隔离的多用户环境。
遇到异常时先检查用户是否在正确的组里,再检查 sudoers 文件有无拼写错误,多数问题都能解决。