sudo、root 与最小权限
sudo 做了什么
sudo command 以被授权身份执行一个命令,通常是 root。root 几乎可以绕过文件权限,因此“权限问题加 sudo”可能把一个小错误升级为系统事故。
sudo -l
sudo -k
sudo -l查看当前用户被允许执行什么。sudo -k清除缓存的 sudo 凭据,后续再次验证。
sudo -i 会进入 root 登录 Shell。它会弱化“每条高权限命令都显式可见”的提醒,不适合作为日常默认方式。
不要用 chmod 777 修问题
777 允许所有用户读、写、执行。正确做法是先查明:
ls -ld /srv/nloop
namei -l /srv/nloop/storage/file.zip
id
然后为运行服务的专用用户授予最小必要权限。递归执行 chmod -R、chown -R 前必须确认绝对路径、目录规模和符号链接边界。
服务用户边界
- Nginx Worker 通常使用
www-data。 - Node.js 应使用普通服务账号,不以 root 运行。
- MySQL、Redis 使用自己的系统用户。
- 应用只获得需要的上传目录、日志目录和端口权限。
不要用 sudo npm install、sudo yarn 去掩盖项目目录所有权问题。NVM 属于安装它的用户;混用 root 和普通用户会产生两套 Node.js、PM2 与缓存目录。
SSH 原则
生产服务器优先使用普通管理员账户 + sudo,禁用直接 root 登录之前,必须先在第二个会话验证新账户和密钥可用。