Linux用户权限与进程管理深度解析
用户权限管理和进程控制是Linux系统管理的两大核心技能。掌握这些知识不仅能确保系统安全,还能有效监控和优化系统性能。本文将深入解析Linux的用户组织架构、权限控制机制和进程管理技术。
文章目录
- 一.用户与组管理体系
- 用户分类和标识
- UID分类标准
- 用户配置文件详解
- /etc/passwd 文件结构
- /etc/shadow 密码文件
- 组管理配置
- /etc/group 组配置文件
- /etc/gshadow 组密码文件
- 二.文件权限控制系统
- UGO权限模型
- 权限数值对应关系
- 权限表示方法
- 权限修改命令
- chmod - 修改文件权限
- chown - 修改文件所有权
- 组管理命令
- 三.进程管理深度解析
- 进程类型分类
- 按运行方式分类
- 进程状态标识符
- 进程运行状态
- 进程查看命令
- ps - 静态进程查看
- 获取进程ID的多种方法
- 动态进程监控
- top - 实时进程监控
- 进程信号控制
- kill - 发送信号给进程
- 进程优先级管理
- 优先级范围和类型
- 优先级调整命令
- 四.作业控制和后台运行
- Screen 会话管理
- 后台进程管理
- nohup - 不挂断运行
- 作业控制命令
- 五.实践应用场景
- 系统管理最佳实践
- 常见故障排查
- 六.总结
一.用户与组管理体系
用户分类和标识
Linux系统中每个用户都有唯一的用户标识符(UID)和所属组标识符(GID):
UID分类标准
0 # 超级用户 (root)
1-99 # 系统自动创建的系统用户
100-499 # 手动创建的系统用户 (伪用户)
500-65535 # 普通用户
常见的系统用户包括:
- root: 系统管理员,拥有最高权限
- www: Web服务器用户,运行Apache/Nginx
- ftp: FTP服务用户
- mysql: 数据库服务用户
用户配置文件详解
/etc/passwd 文件结构
root:x:0:0:root:/root:/bin/bash
字段解析:
用户名:密码占位符:UID:GID:描述信息:家目录:默认Shell
- 用户名: 登录系统使用的名称
- 密码占位符:
x
表示密码存储在/etc/shadow
中 - UID: 用户唯一标识符
- GID: 用户主组标识符
- 描述信息: 用户全名或备注
- 家目录: 用户登录后的默认目录
- 默认Shell: 用户登录后使用的命令解释器
/etc/shadow 密码文件
root:$6$salt$hashedpassword:18800:0:99999:7:14:19000:
字段含义:
用户名:加密密码:最后修改时间:最小修改间隔:密码有效期:过期警告期:宽限期:账号失效时间:保留字段
- 加密密码: 使用SHA-512算法加密
- 时间字段: 以1970年1月1日为起点的天数
- 密码策略: 控制密码修改和失效规则
组管理配置
/etc/group 组配置文件
users:x:1000:alice,bob
格式说明:
组名:组密码占位符:GID:组成员列表
/etc/gshadow 组密码文件
users:*:admin:alice,bob,charlie
字段解析:
组名:加密密码:组管理员:组附加用户列表
二.文件权限控制系统
UGO权限模型
Linux采用UGO (User, Group, Other) 权限模型:
权限数值对应关系
r (读取) = 4
w (写入) = 2
x (执行) = 1
- (无权限) = 0
权限表示方法
rw-r--r-- # 644 权限示例
rwx------ # 700 权限示例
rwxr-xr-x # 755 权限示例
权限组成:
- 前3位: 文件所有者权限 (User)
- 中3位: 所属组权限 (Group)
- 后3位: 其他用户权限 (Other)
权限修改命令
chmod - 修改文件权限
# 数字方式修改权限
chmod 755 filename
chmod 644 filename# 符号方式修改权限
chmod u+x filename # 给所有者添加执行权限
chmod g-w filename # 移除组写权限
chmod o=r filename # 设置其他用户只读权限
chmod a+r filename # 给所有用户添加读权限
chown - 修改文件所有权
# 修改文件所有者
chown username filename# 修改文件所有者和组
chown username:groupname filename# 仅修改文件所属组
chown :groupname filename# 递归修改目录权限
chown -R username:groupname directory/
组管理命令
# 创建组
groupadd groupname
groupadd -g 9008 users2 # 指定GID创建组# 修改组名
groupmod -n newname oldname# 删除组
groupdel groupname# 设置组密码
gpasswd groupname# 设置组管理员
gpasswd -A username groupname# 添加用户到组
gpasswd -a test2 users1
usermod -a -G groupname username# 从组中移除用户
gpasswd -d username groupname
三.进程管理深度解析
进程类型分类
按运行方式分类
- 守护进程 (Daemon): 系统启动时启动,与终端无关,持续运行
- 前台进程: 与终端关联,通过终端启动和控制
进程状态标识符
< # 高优先级进程
N # 低优先级进程
+ # 前台进程组成员
s # 会话领导进程
l # 多线程进程
进程运行状态
R # Running (运行中)
S # Sleep (睡眠)
D # Disk Sleep (不可中断睡眠)
T # Stopped (停止)
Z # Zombie (僵尸进程)
X # Dead (死亡)
进程查看命令
ps - 静态进程查看
# 查看所有与终端相关的进程
ps -aux
# a = 显示与终端相关的进程
# u = 以用户为中心显示
# x = 显示与终端无关的进程# 查看所有进程详细信息
ps -ef
# e = 显示所有进程
# f = 显示完整格式信息
获取进程ID的多种方法
# 方法1: 查看PID文件
cat /run/sshd.pid# 方法2: 使用grep过滤
ps aux | grep sshd# 方法3: 使用pgrep命令
pgrep -l sshd# 方法4: 使用pidof命令
pidof sshd# 显示进程树
pstree
动态进程监控
top - 实时进程监控
# 基本使用
top# 设置刷新间隔
top -d 1 # 每秒刷新一次# 监控指定进程
top -d 1 -p [进程ID]# 监控指定用户的进程
top -d 1 -u username
top界面常用交互命令:
q
: 退出k
: 杀死进程r
: 调整进程优先级M
: 按内存使用率排序P
: 按CPU使用率排序
进程信号控制
kill - 发送信号给进程
# 查看所有可用信号
kill -l# 常用信号控制
kill -1 [进程ID] # SIGHUP: 重新加载配置
kill -2 [进程ID] # SIGINT: 中断进程 (Ctrl+C)
kill -9 [进程ID] # SIGKILL: 强制终止进程
kill -15 [进程ID] # SIGTERM: 正常终止进程 (默认)# 批量终止进程
killall processname
pkill processname
进程优先级管理
优先级范围和类型
实时优先级: 0-99 (数字越小优先级越高)
静态优先级: 100-139 (数字越小优先级越高)
Nice值: -20 到 19 (数字越小优先级越高)
优先级调整命令
# 以指定nice值启动程序
nice -n 10 command# 查看进程nice值
ps axo pid,command,nice --sort=nice# 调整运行中进程的nice值
renice -10 [进程ID] # 提高优先级
renice 15 [进程ID] # 降低优先级# 后台运行低优先级任务
sleep 60 & # 后台睡眠60秒
四.作业控制和后台运行
Screen 会话管理
# 创建新的screen会话
screen -S sessionname# 创建并执行命令
screen -S 'ping_google' -d -m ping www.google.com# 列出所有screen会话
screen -list# 恢复screen会话
screen -r sessionname# 分离当前会话
Ctrl + A, D# 终止所有screen进程
pkill screen
后台进程管理
nohup - 不挂断运行
# 后台运行脚本,输出重定向到文件
nohup ./script.sh &# 后台运行并指定输出文件
nohup ./script.sh > output.log 2>&1 &# 查看nohup进程
jobs # 查看当前会话的作业
ps aux | grep script # 查看具体进程
作业控制命令
# 将前台进程放入后台
Ctrl + Z # 暂停当前前台进程
bg # 继续在后台运行# 将后台进程调到前台
fg # 将最近的后台作业调到前台
fg %1 # 将作业号为1的进程调到前台# 查看作业状态
jobs -l # 显示详细作业信息
五.实践应用场景
系统管理最佳实践
- 权限最小化原则: 只给用户必需的最小权限
- 定期清理进程: 及时清理僵尸进程和无用进程
- 监控系统资源: 使用top、htop监控系统性能
- 合理调整优先级: 为重要进程分配更高优先级
常见故障排查
# 查找占用资源最多的进程
ps aux --sort=-%cpu | head -10 # CPU占用最高的10个进程
ps aux --sort=-%mem | head -10 # 内存占用最高的10个进程# 查找僵尸进程
ps aux | grep -w Z# 查找特定端口的进程
netstat -tulpn | grep :80
lsof -i :80
六.总结
Linux用户权限和进程管理是系统管理的核心技能。通过本文的深入讲解,读者应该能够:
- 理解Linux用户组织架构和配置文件结构
- 掌握UGO权限模型和权限修改方法
- 熟练使用进程查看和控制命令
- 有效管理进程优先级和后台任务
- 应用Screen和nohup进行高级作业控制
这些技能为构建安全、高效的Linux系统环境奠定了坚实基础。建议读者通过实际操作加深理解,逐步提升系统管理能力。掌握这些核心概念后,就能够有效管理多用户环境,优化系统性能,确保系统稳定运行。