核心三点是:每个用户有独立家目录、目录权限设为700、用户间默认互不可见;用adduser而非useradd确保自动配置完整;家目录权限700是隔离前提,因Linux仅凭x权限判断能否进入目录。
服务器多用户创建与权限隔离,核心就三点:每个用户有独立家目录、目录权限设为700、用户间默认互不可见。不靠复杂工具,Linux原生命令就能做到,关键是别跳过权限设置这一步。
用户创建要选对命令
用 adduser,别用 useradd(除非你清楚每一步要补什么):
- adduser 是交互式命令,自动创建 /home/用户名 目录、设好 shell(/bin/bash)、建同名用户组、提示设密码
- useradd 默认不建家目录,也不配 shell,漏掉 -m 和 -s /bin/bash 就会导致用户无法正常登录
- 如果统一把家目录放在 /repository 下(比如对接 NAS),可用:
sudo useradd -m -d /repository/username -s /bin/bash username
家目录权限必须是 700
这是隔离生效的底层前提。Linux 判断“能否进入一个目录”,只看 x(执行)权限:
- drwx------(即 700)表示只有所有者能 cd 进去、读写文件
- 哪怕目录里放了别人可读的文件,只要目录本身没 o+x 或 g+x,其他人连 ls 都执行不了
- 创建完用户后立即执行:
sudo chmod 700 /home/username(或 /repository/username)
SSH 登录推荐密钥,禁用密码
密码易泄露、难管理,密钥登录更安全也更方便:
- 管理员在服务器上用 sudo -u username mkdir -p ~/.ssh && chmod 700 ~/.ssh
- 把用户提供的公钥(id_rsa.pub 内容)写入 ~/.ssh/authorized_keys,再执行 chmod 600 ~/.ssh/authorized_keys
- 编辑 /etc/ssh/sshd_config,确认包含:
PubkeyAuthentication yes
PasswordAuthentication no
然后重启 SSH:sudo systemctl restart sshd
共享目录要用组权限,不是开放 777
真要多人协作,别改家目录权限,而是建独立共享目录 + 用户组:
- 新建组:sudo groupadd project-team
- 把相关用户加进去:sudo usermod -aG project-team alice、sudo usermod -aG project-team bob
- 建共享目录:sudo mkdir /shared/project,设属组和权限:
sudo chown :project-team /shared/project
sudo chmod 2775 /shared/project(2 表示 setgid,确保新文件继承组)