云服务器添加的新用户需要配置哪些权限才能正常使用?

为云服务器(如阿里云、腾讯云、AWS等)上新建的用户配置“正常使用”权限,需根据具体使用场景(如仅SSH登录、部署Web应用、管理服务、开发调试等)来决定,但核心原则是:遵循最小权限原则(Principle of Least Privilege),避免直接授予 root 权限。

以下是通用、安全且实用的配置步骤和建议:


✅ 一、基础必备配置(所有新用户都应完成)

  1. 创建用户(非 root)

    sudo adduser username        # 交互式创建(推荐,自动建家目录、设密码)
    # 或
    sudo useradd -m -s /bin/bash username  # -m 创建家目录,-s 指定默认 shell
    sudo passwd username         # 设置密码(若未在 adduser 中设置)
  2. 配置 SSH 免密登录(推荐,更安全)

    • 在本地生成密钥对(ssh-keygen -t ed25519
    • 将公钥 id_ed25519.pub 内容追加到服务器该用户的 ~/.ssh/authorized_keys
    • 确保权限正确:
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys
      chown -R username:username ~/.ssh
    • (可选)禁用密码登录(在 /etc/ssh/sshd_config 中设 PasswordAuthentication no,重启 sudo systemctl restart sshd
  3. 配置 Shell 和环境(确保可用)

    • 检查默认 shell 是否有效:grep username /etc/passwd → 应含 /bin/bash/bin/zsh
    • 可复制基础配置(如 .bashrc, .profile)或初始化:
      sudo cp /etc/skel/.bash* /home/username/
      sudo chown -R username:username /home/username/

✅ 二、按需授权(关键!避免直接给 sudo/root)

使用场景 推荐授权方式 示例命令 / 配置
日常运维、软件安装、服务管理 ✅ 添加至 sudo 组(Debian/Ubuntu)或 wheel 组(CentOS/RHEL)
⚠️ 务必限制 sudo 权限(见下文加固)
sudo usermod -aG sudo username(Ubuntu)
sudo usermod -aG wheel username(CentOS 8+/RHEL 8+)
运行 Web 服务(Nginx/Apache/Node.js) ❌ 不需要 sudo;✅ 赋予对项目目录、日志、静态资源的读写权限 bash<br>sudo chown -R username:www-data /var/www/myapp<br>sudo chmod -R 755 /var/www/myapp<br>sudo setfacl -R -m u:username:rwx /var/log/myapp # 如需日志写入<br>
Docker 操作 ✅ 加入 docker 组(避免每次 docker 命令都 sudo) sudo usermod -aG docker username
⚠️ 注意:docker 组等价于 root 权限,仅信任用户才添加
数据库管理(MySQL/PostgreSQL) ✅ 创建数据库级用户 + 授权,而非 OS 级 sudo mysql -u root -p -e "CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'pwd'; GRANT ALL ON mydb.* TO 'appuser'@'localhost';"
定时任务(crontab) ✅ 用户自有 crontab 即可(crontab -e),无需 sudo crontab -u username -e(管理员可编辑,但普通用户只需自己运行)

✅ 三、sudo 权限安全加固(强烈建议!)

若用户需 sudo禁止无限制 ALL=(ALL:ALL) ALL,改用精细化授权:

  1. 编辑 sudoers(安全方式):
    sudo visudo
  2. 添加限制性规则(示例):

    # 允许重启 nginx、查看日志,但不能执行任意命令
    username ALL=(root) /usr/bin/systemctl restart nginx, 
                   /usr/bin/systemctl status nginx, 
                   /usr/bin/journalctl -u nginx*, 
                   /bin/cat /var/log/nginx/*.log
    
    # 允许管理特定服务(如 docker 容器)
    username ALL=(root) /usr/bin/docker start *, /usr/bin/docker stop *, /usr/bin/docker logs *
  3. ✅ 启用 requiretty 和日志审计(可选增强):
    Defaults:username !requiretty
    Defaults logfile=/var/log/sudo.log

✅ 四、其他安全与可用性建议

  • 🔐 禁用 root 远程 SSH 登录(在 /etc/ssh/sshd_config 中设 PermitRootLogin no
  • 📦 安装常用工具(用户级或系统级):
    # Ubuntu/Debian
    sudo apt update && sudo apt install -y curl wget git vim htop unzip
    # CentOS/RHEL
    sudo yum install -y curl wget git vim-enhanced htop unzip
  • 🌐 配置防火墙白名单(如 ufwfirewalld),仅开放必要端口(22, 80, 443 等)
  • 📝 记录操作日志:启用 auditd 或定期检查 /var/log/auth.log / secure
  • 🔄 定期轮换密钥/密码,尤其对生产环境用户

❌ 绝对避免的操作(高危!)

  • sudo usermod -aG sudo username 后不加限制就让用户随意 sudo su -sudo bash
  • 直接修改 /etc/passwd 将用户 UID 改为 0(等同 root)
  • 将新用户加入 root 组(Linux 中 root 组无特殊权限,但易混淆且违反最小权限)
  • 在生产环境长期使用密码登录 SSH(易被暴力破解)

✅ 快速验证清单(创建后必做)

检查项 命令/方法
✅ 能否 SSH 登录? ssh username@your-server-ip
ls, cd, vim 是否正常? 登录后执行基本命令
sudo -l 是否显示预期权限? 查看当前 sudo 权限范围
groups 是否包含所需组(如 sudo, docker)? groups username
✅ 能否访问目标目录/服务? ls /var/www, systemctl --user status(如启用 user session)

如告知您的具体用途(例如:“部署 Python Flask 应用”、“管理 MySQL 数据库”、“作为 Jenkins agent 用户”),我可以为您定制一份精准的权限配置脚本 👇

是否需要我提供一个 一键初始化新用户的 Bash 脚本模板(含安全加固)?

未经允许不得转载:ECLOUD博客 » 云服务器添加的新用户需要配置哪些权限才能正常使用?