资讯动态

Linux 文件权限进阶与进程管理

发布时间:2026/9/12 20:51:07 来源:尧图企业网站定制
Linux 文件权限进阶与进程管理核心内容umask 默认权限掩码 | 特殊权限 SUID/SGID/Sticky | 文件扩展属性 | 进程基础与状态 | 进程查看与作业控制 | 进程信号 | 僵尸/孤儿进程文章目录Linux 文件权限进阶与进程管理一、文件默认权限umask 掩码1. 核心作用2. 计算示例3. 常用操作二、文件特殊权限SUID / SGID / Sticky核心对照表1. SUID 详解2. SGID 详解3. Sticky 粘滞位详解4. 设置与查找三、文件扩展属性chattr1. 两个核心属性2. 常用操作四、进程基础概念1. 核心定义2. 进程的组成3. 进程的产生fork 机制五、进程状态状态对照表状态转换流程六、进程查看命令ps1. 常用组合2. 筛选进程3. 关键字段说明七、前后台进程与作业控制1. 前台 vs 后台2. 作业控制命令3. 脱离终端运行1nohup2screen八、进程信号常用核心信号信号发送命令1kill2pkill / pgrep九、特殊进程僵尸进程与孤儿进程1. 僵尸进程产生原因解决方法2. 孤儿进程产生原因对比总结一、文件默认权限umask 掩码1. 核心作用umask 是新建文件/目录时要剔除的权限用来控制系统默认创建文件的权限。目录默认最大权限777 (rwxrwxrwx)文件默认最大权限666 (rw-rw-rw-)文件默认不赋予执行权限出于安全考虑最终权限 最大默认权限 - umask 掩码权限2. 计算示例系统默认 umask 为0022新建目录777 - 022 755 →drwxr-xr-x新建文件666 - 022 644 →-rw-r--r--3. 常用操作# 查看当前umask值umask# 临时设置当前终端生效umask077# 新建文件仅用户自己可读写组和其他无任何权限# 永久生效# 单个用户写入 ~/.bashrcechoumask 077~/.bashrc# 所有用户写入 /etc/bashrcechoumask 077/etc/bashrc二、文件特殊权限SUID / SGID / Sticky基础 rwx 之外的三种特殊权限用于实现特定的权限功能对应位置在权限位的最前面。核心对照表特殊权限对文件的影响对目录的影响典型示例数字值SUIDus执行可执行文件时以文件所有者的身份运行而非执行者身份无影响/usr/bin/passwd普通用户修改密码时临时获得root权限4SGIDgs执行可执行文件时以文件所属组的身份运行目录内新建的文件/子目录自动继承该目录的组所有者/run/log/journal日志目录保证日志文件统一归属日志组2Stickyot无影响对目录有写权限的用户只能删除自己拥有的文件无法删除他人文件/tmp公共临时目录防止用户随意删除他人文件11. SUID 详解仅对可执行的二进制文件有效对脚本、目录无效。权限位表现用户执行位的x变成s如-rwsr-xr-x。风险如果给 vim、bash 等工具加 SUID普通用户可以直接获得 root 权限属于高危操作。2. SGID 详解对目录是团队协作的常用手段确保同组用户在目录下创建的文件都属于同一个组方便共享。权限位表现组执行位的x变成s如drwxrwsr-x。3. Sticky 粘滞位详解仅对目录生效是公共目录的安全机制。权限位表现其他用户执行位的x变成t如drwxrwxrwt。4. 设置与查找# 添加SUIDchmodus /usr/bin/vim# 添加SGIDchmodgs /data/webapp# 添加Stickychmodot /tmp# 数字方式设置4SUID 2SGID 1Sticky放在三位权限前chmod4755file# SUID 755chmod2775dir# SGID 775chmod1777tmpdir# Sticky 777# 查找系统中所有带SUID的文件find/-perm-4000三、文件扩展属性chattr比基础权限更底层的文件属性root 用户也受约束用于保护关键文件不被修改/删除。1. 两个核心属性属性作用适用场景iimmutable不可变更文件不能修改、删除、重命名不能追加内容保护系统关键配置文件防止误改误删aappend only仅追加只能在文件末尾追加内容不能覆盖、删除日志文件保证日志只能新增不能篡改2. 常用操作# 添加i属性锁定文件chattr i /etc/passwd.bak# 移除i属性chattr-i/etc/passwd.bak# 添加a属性chattr a /var/log/operator.log# 查看文件扩展属性lsattr /etc/passwd.bak注意扩展属性高于常规权限即使是 root 用户给文件加了i属性后也无法修改删除必须先移除属性。四、进程基础概念1. 核心定义程序静态的可执行文件存储在磁盘上。进程运行起来的程序是程序的运行实例占用 CPU、内存等系统资源。线程进程内的执行单元一个进程可以有多个线程。2. 进程的组成独立的内存地址空间安全属性所有者、权限一个或多个执行线程进程状态环境变量、文件描述符等资源3. 进程的产生fork 机制Linux 中所有进程都是通过fork复制创建的父进程调用 fork复制出一个子进程子进程通过exec加载新的程序代码运行子进程退出时向父进程发送信号由父进程回收状态系统中所有进程的祖先是 PID1 的systemd进程CentOS7。五、进程状态Linux 进程有多种状态在不同条件间转换核心状态如下状态对照表状态标识状态名称内核定义说明R运行/就绪态TASK_RUNNING正在CPU上执行或在就绪队列等待调度S可中断睡眠TASK_INTERRUPTIBLE等待事件/资源收到信号可以唤醒D不可中断睡眠TASK_UNINTERRUPTIBLE等待硬件IO不响应信号保证IO过程不被打断T停止态TASK_STOPPED被暂停收到CONT信号可恢复Z僵尸态EXIT_ZOMB子进程已退出但父进程未回收其退出状态仅保留PID等信息X销毁态EXIT_DEAD父进程回收完成进程彻底释放系统中不可见状态转换流程新建 → 就绪(R) ←→ 运行(R) → 退出 → 僵尸(Z) → 回收(X) ↑ ↓ 睡眠(S/D/T)运行中的进程调用系统调用、等待资源时进入睡眠状态睡眠的进程等待的事件到达时回到就绪态收到停止信号进入T状态收到继续信号恢复六、进程查看命令psps 是查看系统进程信息的核心命令支持多种筛选和输出格式。1. 常用组合# 查看所有进程简略ps-e# 查看所有进程详细信息UID/PID/PPID/启动时间ps-ef# 查看所有进程BSD风格含CPU/内存占用psaux# 树形显示进程父子关系psaxf# 自定义输出列ps-opid,%cpu,%mem,command2. 筛选进程# 查看指定用户的进程ps-uhero# 查看指定终端的进程ps-tpts/0# 按名称筛选ps-Cnginx# 按CPU使用率降序排序psaux--sort-%cpu3. 关键字段说明PID进程ID唯一标识PPID父进程ID%CPUCPU使用率%MEM内存使用率TTY进程所属终端?表示后台守护进程STAT进程状态TIME进程累计占用CPU的时间COMMAND进程名称七、前后台进程与作业控制1. 前台 vs 后台类型特点前台进程占用终端可接收键盘输入一个终端同一时间只有一个前台进程后台进程不占用终端无法接收键盘输入在后台静默运行2. 作业控制命令# 后台启动sleep进程300秒启动了一个专门用来休眠300秒的进程sleep300# 查看当前终端的后台作业jobs# 暂停前台进程CtrlZ# 把正在运行的前台进程暂停放到后台停止状态# 将作业切到前台运行fg%1# %1 是jobs里的作业编号# 将暂停的作业放到后台继续运行bg%23. 脱离终端运行终端关闭时后台进程会收到HUP信号终止需要工具让进程脱离终端1nohup让进程忽略终端挂起信号终端关闭后继续运行nohup./study.sh2screen虚拟终端工具创建独立的终端会话关闭真实终端不影响# 新建screen会话screen# 列出所有screen会话screen-ls# 重新连接会话screen-r会话ID# 退出并关闭会话exit八、进程信号信号是发给进程的软中断用来通知进程发生了特定事件进程可以响应、忽略或被强制终止。常用核心信号编号名称含义触发方式特点1HUP挂起/重载终端关闭、手动发送通常用于让服务重新加载配置不终止进程2INT中断CtrlC终止前台进程可被拦截3QUIT退出Ctrl\终止进程并生成转储文件9KILL强制杀死手动发送不可拦截、不可忽略必定终止进程15TERM终止kill默认信号友好终止允许进程清理资源后退出可拦截18CONT继续手动发送恢复暂停的进程不可拦截19STOP停止手动发送强制暂停不可拦截20TSTP终端停止CtrlZ暂停前台进程可拦截信号发送命令1kill按 PID 或作业号给单个进程发信号# 默认发15号TERM信号终止进程kill1234# 指定信号kill-91234# 强制杀死kill-STOP%1# 暂停作业1kill-CONT%1# 恢复作业12pkill / pgrep按进程名、用户、终端批量操作# 按名称查找进程PIDpgrepsleep# 按名称批量终止进程pkillsleep# 终止指定用户的所有进程pkill-ulaoma# 终止指定终端的所有进程pkill-tpts/0九、特殊进程僵尸进程与孤儿进程1. 僵尸进程产生原因子进程执行完毕退出后父进程没有调用 wait 回收其退出状态子进程就会进入 Z 状态成为僵尸进程。僵尸进程已经释放了内存、文件等资源只保留 PID、退出状态等少量信息。大量僵尸进程会占用 PID 号导致系统无法创建新进程。解决方法找到并终止父进程僵尸进程会被 systemd 领养回收修复父进程代码添加 wait 逻辑回收子进程2. 孤儿进程产生原因父进程先退出子进程还在运行子进程就成为孤儿进程。孤儿进程会被 PID1 的 systemd 进程领养由 systemd 负责回收其退出状态。孤儿进程本身没有危害只是父进程变成了1号进程。对比总结类型产生原因状态危害处理方式僵尸进程子进程先退父进程不回收Z状态占用PID大量存在影响系统终止父进程或修复父进程回收逻辑孤儿进程父进程先退子进程存活正常运行无直接危害无需特殊处理由systemd托管

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价