核心是三点:先建身份(用户和组),再定边界(文件和目录权限),最后控行为(sudo或服务级授权);每步均有明确目的与操作依据,强调职责分离、最小权限和持续审计。
从零开始做服务器用户与权限管理,核心就三点:先建身份(用户和组),再定边界(文件和目录权限),最后控行为(sudo或服务级授权)。不靠猜、不靠复制粘贴,每一步都有明确目的和操作依据。
别直接用 root 操作,先按职责分角色。比如开发用 dev 用户,运维用 ops 用户,数据库维护用 dba 用户——每个账号只干一件事。
sudo useradd -m -s /bin/bash dev(-m 创建家目录,-s 指定可登录 Shell)sudo passwd dev,输入两次强密码(大小写字母+数字+符号)sudo groupadd devs,再把用户加进去:sudo usermod -aG devs dev
id dev,能看到 UID、GID 和所属组列表⚠️注意:不要手动改 /etc/passwd 或 /etc/shadow,必须用 useraddusermod 等命令,否则格式错会导致无法登录。
权限不是越宽越好,而是“刚好够用”。比如 代码目录,web 服务进程要能读,开发要能改,其他人不能碰。
ls -ld /var/www/html(看目录本身)或 ls -l /var/www/html(看里面文件)sudo chown -R dev:devs /var/www/html(-R 递归,让整个目录都归 dev 用户和 devs 组)sudo chmod -R 750 /var/www/html(所有者 rwx,组 r-x,其他人无权限)sudo chmod g+s /var/www/html,确保新文件自动继承组绝不给普通用户 root 密码,但又要让他们能重启服务或查日志——靠 sudo 精细授权。
sudo usermod -aG sudo dev
sudo visudo,添加一行:dev ALL=(root) /bin/systemctl restart nginx
su - dev 切换后运行 sudo systemctl status nginx,看是否成功✅关键原则:命令路径写全(/bin/systemctl 不是 systemctl),避免路径污染风险。
权限不是设一次就完事。人员变动、业务调整后,必须同步更新。
sudo lastlog -b 90(90 天没登录的用户)sudo passwd -l dev_old(加锁比删更安全,保留审计线索)find /home -type d ! -perm -755 -ls(找家目录权限过松的)sudo grep "sudo:" /var/log/auth.log(确认谁在什么时候执行了什么)不复杂但容易忽略——真正管住权限,靠的是日常习惯,不是某次配置。