ubuntu服务器用户与权限管理遵循最小权限原则,通过用户身份、组归属、文件权限、sudo策略四层协同;禁用root登录与密码认证,强制ssh密钥;用组批量授权,精细配置sudo命令权限,并加固ssh配置。

Ubuntu 服务器的用户与权限管理,核心是围绕“最小权限原则”展开:每个用户只获得完成工作所必需的权限,不多不少。不靠密码硬扛,而靠分层控制——用户身份、组归属、文件权限、sudo策略四者协同,才能兼顾安全与效率。
创建与隔离普通用户
避免使用 root 直接登录,所有人类用户都应是普通用户。用 adduser 创建时加 --disabled-password 参数禁用密码登录,强制走 SSH 密钥认证:
- sudo adduser --disabled-password --gecos "" dev1
- 再用 ssh-copy-id dev1@server_ip 部署公钥
- 家目录自动创建在 /home/dev1,权限设为 700(仅用户可读写执行)
用组实现权限批量分配
组是权限管理的实用单元。Ubuntu 默认有多个系统组,关键的是:
PostgreSQL 18.4 官方 Ubuntu 安装包现已发布,这是目前最新的稳定版本。推荐通过官方 APT 仓库安装:先执行 sudo apt update 更新索引,再运行 sudo apt install postgresql-18 即可完成部署。新版本引入了异步 I/O 子系统,在顺序扫描与 VACUUM 场景下性能提升显著,同时支持 UUID v7 原生生成函数与虚拟生成列。
- sudo 组:允许执行 sudo 命令(推荐只给运维和负责人)
- www-data 组:若需让开发者读取 Nginx 日志,可将用户加入该组:sudo usermod -aG www-data dev1
- 自定义组更灵活,比如建 deployers 组,把部署脚本所在目录设为 g+rx,并属组 deployers
精细控制 sudo 权限
不要直接把人加进 sudo 组就完事。编辑 /etc/sudoers(用 sudo visudo)可限制具体命令:
- 允许用户重启 Nginx 但不能执行其他操作:dev1 ALL=(ALL) /usr/sbin/service nginx restart
- 允许查看日志但禁止修改:dev2 ALL=(ALL) NOPASSWD: /bin/cat /var/log/nginx/*.log
- 所有 sudo 操作默认记录在 /var/log/auth.log,可审计谁在何时执行了什么
加固 SSH 登录本身
用户建好了,还得锁好入口。修改 /etc/ssh/sshd_config:
- PermitRootLogin no —— 彻底关闭 root SSH 登录
- PasswordAuthentication no —— 关闭密码,只认密钥
- AllowUsers dev1 deployer —— 明确列出准许登录的用户名
- Port 2222 —— 改非标端口降低扫描命中率(需同步开放防火墙)
改完运行 sudo systemctl restart ssh 生效。










