Linux权限(二)

Linux的文件类型

文件类型

  • 普通文件 (-):常规文件,可能是文本、二进制数据等。
  • 目录 (d):文件夹,包含其他文件或目录。
  • 符号链接 (l):指向另一个文件或目录的快捷方式。
  • 块设备文件 (b):用于存储数据的块设备,如硬盘。
  • 字符设备文件 (c):用于按字符流操作的设备,如键盘、终端。
  • 管道文件 (p):用于进程间通信的命名管道。
  • 套接字 (s):用于网络通信的文件。

Linux的默认权限

在 Linux 系统中,文件和目录的默认权限取决于 umask(用户文件创建模式掩码)的值。默认情况下,umask 设置会影响新创建的文件和目录的权限。

文件和目录的默认权限

  1. 文件

    • 通常情况下,新创建的文件默认权限为 666(即:rw-rw-rw-)。
    • 这是因为一般情况下,普通文件不应该具有执行权限。
  2. 目录

    • 通常情况下,新创建的目录默认权限为 777(即:rwxrwxrwx)。
    • 这是因为用户通常希望具有完全的权限来访问目录,包括执行权限(进入目录)。

使用 umask 调整默认权限

umask 是一个三位或四位八进制数,它指定了新文件或目录应当剔除的权限位。通过设置 umask,可以控制新文件或目录的默认权限。

例如:

  • 默认 umask 值为 022

    • 新文件的默认权限将是 644666 - 022),即:rw-r--r--
    • 新目录的默认权限将是 755777 - 022),即:rwxr-xr-x
  • 默认 umask 值为 027

    • 新文件的默认权限将是 640666 - 027),即:rw-r-----
    • 新目录的 default permissions will be 750777 - 027),即:rwxr-x---

检查和设置 umask

可以使用 umask 命令来查看当前 umask 的值

umask

可以使用 umask 命令来设置新的 umask

umask 027

Linux的目录权限

  1. 读权限 (r)

    • 目录的读权限允许用户列出目录中的文件和子目录。
    • 对应的八进制数值为 4
  2. 写权限 (w)

    • 目录的写权限允许用户在目录中创建、删除和重命名文件或子目录。
    • 对应的八进制数值为 2
  3. 执行权限 (x)

    • 目录的执行权限允许用户进入目录(即改变当前工作目录到此目录)。
    • 对应的八进制数值为 1

删除文件或目录的权限与文件本身的权限无关,而是与包含该文件或目录的父目录的权限相关。这是因为删除操作实际上是对父目录结构的修改。

删除文件的权限

  1. 目录的写权限 (w)

    • 要删除一个文件,用户需要对其所在的目录拥有写权限。
    • 写权限允许用户修改目录内容,例如添加或删除文件。
  2. 目录的执行权限 (x)

    • 要删除一个文件,用户还需要对其所在的目录拥有执行权限。
    • 执行权限允许用户进入该目录。

所以,要删除一个文件,用户需要对文件所在目录同时拥有写权限和执行权限。文件本身的权限则没有直接影响。

粘滞位

在 Linux 文件系统中,粘滞位(Sticky Bit)是一种特殊的权限位,用于目录上的时候,可以限制非目录拥有者删除目录中的文件或子目录。粘滞位在共享目录中非常有用,例如 /tmp 目录。

粘滞位的作用

  • 当目录设置了粘滞位时,只有以下用户可以删除或重命名该目录中的文件或子目录:

    1. 文件或子目录的所有者。
    2. 目录的所有者。
    3. 超级用户(root)。
  • 对于普通用户来说,如果没有设置粘滞位,任何拥有写权限的用户都可以删除或重命名目录中的文件或子目录,即使他们不是文件或子目录的所有者。

设置粘滞位

粘滞位可以通过以下方式设置:

  1. 八进制表示

    在权限设置的最前面加 1。例如:
    chmod 1777 directory_name
    

    这会设置 directory_name 目录的权限为 rwxrwxrwt,其中最后一个 t 表示粘滞位。

  2. 符号表示

    使用符号 +t。例如:
    chmod +t directory_name
    

    这会添加粘滞位到 directory_name

检查粘滞位

粘滞位在目录的权限表示中显示为 tT

t:表示其他用户对目录拥有执行权限。例如 drwxrwxrwt

T:表示其他用户对目录没有执行权限。例如 drwxrwxrwT

示例

以下是一些实际的例子:

共享目录 /tmp

典型的粘滞位应用是 /tmp 目录,通常权限为 drwxrwxrwt

这确保了任何用户都可以在 /tmp 中创建文件,但只有文件的所有者、目录的所有者或超级用户才能删除或重命名这些文件。

自定义共享目录

假设你有一个共享目录 shared,你希望用户能够在该目录中创建文件,但不允许删除其他人的文件:

mkdir shared
chmod 1777 shared

这将设置 shared 目录的权限为 drwxrwxrwt

相关推荐

  1. Linux权限

    2024-05-12 07:28:01       33 阅读
  2. Linux基础指令()(文件、权限等)

    2024-05-12 07:28:01       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-12 07:28:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-12 07:28:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-12 07:28:01       87 阅读
  4. Python语言-面向对象

    2024-05-12 07:28:01       96 阅读

热门阅读

  1. 数据结构之队列

    2024-05-12 07:28:01       36 阅读
  2. DBSCAN聚类算法

    2024-05-12 07:28:01       34 阅读
  3. WEB前端复习——HTML

    2024-05-12 07:28:01       36 阅读
  4. UML 方法

    2024-05-12 07:28:01       37 阅读
  5. C语言-STM32:初始定时器(通用定时器)

    2024-05-12 07:28:01       31 阅读
  6. Lua 协程池

    2024-05-12 07:28:01       39 阅读
  7. EureKa详细讲解通俗易懂

    2024-05-12 07:28:01       31 阅读
  8. flask+layui显示监控视频

    2024-05-12 07:28:01       35 阅读
  9. 代码绘梦:Processing艺术编程入门

    2024-05-12 07:28:01       26 阅读
  10. 大数据调度 Apache Airflow 安装部署

    2024-05-12 07:28:01       36 阅读