Linux用户管理命令详解
一、用户创建与管理
1.1 useradd命令详解
useradd是Linux系统中最基础的用户创建命令,功能强大参数较多,需要深入理解。
基本语法
useradd [选项] 用户名
核心参数详解
用户基本信息设置
# 创建用户时添加注释信息
useradd -c "Web Application User" webuser# 指定用户ID(UID)
useradd -u 1500 appuser# 指定用户过期时间(YYYY-MM-DD格式)
useradd -e 2024-12-31 tempuser# 设置密码过期天数
useradd -f 7 tempuser
家目录与Shell设置
# 创建用户并自动创建家目录
useradd -m newuser# 创建用户但不创建家目录
useradd -M serviceuser# 指定家目录路径
useradd -d /opt/appuser -m appuser# 指定用户登录Shell
useradd -s /sbin/nologin serviceuser
useradd -s /bin/bash normaluser
用户组设置
# 指定用户主组(初始组)
useradd -g developers devuser# 指定用户附加组(可多个)
useradd -G developers,admin,sshusers adminuser# 不创建与用户同名的组
useradd -N genericuser
实用示例
示例1:创建标准Web应用用户
useradd -m -s /bin/bash -c "Web Server User" -G www-data,sshusers webadmin
示例2:创建系统服务用户
useradd -r -s /sbin/nologin -d /opt/service -c "Service Account" serviceuser
示例3:创建临时用户
useradd -m -s /bin/bash -e 2024-12-31 -f 7 tempuser
1.2 usermod命令:用户属性修改
usermod命令用于修改已存在用户的属性,参数与useradd类似。
常用修改操作
# 修改用户注释信息
usermod -c "Updated Description" username# 修改用户家目录
usermod -d /new/home -m username# 修改用户登录Shell
usermod -s /bin/zsh username# 修改用户主组
usermod -g newgroup username# 修改用户附加组(替换原有附加组)
usermod -G group1,group2 username# 添加用户到新附加组(保留原有组)
usermod -aG newgroup username# 修改用户名
usermod -l newname oldname# 锁定用户账户
usermod -L username# 解锁用户账户
usermod -U username
1.3 userdel命令:用户删除
# 仅删除用户账户,保留家目录
userdel username# 删除用户及其家目录
userdel -r username# 强制删除用户(即使用户正在登录)
userdel -f username
1.4 passwd命令:密码管理
# 设置用户密码
passwd username# 修改当前用户密码
passwd# 锁定用户密码
passwd -l username# 解锁用户密码
passwd -u username# 强制用户下次登录时修改密码
passwd -e username# 设置密码过期天数
passwd -x 30 username# 设置密码最小使用天数
passwd -n 7 username# 设置密码过期前警告天数
passwd -w 7 username
二、权限管理命令
2.1 chmod命令:文件权限修改
chmod命令用于修改文件和目录的访问权限,是Linux权限管理的核心命令。
权限表示方法
数字表示法
- 4 = 读取权限 ®
- 2 = 写入权限 (w)
- 1 = 执行权限 (x)
- 0 = 无权限
常用权限组合
- 7 = rwx (4+2+1)
- 6 = rw- (4+2+0)
- 5 = r-x (4+0+1)
- 4 = r-- (4+0+0)
基本用法
数字模式
# 文件所有者:读写执行,组用户:读写,其他用户:读
chmod 764 filename# 目录所有者:读写执行,组用户:读执行,其他用户:无权限
chmod 750 dirname# 递归修改目录及其所有内容的权限
chmod -R 755 dirname
符号模式
# 给文件所有者添加执行权限
chmod u+x filename# 给组用户移除写权限
chmod g-w filename# 给其他用户添加读权限
chmod o+r filename# 同时给所有用户添加执行权限
chmod a+x filename# 复制权限(复制其他用户的权限设置)
chmod u=g filename # 文件所有者权限设置为与组用户相同
chmod g=u filename # 组用户权限设置为与文件所有者相同
高级用法
特殊权限设置
# 设置SUID(Set User ID)权限
chmod u+s filename# 设置SGID(Set Group ID)权限
chmod g+s dirname# 设置Sticky Bit权限
chmod +t dirname
2.2 chown命令:文件所有权修改
chown命令用于修改文件或目录的所有者和所属组。
基本语法
chown [选项] [所有者][:[组]] 文件/目录
常用用法
修改所有者
# 将文件所有者改为newuser
chown newuser filename# 递归修改目录及其所有内容的所有者
chown -R newuser dirname
修改所属组
# 将文件所属组改为newgroup
chown :newgroup filename# 同时修改所有者和所属组
chown newuser:newgroup filename# 使用冒号分隔的另一种写法
chown newuser.newgroup filename
批量修改
# 修改目录下所有文件的所有者
chown -R newuser /path/to/directory# 仅修改目录下所有文件(不包括子目录)的所有者
chown newuser /path/to/directory/*
2.3 chgrp命令:组所有权修改
chgrp命令专门用于修改文件或目录的所属组。
# 修改文件所属组
chgrp newgroup filename# 递归修改目录所属组
chgrp -R newgroup dirname# 修改多个文件的所属组
chgrp newgroup file1 file2 file3
三、在线用户监控
3.1 w命令:综合用户信息
w命令显示当前登录用户的详细信息,包括用户正在执行的进程。
# 显示所有在线用户信息
w# 不显示表头
w -h# 指定刷新间隔(秒)
w -i 5# 使用短格式显示
w -s
输出字段解释
12:34:56 # 系统当前时间
up 10 days # 系统运行时间
2 users # 当前在线用户数
load average: 0.05, 0.02, 0.00 # 系统负载(1分钟、5分钟、15分钟)USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
username pts/0 192.168.1.100 10:30 0.00s 0.12s 0.01s -bash
3.2 who命令:用户登录信息
who命令显示当前登录用户的基本信息。
# 显示当前登录用户
who# 显示系统启动时间、运行时间和登录用户数
who -b -d -l -p -r -t -T# 显示所有登录记录
who -a# 显示用户的主机名或IP地址
who -u
3.3 users命令:简单用户列表
users命令以简洁方式显示当前登录用户。
# 显示所有登录用户名(用空格分隔)
users# 统计登录用户数
users | wc -w
3.4 last命令:用户登录历史
last命令显示用户登录历史记录,包括当前和过去的登录会话。
# 显示所有用户的登录历史
last# 显示特定用户的登录历史
last username# 显示最近的n条登录记录
last -n 10# 显示完整的登录/登出时间
last -F# 显示主机名
last -a# 显示系统关机和重启记录
last -x# 显示特定时间段的登录记录
last -s "2024-01-01" -t "2024-01-31"
3.5 lastlog命令:最近登录记录
lastlog命令显示所有用户最近一次登录的信息。
# 显示所有用户的最近登录记录
lastlog# 显示特定用户的最近登录记录
lastlog -u username# 显示最近n天内登录的用户
lastlog -t 30# 显示UID在指定范围内的用户
lastlog -u 1000-2000
四、用户信息查询
4.1 id命令:用户身份识别
id命令显示用户和组的UID和GID信息。
# 显示当前用户信息
id# 显示特定用户信息
id username# 仅显示用户ID
id -u# 仅显示组ID
id -g# 显示所有组ID
id -G# 显示名称而非数字
id -n
4.2 groups命令:用户组信息
# 显示当前用户所属的所有组
groups# 显示特定用户所属的所有组
groups username
4.3 finger命令:用户详细信息
# 显示用户详细信息
finger username# 显示所有登录用户信息
finger# 显示用户计划任务
finger -l username
五、高级用户管理
5.1 批量用户管理
# 批量创建用户(结合循环)
for user in user1 user2 user3; douseradd -m -s /bin/bash $userecho "$user:Password123" | chpasswdchage -d 0 $user # 强制首次登录修改密码
done# 批量删除用户
for user in user1 user2 user3; douserdel -r $user
done
5.2 用户活动监控
# 监控用户登录活动
watch -n 5 'who -u'# 监控用户CPU使用情况
watch -n 2 'ps aux --sort=-%cpu | head -10'# 查看用户进程
ps -u username# 查看用户打开的文件
lsof -u username
5.3 安全检查
# 检查无密码用户
awk -F: '($2 == "") {print $1}' /etc/shadow# 检查UID为0的非root用户
awk -F: '($3 == 0) {print $1}' /etc/passwd# 检查可登录用户
grep -v 'nologin\|false' /etc/passwd# 定期审查用户权限
find /home -type f -perm -o+w -exec ls -l {} \;
六、故障排除
6.1 常见问题及解决方案
问题1:无法创建用户
# 检查用户是否已存在
id username# 检查UID是否冲突
awk -F: '{print $3}' /etc/passwd | sort -n# 检查磁盘空间
df -h
问题2:用户无法登录
# 检查用户Shell
grep username /etc/passwd# 检查账户是否锁定
passwd -S username# 检查家目录权限
ls -ld /home/username
问题3:权限设置不生效
# 检查文件系统权限
ls -l filename# 检查SELinux状态
getenforce# 检查文件系统挂载选项
mount | grep $(df filename --output=target | tail -1)
