Linux多用户权限隔离关键在于统一UID/GID、家目录权限设为700、禁用密码登录仅用SSH密钥认证,并按最小权限原则授予sudo权限。

Linux 多用户环境下的权限隔离,核心是让每个用户只能访问自己的资源,互不干扰、不可越界。关键不在“功能有没有”,而在“UID/GID 是否统一”“目录权限是否收紧”“登录方式是否安全”这三点上。
统一 UID/GID(多服务器 + NAS 场景必做)
Linux 判断文件归属只看数字 UID/GID,不看用户名。如果同一人在 A 服务器 UID 是 1001,在 B 服务器是 1002,而两台服务器又挂载同一块 NAS 存储,就会出现:A 上创建的文件,在 B 上显示为“nobody”或别人的名字,甚至自己都打不开。
- 所有服务器必须使用集中式用户管理(如 LDAP、FreeIPA),或人工约定并严格分配 UID/GID 范围(例如普通用户固定从 2000 起)
- 新建用户时显式指定 UID 和 GID:
useradd -u 2001 -g 2001 -m -d /repository/alice alice - 检查一致性:
id alice和getent passwd alice应在各服务器返回完全相同的 UID/GID
个人目录权限设为 700(强制执行)
能否进入一个目录,取决于是否有 x(执行)权限;能否列出内容,取决于是否有 r(读)权限。默认的 755(drwxr-xr-x)会让所有人能 cd 进入并 ls 查看,完全破坏隔离。
- 家目录路径统一规范,例如:
/repository/alice - 创建后立即设置权限:
chmod 700 /repository/alice - 确保用户主目录属主和属组正确:
chown alice:alice /repository/alice - 用户自己的
~/.ssh目录也必须是 700,authorized_keys必须是 600
禁用密码登录,只用 SSH 密钥认证
密码易被爆破、复用、泄露;密钥登录天然支持强身份绑定,且私钥不出用户设备。
- 管理员不生成私钥,只接收用户提供的公钥(
id_rsa.pub内容) - 将公钥追加到
/repository/alice/.ssh/authorized_keys,确保该文件权限为 600 - 全局禁用密码登录:
PermitRootLogin no和PasswordAuthentication no写入/etc/ssh/sshd_config,然后重启 sshd - 可选增强:限制用户仅能使用特定命令(如仅允许
rsync或sftp)
sudo 权限按需授予,不给全权
普通用户不该拥有 ALL=(ALL) ALL,应遵循最小权限原则——只给完成任务必需的命令。
- 编辑
/etc/sudoers使用visudo,添加类似行:alice ALL=(ALL) /usr/sbin/useradd, /usr/bin/passwd, !/usr/bin/passwd root - 把需要批量授权的用户加入同一组(如
devops),再对组赋权:%devops ALL=(ALL) /bin/systemctl start nginx - 避免用
su -切换 root,坚持用sudo -i或sudo command,便于审计日志追踪











