Linux 权限基本理解

一、Linux权限的概念

1.1 Linux 的用户模型

首先我们要先理解 Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制

普通用户:在linux下做有限的事情。

超级用户的命令提示符是"#",普通用户的命令提示符是"$"。

通过 su 命令可以切换用户 或者 使用 sudo 来提升权限,在不切换用户的情况下,临时以 Root 权限执行某条指令

命令:su 用户名
命令:sudo 命令

例如,要从root用户切换到普通用户user,则使用 su user。

要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

1.2 文件的归属及访问权限

在 Linux 中,一切皆文件。当我们使用 ls -l 查看文件详情时,第一列的信息包含了文件类型和权限的所有信息。

1. 文件的角色分类

Linux 将访问文件的人分为三类:

  • 拥有者 (u - User):文件的主人,通常是创建该文件的用户。
  • 所属组 (g - Group):拥有者所在的团队。组内成员可以共享特定的权限。
  • 其他人 (o - Others):既不是拥有者,也不是同组人的其他人。
2. 文件类型

ls -l 输出的第一个字符代表文件类型 :

  • d:目录 (Directory)
  • -:普通文件 (Regular file)
  • l:软链接 (Symbolic link)
  • b:块设备 (Block device,如硬盘)
  • c:字符设备 (Character device,如串口)
  • p:管道文件 (Pipe)
  • s:套接字文件 (Socket)
3. 文件的权限

Linux 的权限由读、写、执行三个基本属性构成,它们对文件 和目录有完全不同的含义。

权限 字符 八进制 对文件的含义 对目录的含义
Read r 4 可以读取文件内容 (cat, vim) 可以查看目录下的文件名列表 (ls)
Write w 2 可以修改文件内容 可以在目录内创建、删除、重命名文件
Execute x 1 可以被系统执行 (如果是程序/脚本) 可以进入该目录 (cd)

注意:

  1. 如果目录没有 x 权限,即使有 r 权限,你也无法进入目录,也无法查看文件的详细信息,只能看到文件名。
  2. 如果目录没有 w 权限,你无法在该目录下新建或删除任何文件。
4.文件权限的设置方法

1. 修改权限:chmod

chmod 是最常用的指令,支持符号模式和八进制模式。

符号模式 :u/g/o/a +/-/= r/w/x

列如 chmod u+x test.c:给拥有者增加可执行权限。

chmod o-x file.txt:剥夺其他人的执行权限。

八进制模式:也就是用8进制数字来代表权限

列如

chmod 664 file.txt:就是将 test.c 的权限设置为 rw-rw-r--

664 表示为2进制为 110110100 与上述权限一一对应,1表示拥有,0则表示没有。

chmod -R 777 dir/:递归修改目录及其内部所有文件的权限。

777 2进制为 111111 即表示权限为 rwxrwxrwx

2. 修改归属:chown & chgrp

chown user1 file:修改拥有者(通常需要 Root)。

chgrp group1 file:修改所属组。

5. 默认权限与 umask

新建一个目录默认是 755 或 775,而新建文件是 644 或 664,这取决于 权限掩码。

默认起始权限:

  • 目录:0777 (必须可进入)
  • 文件:0666 (出于安全,文件默认不给 x 权限)

umask 的作用:从起始权限中"过滤"掉特定的权限位。

计算公式 :最终权限 = 起始权限 & (~umask) (逻辑上的减法)。

示例 : 如果 umask 为 0002 (即 -------w-):

  • 新建目录:777 - 002 = 755 (rwxrwxr-x)

  • 新建文件:666 - 002 = 644 (rw-rw-r--)

你可以通过 umask 指令查看或设置当前的掩码。

6.一个"不科学"的现象与粘滞位

问题场景

在 Linux 中,删除文件的权限不取决于文件本身,而取决于用户对该文件所在目录是否有写权限。

这意味着:如果你在一个公共目录(如 /tmp 或 /home)拥有写权限,你可以删除任何人的文件,哪怕那个文件是 Root 创建的且你对其只读!这听起来非常危险且不合理。

解决方案:

为了解决这个问题,Linux 引入了粘滞位 t。 当一个目录被设置了粘滞位(chmod +t),该目录下的文件只能被以下三类人删除 :

  • 超级管理员 (Root)

  • 该目录的所有者

  • 该文件的所有者

相关推荐
Ruiery19 分钟前
Linux 6.6内核内存管理深度解析(十七):vmalloc — 内核要“虚拟连续“就够:物理页逐个凑,页表来连
linux·运维·服务器
Escalating_xu25 分钟前
【Linux 网络编程】ARP 的具体过程与 ARP 欺骗:一条 IP → MAC 映射,怎样改变数据的去向?
linux·网络·tcp/ip
坚定的共产主义生产设备永不宕机1 小时前
服务器从裸机开始搭建ESXI虚拟机
linux·服务器·网络
刚入门的大一新生1 小时前
Linux-线程封装
linux·运维·服务器
god_cvz1 小时前
实践:Linux环境构建CTB工具(cesium-terrain-builder)
linux·gis·ctb
Android系统攻城狮1 小时前
Linux FFmpeg深度解析之av_dump_format调用流程与实战(十一)
linux·运维·服务器·ffmpeg·1024程序员节·音视频进阶
Android系统攻城狮1 小时前
Linux FFmpeg深度解析之avcodec_find_decoder调用流程与实战(十二)
linux·运维·服务器·ffmpeg·1024程序员节·音视频进阶
小白的码BUG之路2 小时前
K8s -- 启动一主二从节点
linux·运维·服务器
Escalating_xu2 小时前
【Linux 网络编程】IP 分片与重组:3000 字节的数据报,怎样拆开又拼回来?
linux·网络·tcp/ip
小相会自律2 小时前
全平台远程控制软件推荐2026:Win/Mac/Linux/手机/鸿蒙互通哪款好
linux·macos·智能手机·todesk·teamviewer·向日葵