当前位置: 首页 > news >正文

005 权限的理解

🦄 个人主页: 小米里的大麦-CSDN博客
🎏 所属专栏: Linux_小米里的大麦的博客-CSDN博客
🎁 GitHub主页: 小米里的大麦的 GitHub
⚙️ 操作环境: Visual Studio 2022

在这里插入图片描述

文章目录

    • shell 命令以及运行原理
      • 1. Shell 是什么?
      • 2. 为什么不能直接操作内核?
      • 3. Shell 的“媒婆”比喻
      • 4. 图形界面(GUI)也是 Shell?
      • 5. Shell 的高级功能
    • Linux 权限的概念
      • 一、用户类型详解
        • 1. 超级用户(root)
        • 2. 普通用户
      • 二、用户切换操作详解
        • 1. `su` 命令 —— 切换用户的命令。
        • 2. `su` 与 `su -` 的区别
      • 三、sudo 基础权限配置(了解,后面详讲)
        • 1. sudo 基础
        • 2. 配置 sudo 权限(这是一种方法,可以先了解,不建议现在进行配置)
        • 3. 验证配置
        • 4. 典型错误处理
      • ==四、最佳实践建议==
      • 五、操作流程图解
    • Linux 权限管理
      • 一、Linux 权限管理
      • 二、文件的权限和文件属性
        • 1. 文件访问者的分类(“`人`”)
        • 2. 权限表示方式
        • 3. 文件类型和访问权限(“事物属性”)
      • 三、文件访问权限的相关设置方法
        • 1. `chmod` - 设置文件的访问权限
        • 八进制表示法:
        • 2. `chown` - 修改文件的拥有者
        • 3. `chgrp` - 修改文件或目录的所属组
      • 总结:
      • `file` 命令
      • 传道解惑
        • Q1:起始权限问题:普通文件:664,目录文件:775,为什么我们创建文件的默认权限是我们现在看到的样子?
      • umask 是什么?
      • Q2:关于文件权限 `-r--rw---- 1 a a ...` 的情况怎么解释?
        • 权限判断顺序:
    • 目录的权限
      • 权限细节及例子 —— 想要保护多人 `共享` 文件数据
      • 解决方案:引入“粘滞位”
      • 总结
    • 共勉

shell 命令以及运行原理

1. Shell 是什么?

Shell 是用户与操作系统内核(Kernel)之间的“翻译官”。

你可以把操作系统内核想象成一个国家的总统(Kernel),他直接管理国家资源(CPU、内存、磁盘等)。但普通人(用户)无法直接和总统对话,必须通过一个“秘书”(Shell)来传达需求。

  • 用户通过 Shell 输入命令(比如 lscd)。
  • Shell 将命令“翻译”成内核能理解的指令,交给内核执行。
  • 内核处理完成后,结果再通过 Shell 返回给用户

2. 为什么不能直接操作内核?

  • 内核是操作系统的核心,直接操作风险极高。比如,直接让内核删除某个文件,就像让总统亲自去处理一个普通任务——虽然高效但风险极高,一旦出错可能导致系统崩溃。
  • Shell 的存在是为了安全和易用
    • 用户无需理解底层硬件细节(比如如何读写磁盘)。
    • Shell 通过权限控制和语法检查,避免用户误操作导致系统崩溃。

3. Shell 的“媒婆”比喻

Shell 是“媒婆”,内核是“村花小花”:你想追求小花(让内核干活),但不好意思直接开口(直接操作内核)。于是你找媒婆王婆(Shell)帮忙:

  • 你告诉王婆需求(输入命令)。
  • 王婆转达给小花(Shell 解析命令并调用内核)。
  • 小花办好后,王婆再把结果告诉你(Shell 返回输出)。

媒婆的作用

  • 翻译需求:用户说“想送花”,媒婆翻译成小花能理解的“执行送花程序”。
  • 过滤错误:用户说“送一车榴莲”,媒婆会提醒“榴莲不在允许的礼物列表”(语法错误提示)。
  • 权限检查:用户想进小花家的后院(系统敏感目录),媒婆会核实身份(权限验证)。

为什么必须通过媒婆?直接表白行不行?(同为什么不能直接操作内核

  • 直接操作内核的风险
    • 用户可能说错话(输入错误命令),导致小花误解(系统崩溃)。
    • 用户可能要求不合理(删除系统关键文件),小花直接拒绝(权限不足)。
  • 媒婆的安全保障
    • 权限控制:媒婆会检查用户身份,比如普通用户不能修改系统配置(sudo 提权需要密码)。
    • 错误拦截:用户输入“删库跑路”,媒婆会反问“你确定吗?”(rm -rf / 前的确认提示)。

如果媒婆罢工了(Shell 崩溃)?

  • 用户会陷入沉默:无法与小花沟通,只能重启终端(找新媒婆)。
  • 内核依然在运行:小花继续管理村庄,但用户无法直接互动。
  • 解决方案
    • 使用备用媒婆(不同 Shell 类型:Bash、Zsh、Fish)。
    • 通过远程媒婆(SSH 连接)继续工作。

终极金句

没有媒婆的牵线,程序员的爱情(操作内核)将寸步难行;
没有 Shell 的翻译,用户与内核的对话将鸡同鸭讲。


4. 图形界面(GUI)也是 Shell?

  • 无论是命令行(CLI)还是图形界面(GUI),本质都是用户与内核的中介
    • Windows 的 GUI:双击图标 → 图形界面程序调用内核完成任务。
    • Linux 的 Shell:输入命令 → Shell 调用内核完成任务。
  • 区别在于交互方式
    • CLI 更高效,适合程序员和自动化脚本。
    • GUI 更直观,适合普通用户。

5. Shell 的高级功能

  • 脚本编程:将多个命令写成脚本,一键执行复杂任务。
  • 管道(|:将一个命令的输出作为另一个命令的输入。例如:ls | grep .txt(列出所有文件,再过滤出 .txt 文件)。
  • 重定向(>>>:将命令结果保存到文件。例如:ls > files.txt(将文件列表保存到 files.txt)。

Linux 权限的概念

一、用户类型详解

1. 超级用户(root)
  • 权限:拥有系统的最高权限,可以执行任何操作。包括安装、删除软件、修改系统设置、删除系统文件等危险行为。操作不当可能导致系统崩溃。
  • 提示符#(如 [root@server ~]#),在命令行中,# 表示当前是 root 用户。
  • 默认路径/root,这是 root 用户的家目录。
  • 危险提示:建议平时使用普通用户,而非 root 用户,避免误操作导致的系统崩溃或损坏。
2. 普通用户
  • 权限:只能访问和操作自己的文件目录(默认在 /home/用户名 下),以及有限的系统资源。无法修改系统配置或执行需要高权限的操作。
  • 提示符$(如 [user@server ~]$),表示当前是普通用户。
  • 默认路径/home/用户名,每个普通用户都会有自己的家目录。
  • 优势:使用普通用户更安全,避免误操作破坏系统。

二、用户切换操作详解

1. su 命令 —— 切换用户的命令。
su [选项] [用户名]
  • 不带参数:默认切换到 root 用户(需要输入 root 密码)。
  • 带用户名:切换到指定的用户(需要输入目标用户密码)。

具体场景(注意各自切换所要输入的密码):

  1. 普通用户 → root

    [user@server ~]$ su -
    Password:  				# 输入 root 密码
    [root@server ~]#  		# 成功切换到 root
    
  2. root → 普通用户

    [root@server ~]# su - user
    [user@server ~]$  		# 成功切换到普通用户 user
    
  3. 普通用户 → 其他普通用户

    [user1@server ~]$ su - user2
    Password:  				# 输入 user2 密码
    [user2@server ~]$  		# 成功切换到 user2 用户
    
2. susu - 的区别
命令环境变量工作目录使用场景
su保留当前环境当前目录临时执行少量命令
su -重新加载用户环境目标用户家目录需要完整用户环境时

示例对比:

# 使用 su
[root@server /]# su user
[user@server /]$ pwd
/# 使用 su -
[root@server /]# su - user
[user@server ~]$ pwd
/home/user

三、sudo 基础权限配置(了解,后面详讲)

1. sudo 基础
sudo <命令>
  • 作用:使用 sudo 命令,普通用户可以临时以 root 权限执行特权命令。
  • 要求:用户必须在 /etc/sudoers 文件中有权限设置。
2. 配置 sudo 权限(这是一种方法,可以先了解,不建议现在进行配置)

配置 sudo 权限时,建议使用 visudo 命令,因为它可以在保存前检查语法错误,避免不小心出错。

  1. 切换到 root 用户

    su -  # 切换到 root
    
  2. 使用 visudo 编辑 /etc/sudoers 文件

    visudo  # 进入编辑模式,自动检查语法
    
  3. 配置示例

    • 允许普通用户 user 执行所有命令,且无需密码:

      user    ALL=(ALL)       NOPASSWD: ALL
      
    • 允许 wheel 组的成员使用 sudo

      %wheel  ALL=(ALL)       ALL
      
3. 验证配置

如果配置成功,可以通过 sudo 执行命令来验证:

[user@server ~]$ sudo systemctl restart sshd
# 如果配置成功,可以执行命令而无需输入密码
4. 典型错误处理

当用户不在 sudoers 文件中时,可能会看到以下错误:

user is not in the sudoers file. This incident will be reported.

解决方法

  1. 切换到 root 用户:su -

  2. 将用户加入 wheel 组:usermod -aG wheel user

  3. 确保 /etc/sudoers 文件中有以下配置:

    %wheel  ALL=(ALL)       ALL
    

四、最佳实践建议

  1. 日常使用普通用户:避免直接以 root 用户登录,普通用户更安全。使用 sudo 执行特权命令。
  2. 重要操作前备份:在执行任何高风险操作时,尤其是以 root 权限进行修改时,要确保有备份。
  3. sudo 权限最小化:只为需要的用户分配 sudo 权限,避免随意赋予 NOPASSWD: ALL 权限。
  4. 会话管理:
    • 进入 root 环境后,要及时使用 exitCtrl+D 退出。
    • 使用 whoami 命令确认当前用户身份,避免误操作。

五、操作流程图解

普通用户环境│├─ 需要执行特权命令 → sudo <命令>│     ├─ 有权限 → 执行成功│     └─ 无权限 → 拒绝执行│└─ 需要切换用户 → su/su -├─ 切换到 root → 输入 root 密码└─ 切换其他用户 → 输入目标用户密码

Linux 权限管理

一、Linux 权限管理

Linux 系统中的权限管理决定了文件和目录的访问控制。权限管理涉及两个主要方面:

  1. 权限认证:确定谁(用户)可以访问文件或目录。
  2. 权限类型:确定可以对文件或目录执行什么操作(读、写、执行)。

二、文件的权限和文件属性

1. 文件访问者的分类(“”)

权限分为三类:

  • u (User):文件或目录的 所有者/拥有者。即文件的创建者或被赋予所有权的用户。
  • g (Group):文件或目录的 所属组 的用户。即拥有该文件或目录的同组成员。
  • o (Others):其他用户,指的是既不是文件所有者,也不属于文件所属组的用户。
2. 权限表示方式

举个栗子,并逐一解析:

drwxrwxr-x 2 hcc hcc 4096 Feb  3 20:26 temp
# 怎么看:
d		rwx	rwx	r-x		(1 | 9)/(1 | 3|3|3# drwxrwxr-x 对应着 <file-type><user-permissions><group-permissions><other-permissions>
  1. 文件类型(第一个字符):
    • d:表示这是一个目录文件。
  2. 文件权限(后面的 9 个字符 3 位一看):
    • rwx:表示 用户(文件所有者) 具有读、写、执行权限。
    • rwx:表示 组用户 具有读、写、执行权限。
    • r-x:表示 其他用户 具有读和执行权限,但没有写权限。
  3. 其他信息
    • 2:表示该目录下的硬链接数量。
    • hcc (前一个):表示文件的 拥有者(User)是 hcc
    • hcc (后一个):表示文件的 所属组(Group)是 hcc
    • 4096:表示该文件(或目录)的大小(单位为字节)。
    • Feb 3 20:26:表示文件的最后修改时间。
    • temp:表示文件的名称。
3. 文件类型和访问权限(“事物属性”)

文件类型(第一位字符):

文件类型字符含义示例
d目录文件(Directory)drwxr-xr-x(表示这是一个目录文件)
-普通文件(Regular file)-rwxr-xr-x(表示这是一个普通文件)
l软链接(Symbolic link)lrwxrwxrwx(类似于 Windows 的快捷方式)
b块设备文件(Block device file)brw-rw----(如硬盘、光驱等)
p管道文件(Pipe file)prw-r--r--(用于进程间通信)
c字符设备文件(Character device file)crw-rw----(如终端设备、打印机等)
s套接口文件(Socket file)srwxrwxrwx(用于网络通信等)

权限(后三位字符):

权限字符含义对应数字说明
r读权限(Read)4对文件:允许读取文件内容;对目录:允许列出目录中的文件。
w写权限(Write)2对文件:允许修改文件内容;对目录:允许创建、删除、移动目录中的文件。
x执行权限(Execute)1对文件:允许执行文件;对目录:允许进入该目录。
-没有权限0表示没有该项权限。

权限的组合(后三位字符表示权限):

权限组合含义数字表示说明
rwx读、写、执行权限(可完全访问)7用户/组/其他均有读、写、执行权限。
rw-读、写权限(没有执行权限)6用户/组/其他可以读取和修改文件,但不能执行。
r-x读、执行权限(没有写权限)5用户/组/其他可以读取和执行文件,但不能修改。
r–只有读权限4用户/组/其他只能读取文件,无法修改或执行。
wx-写、执行权限(没有读权限)3用户/组/其他可以修改文件并执行文件,但不能读取文件。
x–只有执行权限1用户/组/其他只能执行文件,无法读取或修改文件。
没有任何权限0用户/组/其他没有任何权限。

每个权限都有两个状态:有权限没有权限,这恰好对应了二进制的 10,所以数字表示的由来是二进制:

权限符号(读写执行)八进制(数字表示)二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
0000

三、文件访问权限的相关设置方法

1. chmod - 设置文件的访问权限

chmod 命令用于设置文件的访问权限。它允许你改变文件或目录的权限,分为两种方式:使用符号表示法和使用八进制表示法。

  • 普通用户:普通用户只能修改自己拥有的文件或目录的权限。如果普通用户尝试修改其他用户的文件或目录权限,会提示 Permission denied(权限被拒绝)。
  • root 用户root 用户是系统管理员,具有所有权限,因此 root 可以修改任何文件或目录的权限。

语法格式:chmod [参数] 权限 文件名

常用选项:-R:递归地修改目录和其中所有文件的权限。

权限的表示方法:

符号描述
+向权限范围增加权限
-向权限范围取消权限
=设置权限,覆盖现有权限

用户符号:

符号描述
u拥有者(user)
g所属组(group)
o其他用户(others)
a所有用户(all)

权限符号:

符号描述
r读取权限(read)
w写入权限(write)
x执行权限(execute)

示例:

命令说明
chmod u+w /home/abc.txt给文件 /home/abc.txt 的拥有者添加写权限。
chmod o-x /home/abc.txt去掉其他用户的执行权限。
chmod a=x /home/abc.txt给所有用户赋予执行权限,其他权限被去除。
八进制表示法:
权限组合八进制数字说明
rwx7读取、写入、执行权限(4+2+1)
rw-6读取、写入权限(4+2)
r-x5读取、执行权限(4+1)
r--4读取权限(4)
wx-3写入、执行权限(2+1)
w--2写入权限(2)
x--1执行权限(1)
---0无权限

示例:

命令说明
chmod 664 /home/abc.txt设置文件权限为 rw-rw-r--,即拥有者和所属组有读写权限,其他用户只有读权限。
chmod 640 /home/abc.txt设置文件权限为 rw-r-----,即拥有者有读写权限,拥有者有读写权限,所属组有读权限,其他用户没有权限。

2. chown - 修改文件的拥有者

chown 命令用于修改文件的所有者和所属组。

  • 普通用户:普通用户只能更改自己拥有的文件的所有者。如果尝试更改其他用户的文件或目录的拥有者,普通用户会看到 Permission denied
  • root 用户root 用户能够修改任何文件或目录的拥有者,不受任何限制。

语法格式:chown [参数] 用户名 文件名

常用选项:-R:递归地修改目录和其中所有文件的权限。

示例:

命令说明
chown user1 f1将文件 f1 的拥有者更改为 user1
chown -R user1 filegroup1递归地将目录 filegroup1 及其子文件的所有者更改为 user1

3. chgrp - 修改文件或目录的所属组

chgrp 命令用于修改文件或目录的所属组。

  • 普通用户:普通用户只能更改自己拥有的文件或目录的所属组。如果尝试更改其他用户的文件或目录的所属组,则会提示 Permission denied
  • root 用户root 用户可以修改任何文件或目录的所属组,无论该文件是否属于 root 或其他用户。

语法格式:chgrp [参数] 用户组名 文件名

常用选项:-R:递归地修改目录和其中所有文件的权限。

示例:

命令说明
chgrp users /abc/f2将文件 /abc/f2 的所属组更改为 users

总结:

操作类型普通用户能否执行root 用户能否执行执行成功/失败
chmod 修改权限只能修改自己拥有的文件可以修改任何文件普通用户成功:文件属于自己;失败:Permission denied
chown 修改拥有者只能修改自己拥有的文件可以修改任何文件普通用户成功:文件属于自己;失败:Permission denied
chgrp 修改所属组只能修改自己拥有的文件可以修改任何文件普通用户成功:文件属于自己;失败:Permission denied

file 命令

file 命令用于识别文件的类型。它会根据文件的内容、格式以及文件头部的标识来判断分析文件内部的结构来推测其类型,不依赖于文件的扩展名,非常有用。

语法:file [选项] 文件或目录...

常用选项

  • -c:显示详细的执行过程,帮助你分析程序的执行情况。例如,它可以显示 file 命令如何判断文件类型,通常在调试时很有用。
  • -z:尝试解压缩压缩文件,并分析压缩文件中的内容。如果你有一个 .tar.gz.zip 文件,使用 -z 可以让 file 查看并识别压缩文件内部的内容类型。

示例

file test.txt      # 输出 test.txt 文件的类型(如:ASCII text)
file -z archive.gz # 解压并识别压缩文件内容类型

传道解惑

Q1:起始权限问题:普通文件:664,目录文件:775,为什么我们创建文件的默认权限是我们现在看到的样子?

默认权限的设置与 umask(文件创建权限掩码) 有关系,它控制了文件或目录在创建时默认的权限。我们创建普通文件和目录时,通常会看到不同的权限,这是因为操作系统使用了一种“减法”策略(最终权限 = 起始权限 & (~umask)),根据 umask 来修改文件和目录的默认权限。

umask 决定了文件和目录创建时权限的“减法”规则,我们最终看到的其实是已经套公式算好的。

  • 普通文件(664):默认给普通文件的起始权限其实是 666666 & (~0002)666 & 7754 = 664
  • 目录文件(775):默认给目录文件的起始权限其实是 777777 & (~0002)777 & 7754 = 775

umask 是什么?

umask 是一个权限掩码,它定义了在文件或目录创建时,通过从系统的默认权限中 “去除” 权限来决定最终的权限。 umask 的值 表示哪些权限会被“去除”,而 最终权限 是通过使用按位与(&)操作来计算的。

  • 默认的权限是固定的,即普通文件的起始权限为 666,目录的起始权限为 777
  • umask 用来“去除”权限,使用的规则是按位与:最终权限 = 起始权限 & (~umask)
  • ~umask 是对 umask 值取反,即对 umask 中的每一位进行反转(0 变成 1,1 变成 0),然后与默认权限进行按位与运算。

如果需要查看当前的 umask 值,可以运行 umask 命令:

umask

常见的 umask 值umask 的值虽然会显示 0002umask 的四位数字中,第一位表示特殊权限(如粘滞位),后三位才是基本权限。但普通文件/目录的默认权限计算时通常只关注后三位。常见的 umask 值:

umask 值解释结果权限(普通文件)结果权限(目录文件)
0002所有者、组、其他用户都没有限制664775
0022其他用户没有写权限644755
0077只有文件拥有者有权限600700

umask 设置与效果umask 的值会影响文件和目录的默认权限。当你修改 umask 时,操作系统会自动改变你创建的文件和目录的默认权限。

例如:如果设置 umask 0022,则:

  • 普通文件的权限会变为 644(去除其他用户的写权限)。
  • 目录的权限会变为 755(去除其他用户的写权限)。

可以通过以下命令查看和设置 umask

# 查看当前 umask 值
umask# 设置 umask 为 0022
umask 0022

Q2:关于文件权限 -r--rw---- 1 a a ... 的情况怎么解释?

在文件权限系统中,拥有者的权限所属组的权限 是独立的,因此可能会出现拥有者的权限比所属组更少的情况。文件的权限可能是通过某些命令错误地配置的。例如,管理员或拥有者可能故意将拥有者的权限设置得比所属组的权限少。这种情况可能是在文件创建时,由于错误的 chmod 命令或文件权限管理不当造成的。当然也有可能是必须的,因为这种现象并非错误。

关键点:拥有者权限和所属组权限独立

  • 拥有者权限(a): 只能读取文件,但不能修改(没有写权限)。
  • 所属组权限(a 组): 可以读写文件(rw-),但不具有执行权限。
权限判断顺序:

在 Linux 系统中,在进行认证的时候只能选择一个角色进行认证,文件的权限是根据三种不同的身份来判断的:文件拥有者文件所属组其他用户。系统在判断文件权限时会先检查文件拥有者的权限,如果拥有者权限不足,再检查所属组的权限,最后才检查其他用户的权限。

  1. 文件拥有者权限(User 权限):系统首先会检查当前操作用户是否是文件的拥有者,如果是,则优先使用文件拥有者的权限来进行访问判断。
  2. 所属组权限(Group 权限):如果当前用户不是文件的拥有者,但属于文件的所属组,则会检查文件所属组的权限。
  3. 其他用户权限(Other 权限):如果当前用户既不是文件的拥有者,也不属于文件的所属组,那么就会检查其他用户的权限。

解决方法

  1. 检查文件的权限设置:首先确认文件的权限是如何设置的。如果文件的拥有者权限被误设为 r--,而所属组权限是 rw-,可以使用 chmod 修改文件的拥有者权限:
chmod u+w filename
  1. 角色切换:如果你仅能选择一个角色进行认证,但需要更高权限来修改文件,考虑切换到具有更高权限的角色(例如通过 sudo 进行管理员认证)。

  2. 文件所有权调整:如果你不是文件的拥有者,但需要进行修改,考虑使用 chownchgrp 更改文件的拥有者或所属组,或者请求管理员为你添加权限。


目录的权限

理解目录权限的三个关键点:

  1. 可读权限(r决定是否允许我们查看指定目录下的文件内容。 如果没有读权限,即使目录本身是可执行的,用户也无法看到目录中的文件列表。例如,无法用 ls 查看该目录下的文件。
  2. 可写权限(w决定是否允许我们在当前目录下进行创建、更改、删除(主要) 如果没有写权限,用户就不能在该目录中创建新文件,不能删除文件,也不能重命名文件 一个文件能否被删除,并不由文件本身决定,由这个文件所处的目录决定!
  3. 可执行权限(x决定是否允许用户进入对应的目录! 如果一个目录没有执行权限,即使你有其他权限,也无法进入该目录进行任何操作。比如无法 cd 进入该目录。

权限细节及例子 —— 想要保护多人 共享 文件数据

假设用户 张三 在自己的目录下创建了一个文件 temp,并且给自己设置了文件权限(例如 rw-r--r--)。这意味着张三可以读写文件,而其他用户只能读取文件。看起来应该是其他用户不能删除 temp 文件,对吧?但是,实际上 其他用户仍然可以删除 temp 文件,即使他们没有写权限。这是因为文件的删除权限是由 目录的权限 决定的,而不是文件的权限。(张三在自己的文件夹里放了一本书(文件 temp),即使没有给其他人修改这本书的权限,如果他们对张三存放书的那个房间(目录)有写入权限,他们仍然能够把张三的书从房间里移除或删除。这看起来不太公平,因为张三并没有允许别人动他的东西)。

如果去掉了共享目录的 w 权限,张三同时也无法创建文件啦!共享目录,共享体现在哪里呢?

解决方案:引入“粘滞位”

为了避免一个用户删除其他用户创建的文件,Linux 引入了 粘滞位(sticky bit) 的概念。

粘滞位(Sticky Bit) 是一个特殊的权限,用来限制在目录中删除文件的权限。具体来说,只有以下三类用户才能删除目录中的文件:

  1. 超级管理员(root)root 用户可以删除任何文件,不受限制。
  2. 目录的所有者:目录的拥有者可以删除该目录中的文件。
  3. 文件的所有者:文件的拥有者可以删除自己创建的文件。

如何设置粘滞位? 可以使用 chmod +t 命令来给目录设置粘滞位:

chmod +t /path/to/directory

示例: 假设我们有一个目录 /shared,这是一个共享目录,所有用户都可以在其中创建文件。如果没有粘滞位,任何具有写权限的用户都可以删除目录中的文件,即使文件是由其他用户创建的。但如果我们给目录设置了粘滞位:

chmod +t /shared
drwxrwxrwt    # 粘滞位生效,末尾为 t

设置了粘滞位后,只有以下三类用户可以删除文件:

  • root 用户可以删除目录中的任何文件。
  • 该目录的所有者(例如管理员)可以删除文件。
  • 文件的拥有者(例如,创建文件的用户)可以删除自己的文件。

这样,即使其他用户拥有对目录的写权限,也无法删除其他用户创建的文件,增强了安全性。


总结

目录权限:

  1. 可读权限(r:是否可以列出该目录中的文件。没有 r 权限,即使有 x 权限,也无法执行 ls 或查看目录中的内容。
  2. 可写权限(w:是否可以在目录中创建、删除或重命名文件。没有 w 权限,用户无法创建、删除或重命名目录中的文件。
  3. 可执行权限(x:是否可以进入该目录。没有 x 权限,即使有读权限,也无法 cd 进入目录。

家目录权限:

  • 通常情况下,用户的家目录权限是 700,即只有该用户和 root 用户能访问和操作其家目录中的文件。其他用户无法访问、查看或修改这些文件。
  • 这种权限设置通常用于保护用户的个人文件,使其不被其他用户看到或修改。

共享目录中的权限管理:

  • 在共享目录中,其他用户通常有读取、创建和修改文件的权限。但 为了避免文件被随意删除,可以设置 粘滞位
  • 如果去掉共享目录的写权限,用户将无法在目录中创建文件或删除文件。这也意味着,如果一个目录没有写权限,那么所有用户都不能在其中创建或删除文件,目录就无法作为有效的共享目录。

共勉

在这里插入图片描述
在这里插入图片描述

相关文章:

  • leetcode刷题日记——随机链表的复制
  • Prompt(提示词)工程师,“跟AI聊天”
  • 约瑟夫josephu问题
  • 2025-05-07 Unity 网络基础8——UDP同步异步通信
  • 【EasyPan】saveShare代码分析
  • 企业智能化第一步:用「Deepseek+自动化」打造企业资源管理的智能中枢
  • DSENT (Design Space Exploration of Networks Tool) 配合gem5
  • day 14 SHAP可视化
  • C++:买房子
  • Vue——前端vue3项目使用汉字转拼音
  • #黑马点评#(一)登录功能
  • LangChain第三讲:大模型的输出如何格式化成字符串?
  • 阿里云服务器-宝塔面板安装【保姆级教程】
  • HarmonyOS NEXT深度解析:自研框架ArkUI-X的技术革命与跨平台实践
  • 本地部署 MySQL + Qwen3-1.5B + Flask + Dify 工作流
  • 动态规划-91.解码方法-力扣(LeetCode)
  • SPSS系统发育分析中的聚类相关part
  • 端口安全讲解
  • 《Python星球日记》 第44天: 线性回归与逻辑回归
  • 轻松管理房间预约——启辰智慧预约小程序端使用教程
  • 第19届威尼斯建筑双年展开幕,中国案例呈现“容·智慧”
  • 观察|印巴交火开始升级,是否会演变为第四次印巴战争?
  • 观察|22项达全球最优,世行为上海营商环境“盖章”
  • 欧盟官员:欧盟酝酿对美关税政策反制措施,包含所有选项
  • 起底新型保健品电话销售诈骗:从快递信息中筛选对象,忽悠其高价买药
  • 博裕基金拟收购“全球店王”北京SKP最多45%股权