[linux]普通用户的管理(创建,登录,删除)

494 阅读5分钟

一、用户创建

1. 基本创建命令

sudo useradd [选项] 用户名
常用选项:

-   `-m`:创建用户的家目录(通常位于 `/home/用户名`)
-   `-s`:指定用户的默认shell,例如 `/bin/bash`
-   `-G`:指定用户的附加组(用户可以有多个组)
-   `-d`:指定用户家目录的路径

# 创建用户(不创建家目录)
sudo useradd username

# 创建用户并创建家目录
sudo useradd -m username

# 创建用户并指定家目录
sudo useradd -m -d /path/to/home username

# 创建用户并指定UID
sudo useradd -u 1005 username

# 创建用户, 创建家目录, 并指定默认shell(推荐)
sudo useradd -m -s /bin/bash username

# 完整示例
sudo useradd -m -s /bin/bash -c "User Description" username

2. adduser命令(交互式,推荐)

# Ubuntu/Debian等系统
sudo adduser username
# 会提示设置密码、用户信息等

3. 创建用户时指定附加组

# 创建用户并添加到多个组
sudo useradd -m -G group1,group2 username

二、设置/修改密码

1. 为用户设置密码

# 设置密码(会提示输入两次)
sudo passwd username

# 当前用户修改自己的密码
passwd

2. 密码策略设置

# 查看密码状态
sudo passwd -S username

# 锁定用户密码(禁止登录)
sudo passwd -l username

# 解锁用户密码
sudo passwd -u username

# 强制用户下次登录修改密码
sudo passwd -e username

三、用户登录

1. 切换用户

# 切换到其他用户(需要密码)
su - username

# 切换到其他用户但不切换环境变量
su username

# 切换到root用户
sudo su -

2. SSH远程登录

# 客户端连接
ssh username@server_ip
ssh -p port username@server_ip

# 密钥登录(无密码登录)
# 1. 生成密钥对
ssh-keygen

# 2. 将公钥复制到服务器
ssh-copy-id username@server_ip

3. 登录相关配置

# 查看当前登录用户
whoami
who
w

# 查看用户最后登录时间
last username

四、用户删除

1. 删除用户

# 删除用户但保留家目录
sudo userdel username

# 删除用户同时删除家目录
sudo userdel -r username

# 强制删除(即使用户已登录)
sudo userdel -f username

# 删除用户及其家目录、邮件目录
sudo userdel -r -f username

2. 删除前的检查

# 查看用户进程
ps -u username

# 查看用户文件
find / -user username 2>/dev/null

# 杀死用户所有进程
sudo pkill -u username
sudo killall -u username

五、用户修改

1. 修改用户属性

# 修改用户名
sudo usermod -l newname oldname

# 修改用户UID
sudo usermod -u 1006 username

# 修改用户家目录
sudo usermod -d /new/home/dir -m username

# 修改用户默认shell
sudo usermod -s /bin/zsh username

# 修改用户注释/描述
sudo usermod -c "New Description" username

# 修改用户主组
sudo usermod -g groupname username

# 添加用户到附加组
sudo usermod -aG groupname username

六、用户组管理

1. 组操作

# 创建组
sudo groupadd groupname

# 删除组
sudo groupdel groupname

# 修改组名
sudo groupmod -n newgroup oldgroup

# 查看用户所属组
groups username
id username

2. 组权限管理

# 将文件所有者改为用户和组
sudo chown username:groupname filename

# 修改目录下所有文件
sudo chown -R username:groupname directory/

七、用户配置文件

1. 重要配置文件

# 用户信息文件
/etc/passwd
# 格式:username:x:UID:GID:描述:家目录:默认shell

# 密码文件(加密)
/etc/shadow

# 组信息文件
/etc/group

# 用户默认配置
/etc/default/useradd
/etc/login.defs

# 用户家目录模板
/etc/skel/

2. 用户环境文件

~/.bashrc      # bash配置
~/.bash_profile # bash环境
~/.profile     # 用户环境
~/.ssh/        # SSH密钥

八、用户权限管理

1. sudo权限配置

# 将用户添加到sudo组
sudo usermod -aG sudo username  # Ubuntu/Debian
sudo usermod -aG wheel username # CentOS/RHEL

# 编辑sudoers文件
sudo visudo
# 或
sudo nano /etc/sudoers

# 添加权限示例
username ALL=(ALL) ALL
username ALL=(ALL) NOPASSWD:ALL  # 免密码sudo

2. 文件权限

# 设置用户对文件的权限
chmod u+rwx filename  # 给用户添加读写执行权限
chmod go-rwx filename # 移除组和其他用户的权限

九、实用命令和技巧

1. 用户信息查询

# 查看所有用户
cat /etc/passwd
cut -d: -f1 /etc/passwd

# 查看用户详细信息
id username
finger username  # 可能需要安装

# 查看登录用户
users
who
last

# 查看用户创建的进程
pgrep -u username
ps -u username

2. 批量用户管理

# 批量创建用户
for user in user1 user2 user3; do
    sudo useradd -m $user
    echo "$user:password123" | sudo chpasswd
done

# 批量修改密码
sudo chpasswd < users.txt
# users.txt内容:username:password

3. 账户锁定与解锁

# 锁定账户(禁止登录)
sudo usermod -L username
sudo passwd -l username

# 解锁账户
sudo usermod -U username
sudo passwd -u username

# 设置账户过期时间
sudo usermod -e 2024-12-31 username
sudo chage -E "2024-12-31" username

十、安全最佳实践

  1. 强密码策略:使用复杂密码,定期更换
  2. 最小权限原则:只授予必要的权限
  3. 定期审计:检查用户活动和不必要的账户
  4. 使用密钥认证:SSH登录使用密钥而非密码
  5. 禁用root远程登录:修改 /etc/ssh/sshd_config
  6. 设置登录超时:配置自动注销
  7. 监控登录尝试:检查 /var/log/auth.log/var/log/secure

十一、故障排查

# 用户无法登录
1. 检查密码是否锁定:sudo passwd -S username
2. 检查shell是否正确:cat /etc/passwd | grep username
3. 检查家目录权限:ls -ld /home/username
4. 检查账户是否过期:sudo chage -l username

# 用户权限问题
1. 检查用户所属组:groups username
2. 检查sudo配置:sudo -l -U username
3. 检查文件权限:ls -l filename

通过上述命令和操作,您可以全面管理Linux系统中的普通用户账户。记得在生产环境中操作前做好备份,并遵循最小权限原则以确保系统安全。