Linux 用户操作管理

一、用户基础管理

1. 添加新用户

sudo useradd -m -s /bin/bash 用户名    # -m 创建家目录,-s 指定登录 shell
sudo passwd 用户名                     # 设置密码

推荐:创建时直接指定 shell 为 /bin/bash,避免后续修改。

2. 修改已有用户的默认 Shell

sudo chsh -s /bin/bash 用户名

3. 赋予用户 root 权限(sudo)

  • Debian / Ubuntusudo usermod -aG sudo 用户名
  • CentOS / RHELsudo usermod -aG wheel 用户名

或通过 visudo 添加:

用户名 ALL=(ALL:ALL) ALL

4. 删除用户

sudo userdel -r 用户名      # -r 同时删除家目录和邮件池

二、用户查看与审计

1. 列出所有用户

cat /etc/passwd | cut -d: -f1          # 仅用户名
getent passwd | cut -d: -f1             # 更通用(支持 LDAP)

2. 区分普通用户与系统用户

  • 系统用户通常 UID < 1000,普通用户 UID ≥ 1000
awk -F: '$3 >= 1000 {print $1, $3}' /etc/passwd

3. 查看用户最后登录时间

lastlog                     # 所有用户的最后一次登录
lastlog | grep "Never"      # 从未登录的用户

4. 查找不活跃用户(超过 90 天未登录)

lastlog -b 90

5. 查看当前登录的用户

who          # 简单列表
w            # 详细信息(含空闲时间)

三、sudo 与 root 环境的区别

特性sudo commandsudo -i / sudo su -
权限完全等同于 root完全等同于 root
环境变量继承普通用户(HOME 不变)加载 root 的环境(HOME=/root)
当前目录停留在原目录切换到 /root
配置文件不加载 root 的 dotfiles加载 root 的 .bashrc 等

总结sudo 仅提升权限,不改变运行环境;sudo -i 获得完整的 root 登录环境。


四、SSH 安全加固

1. 禁止 root 远程登录

编辑 /etc/ssh/sshd_config

PermitRootLogin no

重启服务:sudo systemctl restart sshd

注意:禁止前请确保存在一个可 sudo 的普通用户。

2. 公钥认证(PubkeyAuthentication)

  • PubkeyAuthentication yes:允许客户端使用密钥对登录。
  • 配合 PasswordAuthentication no 可实现仅密钥登录,极大提高安全性。

客户端生成密钥对

ssh-keygen -t ed25519 -C "comment"

服务端添加公钥

将客户端公钥(id_ed25519.pub)内容追加到 ~/.ssh/authorized_keys

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

3. SSH 认证失败常见原因

  • 客户端私钥权限过宽(应 600
  • 服务器端 authorized_keys.ssh 目录权限错误(目录 700,文件 600
  • 服务器配置 PasswordAuthentication no 且未配置公钥
  • AuthenticationMethods 限制了认证方式

调试方法:ssh -vvv user@host


五、实用操作示例

任务命令
创建用户并指定 shellsudo useradd -m -s /bin/bash alice
设置密码sudo passwd alice
加入 sudo 组sudo usermod -aG sudo alice
查看 alice 的 UID 和 shellid alicegrep alice /etc/passwd
锁定用户(禁止登录)sudo passwd -l alice
解锁用户sudo passwd -u alice
查看所有用户最后登录lastlog
仅显示从未登录的普通用户lastlog | awk 'NR==1 || ($3>=1000 && /Never logged in/)'

六、安全最佳实践

  1. 禁用 root 远程 SSH,使用普通用户 + sudo 执行管理任务。
  2. 强制使用公钥认证,禁止密码登录(除非有特殊需求)。
  3. 定期审计用户:清理离职员工账户、锁定超过 90 天未登录的账户。
  4. 检查无主文件(用户已删除但文件残留):
    find / -nouser -o -nogroup 2>/dev/null
    
  5. 使用 visudo 编辑 sudoers,避免语法错误导致 sudo 不可用。

文档版本 1.0 | 适用于 Debian/Ubuntu/CentOS 等主流发行版