← 返回博客 学习笔记 Linux RHCE RHCE:文件权限管理 2026年07月04日 · 50 阅读 每个文件和目录都带有UID和GID,哪个用户创建的,文件和目录就会继承创建用户的UID和GID,通过UID和GID判断用户的权限 权限拒绝:表面是用户访问权限不够,实则是用户启动的进程去访问,进程继承了用户的UID和GID;例:使用user用户,通过vim访问/etc/shadow文件,实则是vim进程访问文件 进程的UID=文件的UID 允许访问 进程的GID=文件的GID 允许访问 进程UID和GID都不匹配,则以其他人的权限访问 如果没有文件权限,所有人都可以访问文件,如果文件比较私密重要,那么对文件对系统来说是不安全的,所以通过权限来限制用户的访问 ## 三种访问权限 拥有人(UID) 拥有组(GID) 其他人(UID和GID都不匹配) 每个文件都有UID和GID ### 文件访问的优先级 一个文件被访问时的步骤 用户访问文件,实则是进程访问文件,它通过从用户那里继承的UID和GID进行访问 优先级:UID>GID>其他人 ``` -rw- r-- r--. 1 root root 10240 Dec 16 12:01 aa ``` `-`:代表文件(d代表目录,c代表字符设备,b代表块设备等) `rw-`:拥有人的权限 `r--`:拥有组的权限 `r--`:其他人的权限 `.`:代表此文件受到SElinux保护 `1`:表示文件的硬连接数(类似于系统内有几个副本,当硬连接数为0时,才是完整删除) `root`:UID `root`:GID `10240`:文件大小 `Dec 16 12:01`:时间戳,最后一次修改的时间 `aa`:文件名 ### 三个权限 `r`:读取 `w`:写入 `x`:可执行(可以当命令执行) `-`:无此权限 ### rwx对于文件的意义 r表明可以读取文件内容 w表明可以编辑文件内容 x表明可以像命令一样执行文件 如果文件没有任何权限,文件的拥有人可以进行强制保存 root用户可以随意修改其他人的文件 *** **我有个疑问:文件创建人即便没有任何权限也可以读取吗?,如果我给其他人写的权限但不给读的权限会怎么样?** ChatGPT答: 没有“创建人特权”,权限完全看 **rwx位+所属用户/组**。 - 文件创建者如果把自己权限都去掉:**一样不能读**(root除外) - “只有写没有读”的文件: - 可以**覆盖/清空/追加写入** - 但**不能读取内容** - 很多编辑器会直接报错或行为异常 一句话:**Linux不认创建人,只认权限位。** **chmod修改权限,认的是所有人还是别的?** 结论很直接: - 属主(user)✅ 可以 chmod - root ✅ 可以 chmod - 属组(group)❌ 不可以 chmod(哪怕在同一个组里) ### 为什么? Linux 的权限模型里: 👉 “修改文件权限”属于**元数据操作(metadata)** 不是读写执行权限的一部分 它只认: - 你是不是这个文件的 owner - 或者你是不是 root *** ### rwx对目录的意义 r 表示可以查看列出目录下的内容 w 表示可以写、编辑目录的权限(创建和删除) x 表示可以进入目录(rx必须连着用) 一个目录要想有意义,必须要有rx权限 ### 修改文件和目录的权限 `chmod` 修改权限 #### 使用字符修改(rwx) 拥有人:u 拥有组:g 其他人:o 所有人:a ``` 针对file文件給拥有人所有权限 chmod u+rwx file 针对file文件减去拥有组的读权限 chmod g-r file 针对file文件的拥有人减去读,拥有组加上执行,其他人减去写(分别设置) chmod u-r,g+x,o-w file ``` 当然还有另一种方法就是使用 `=` ``` 清空拥有人的所有权限并赋予其写入和执行权限(覆盖赋权) chmod u=wx file ``` 给所有人赋权也有办法 ``` 给所有人赋予执行权限 chmod +x file ``` 递归赋权使用 `-R`(针对目录使用) ``` 给一个目录及目录下的所有文件和目录赋权 chmod -R a+rwx /dir/ ``` #### 使用数字方式修改权限 这部分内容很抽象 r=4,w=2,x=1 | r | w | x | 得数 | | --- | --- | ------ | --- | | 1 | 0 | 0 | 4 | | 0 | 1 | 0 | 2 | | 0 | 0 | 1 | 1 | | | | **最终** | 7 | 也就是 如果要r和x权限就是4+1=5 0代表无权限 `chmod 500 file` 必须写完整三个数字,不能是 ~~`chmod u+7 file`~~ 这种混写方式是不支持的 *** ## 修改拥有人和拥有组(属主和属组) `chown [拥有人] [文件]` 更改文件拥有人 `chown .[拥有组] [文件]`更改文件拥有组 `chown :[拥有组] [文件]`更改文件拥有组 文件的拥有人,可以把文件的拥有组从别人的组改为自己的组,但不能从自己的组改成别人的组 文件的拥有人,不能将文件转让给别人(将别人改为拥有人),root除外 当然还有另外的使用方法,同时修改拥有人和拥有组 `chown [拥有人]:[拥有组] [文件]` *** 这章有些地方是有点抽象的,很绕,今天休息休息,就学到这吧~ ← 上一篇 RHCE:用户和用户组的管理 下一篇 → RHCE:IO管道和Vim编辑器高级特性