引言
Linux 系统在设计上就支持多用户同时使用。对于任何服务器部署而言,无论是托管网站还是应用程序,控制用户访问和文件权限都是必不可少的安全基础设施。本实用指南介绍 Ubuntu 22.04/24.04 LTS 的用户管理、用户组配置、管理员权限委派,以及适用于大多数现代 Linux 发行版的权限控制方法。
创建与删除用户
Ubuntu 和 Debian 系统以 adduser 作为创建用户的主要工具,它会自动建立主目录并提示设置密码:
sudo adduser sara
更底层的 useradd 命令则提供了适合脚本化的方案,可通过特定标志来创建主目录(-m)、指定登录 Shell 以及添加用户备注:
sudo useradd -m -s /bin/bash -c "Sara Ahmed" sara
sudo passwd sara
删除用户但保留其文件:
sudo deluser sara
完全删除用户,包括其主目录和邮件存储:
sudo deluser --remove-home sara
理解用户组
用户组可以为多个用户统一分配访问权限。查看某个用户的组成员关系:
groups sara
id sara
创建新用户组并添加成员:
sudo groupadd developers
sudo usermod -aG developers sara
-aG 这两个标志承担着关键作用:-a 表示追加组成员关系,而 -G 用于管理附加组(supplementary groups)。若省略 -a,则会替换掉该用户所有现有的附加组——这是一个常见且危险的错误。更改会在用户下次登录时生效。
将用户从组中移除:
sudo gpasswd -d sara developers
通过 sudo 授予管理员权限
Ubuntu 会向 sudo 组的成员授予管理能力。添加管理员用户:
sudo usermod -aG sudo sara
如需更精细的权限控制,可使用 visudo 来编辑 sudoers 配置,它会在保存前校验语法:
sudo visudo
在 /etc/sudoers.d/ 目录中创建专用文件,可使规则在软件包更新后依然保留:
sudo visudo -f /etc/sudoers.d/sara
授予在无需密码提示的情况下重启特定服务的权限:
sara ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
这种做法体现了最小权限原则——只授予完成任务所需的最低权限。
Linux 文件权限
文件和目录都归属于某个用户和某个组,并针对三类对象设置各自的权限:所有者(u)、组(g)和其他用户(o)。显示权限:
ls -l report.txt
# -rw-r--r-- 1 sara developers 1240 Jun 8 10:12 report.txt
权限分为三种类型:读(r/4)、写(w/2)和执行(x/1)。对于目录而言,x 表示进入该目录的能力。
| 符号 | 八进制 | 对文件的含义 | 对目录的含义 |
|---|---|---|---|
r |
4 | 读取内容 | 列出条目 |
w |
2 | 修改内容 | 创建/删除条目 |
x |
1 | 作为程序运行 | 进入 / 遍历 |
使用符号表示法或八进制表示法修改权限:
# 符号表示法:为所有者添加执行权限
chmod u+x script.sh
# 八进制表示法:所有者 rwx,组 rx,其他用户 r(754)
chmod 754 script.sh
使用 chown 更改归属关系:
sudo chown sara:developers report.txt
递归应用更改:
sudo chown -R sara:developers /var/www/project
sudo chmod -R 750 /var/www/project
对于 Web 内容,默认推荐文件使用 644、目录使用 755,这样既允许服务器读取,又不赋予其写入能力。
通过 ACL 实现精细化控制
标准权限只能表达单一的所有者和组关系。访问控制列表(ACL)可在需要时提供面向第三方的精细化访问控制,Ubuntu 默认即已包含该功能:
# 授予用户 'omar' 对某文件的读/写权限
sudo setfacl -m u:omar:rw report.txt
# 查看 ACL
getfacl report.txt
# 移除 omar 的条目
sudo setfacl -x u:omar report.txt
ACL 能够在无需重构用户组的情况下,满足多团队共享目录的需求。
账户安全与有效期
使用 chage 查看和配置密码时效策略:
# 显示当前的时效设置
sudo chage -l sara
# 要求每 90 天更换一次密码
sudo chage -M 90 sara
临时停用账户:
sudo usermod -L sara # 锁定
sudo usermod -U sara # 解锁
日常管理中,应优先使用 SSH 密钥而非密码,并在 /etc/ssh/sshd_config 中禁用 root 用户的 SSH 访问。
在托管云服务器上综合运用
这些通用命令会因部署所在的位置而获得相应的运维语境。位于特定司法管辖区内的托管云基础设施,既能确保符合本地数据保护框架,又能提供本地化的支持资源。独立的用户账户、最小权限的 sudo 配置、受限的文件权限以及 SSH 身份验证,都是性价比极高的安全投入。
Comments
0 total · 0 threads