*Cube-Host – 完整的雲端服務!

Linux VPS中的用户配置与管理

User configuration and management in Linux VPS

基本账户模型(1分钟理论)

  • 用户:/etc/passwd(UID、GID、shell、$HOME)。
  • 密码哈希:/etc/shadow(仅root)。
  • 组:/etc/group(GID和成员)。
  • 启动目录,通常为/home/<用户名>,初始内容模板:/etc/skel

创建用户

1. 实用助手 Adduser(Debian/Ubuntu)

				
					sudo adduser alice
# The wizard will ask for a password and profile, create /home/alice, and copy files from /etc/skel.
				
			
Linux VPS

2. 通过 useradd 创建「低权限」用户(通用)

				
					# стандартний home і bash
sudo useradd -m -s /bin/bash alice
sudo passwd alice
				
			

单人住宿 + 权利:

				
					sudo mkdir -p /srv/users/alice
sudo cp -rT /etc/skel /srv/users/alice
sudo useradd -d /srv/users/alice -s /bin/bash alice
sudo chown -R alice:alice /srv/users/alice
sudo passwd alice
				
			
Linux VPS

验证:

				
					getent passwd alice
sudo -u alice -H bash -lc 'whoami && pwd'
				
			

组与角色

添加到其他组

				
					sudo usermod -aG sudo,adm alice
id alice
groups alice
				
			

从组中移除

				
					sudo gpasswd -d alice adm
				
			

项目/服务提供角色组

				
					sudo groupadd deploy
sudo usermod -aG deploy alice
				
			

通过 visudo 和 /etc/sudoers.d 保护 sudo

仅通过 visudo 修改规则:这可验证语法并防止管理面板被“锁死”。

				
					# preferably — a separate user file
sudo visudo -f /etc/sudoers.d/alice
				
			

完整sudo(如sudo组):

				
					alice  ALL=(ALL:ALL) ALL
				
			

最低权限(以nginx为例):

				
					Cmnd_Alias NGINX_CMDS = /bin/systemctl restart nginx, /bin/systemctl status nginx, /bin/journalctl -u nginx
alice ALL=(root) NOPASSWD: NGINX_CMDS
				
			
Linux VPS

建议

  • 尽可能通过组分配权限:
  • %webadmins ALL=(root) NOPASSWD: NGINX_CMDS → 将用户添加至webadmins组。
  • NOPASSWD: 仅在需要自动化时使用。

密码策略(密码过期)与复杂度

通过chage设置个性化条件

				
					# current status
sudo chage -l alice
# maximum 90 days, warn 7 days in advance, do not change more often than once a day
sudo chage -M 90 -W 7 -m 1 alice
# deactivate by date
sudo chage -E 2025-12-31 alice
				
			

新用户的默认配置(login.defs)

				
					/etc/login.defs:
PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_WARN_AGE   7

				
			

密码复杂度(PAM,Ubuntu/Debian)

安装 libpam-pwquality 并配置 /etc/pam.d/common-password,例如:

				
					password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
				
			

SSH密钥和SSH限制

为用户添加公钥

				
					sudo -u alice -H bash -lc “mkdir -p ~/.ssh && chmod 700 ~/.ssh”
sudo -u alice -H bash -lc “cat >> ~/.ssh/authorized_keys” # paste the contents of *.pub, then Ctrl+D
sudo -u alice -H bash -lc “chmod 600 ~/.ssh/authorized_keys”
				
			
Linux VPS

在sshd_config中限制访问

				
					# when keys are configured — disable passwords
PasswordAuthentication no
PubkeyAuthentication yes

# prohibit direct root login (after issuing sudo to administrators)
PermitRootLogin no

# restrict access by group
AllowGroups sshusers

sudo groupadd sshusers
sudo usermod -aG sshusers alice
sudo systemctl restart sshd
				
			

无shell的“技术”用户

				
					sudo useradd -m -s /usr/sbin/nologin backupbot
				
			

在目录中协作(组 + ACL)

在项目目录中设置 setgid(组继承)

				
					sudo mkdir -p /srv/project
sudo chgrp project /srv/project
sudo chmod 2775 /srv/project
				
			

按点ACL(当需要额外权限时)

				
					sudo setfacl -m u:bob:rwx /srv/project
sudo getfacl /srv/project
				
			

数据录入错误的检查与修正

				
					# successful logins
last -n 10
# who is in the system
w
who
# failed attempts (if faillog is active)
faillog -a

# SSH logs for today
sudo journalctl -u ssh --since “today”
sudo journalctl -u ssh --grep “Failed password”
				
			

账户封禁与删除

				
					# lock password (key login can remain)
sudo usermod -L alice
# unlock
sudo usermod -U alice

# immediate deactivation (expired)
sudo chage -E 0 alice

# terminate processes and delete account from home
sudo pkill -KILL -u alice
sudo userdel -r alice
# (Debian/Ubuntu is convenient:)
sudo deluser --remove-home alice
				
			

生产环境部署检查清单

  • 用户创建完成,$HOME目录及shell配置正确,SSH密钥已添加。
  • 基于角色分配的用户组(sudo/adm/www-data/docker/…)。
  • 通过/etc/sudoers.d文件授予sudo权限,仅授予最低限度的权限。
  • 密码策略:已配置 chage/login.defs/PAM。
  • SSH 中禁用密码和 root 登录;启用 AllowGroups sshusers 限制。
  • 为项目配置 setgid,必要时配置 setfacl。
  • 连接验证机制;存在注销流程(锁定 → 删除 → 保存 → 清除)。