Linux 权限与软件包管理课堂笔记全解(附实操踩坑案例)
前言
今天整理 Linux 核心两大模块:文件权限(rwx、umask、目录 / 文件权限差异、权限报错实战)+软件包管理(yum/rpm、服务器分发架构、本地源搭建逻辑),结合课堂手写思维导图、实操报错案例,把新手最容易踩的权限拒绝、yum 下载慢、权限设置不符合业务需求等问题一次性讲透。
一、Linux 文件权限核心体系
1. 基础权限标识 rwx 数字含义
权限分三类身份:属主 u、属组 g、其他 o,每类都有读 r、写 w、执行 x 权限,对应数字:
r = 4,w = 2,x = 1 组合计算示例:
rwx------:4+2+1 = 700
rw-r--r--:644(普通文件默认权限)
rwxr-xr-x:755(普通目录默认权限)
2. 文件 vs 目录,权限作用完全不同(高频考点)
普通文件权限
r:可以读取文件内容(cat、more)
w:可以修改、覆盖、删除文件内容(vim、echo >)
x:可以把文件当成程序执行(./[xxx.sh](xxx.sh))
目录权限(重中之重,90% 权限报错根源)
r:可以列出目录内文件名(ls),没有 x 则只能看到名字,无法进入 / 查看详情
w:可以在目录内新建、删除、重命名文件(哪怕文件不属于你,只要目录有 w 就能删)
x:可以 cd 进入目录、访问目录下文件的元数据(必须配合 r 才有完整 ls 功能)
关键坑点:想读取目录里的文件,目录必须同时具备 r+x;想新建 / 删除文件,目录必须有 w+x。
3. umask 权限掩码:控制新建文件 / 目录默认权限
原理
系统默认最大权限:
目录初始最大权限
777文件初始最大权限
666(文件默认不会自带执行权限)umask是要减去的权限掩码,最终权限 = 初始最大权限 & (~umask)
课堂演算示例:
umask=022
目录:777 - 022 = 755
文件:666 - 022 = 644
umask=007
目录:777 - 007 = 770
文件:666 - 007 = 660
实操命令
# 查看当前掩码 umask # 临时修改掩码(重启失效) umask 027 # 永久修改:写入 /etc/profile 或 ~/.bashrc echo "umask 027" >> /etc/profile source /etc/profile
4. 权限实操报错案例(报错 Permission denied)
场景 1:进入目录提示权限不足
命令:cd lesson07报错Permission denied原因:当前用户对该目录缺少x 执行权限解决:
# 给其他用户增加执行权限 chmod o+x lesson07 # 或者修改属主/属组 chown user1:group1 lesson07
场景 2:能 ls 看到文件名,但 cat 读取文件失败
原因:目录有 r 无 x,只能列出名字,无法访问文件内容 解决:给目录追加 x 权限chmod +x 目录名
场景 3:共享目录业务需求(高频面试题)
需求描述: 同一个项目目录,多人归属同一业务组可读写;其他用户完全无任何访问权限。 实现步骤:
创建统一业务用户组
groupadd dev把所有开发用户加入组
usermod -aG dev user1目录设置属组为 dev,权限 770:
chown :dev project/ && chmod 770 project/调整 umask 为 007,新建文件自动 660、目录 770,外部用户无权限
二、Linux 软件包管理(yum/rpm 完整架构)
1. 为什么需要软件包管理器?
Linux 系统数千软件存在依赖关系(A 软件运行需要 B 库、C 工具),手动下载安装会出现依赖地狱;rpm 负责本地包校验安装,yum 自动解决依赖、远程下载。
2. yum 完整分发架构(思维导图拆解)
四层角色
官方软件源服务器:CentOS 官方仓库,存放所有 rpm 包、依赖关系清单 repodata
本地镜像服务器(内网 Yum 源):企业内网同步官方源,解决外网下载慢、服务器无法联网场景
客户端机器:开发 / 业务服务器,配置 repo 文件指向内网源
运维开发人员:执行 yum install/yum update 操作
数据流转流程
运维在客户端执行
yum install nginx客户端读取
/etc/yum.repos.d/*.repo,获取源地址客户端请求内网镜像服务器的 repodata 依赖索引
服务器核对依赖,返回需要下载的 nginx 及所有依赖包
客户端批量下载 rpm 包,本地调用 rpm 完成安装
3. 两种包管理工具分工
rpm:底层本地工具(无网络功能)
常用命令:
rpm -ivh xxx.rpm # 本地安装包 rpm -qa | grep nginx # 查询已安装软件 rpm -ql nginx # 查询软件安装路径 rpm -e nginx # 卸载(有依赖会报错)
缺点:不会自动下载依赖,缺少依赖直接安装失败。
yum:上层包管理工具(基于 rpm,自动处理依赖)
常用命令:
yum install nginx -y # 安装,自动解决依赖 yum remove nginx -y # 卸载,同步删除无用依赖 yum makecache # 生成本地缓存(修改repo后必执行) yum list available # 查看源内可安装软件 yum clean all # 清理缓存
4. 内网本地 Yum 源搭建逻辑(课堂思维导图重点)
企业离线环境不能访问外网,必须自建本地源,完整链路:
一台能联网的同步服务器:
reposync同步官方所有 rpm 包 +createrepo生成 repodata 依赖索引部署 httpd/nginx,把同步好的包目录做成网页访问地址
所有业务客户端修改 repo 文件,baseurl 指向内网 http 地址
客户端执行
yum makecache加载新源,即可离线安装所有软件
5. 架构拓展:多环境源隔离
企业会搭建多套源区分环境:
base 源:系统基础工具包
epel 源:第三方拓展软件(nginx、redis)
dev 源:开发测试专用新版软件
prod 源:生产稳定固定版本软件 客户端通过不同 repo 文件切换环境源,避免测试新版影响生产稳定性。
三、面试高频问答
目录权限 w 和 x 哪个更关键? 答:x 是进入目录的基础,没有 x,单纯 w/r 都无法正常操作目录内文件;删除文件的权限控制在目录,不在文件本身。
umask 为什么文件默认没有执行权限? 答:安全机制,避免新建文本文件意外被执行,只有手动 chmod +x 后才会拥有执行权限。
yum 和 rpm 区别? 答:rpm 仅本地处理 rpm 包,不处理依赖;yum 封装 rpm,远程拉取包并自动递归安装所有依赖。
离线服务器怎么安装软件? 答:搭建内网本地 yum 源,提前同步所有 rpm 包与依赖索引,内网服务器指向本地源实现离线安装。