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

相关推荐
躲猫猫的喵喵11 分钟前
Ubuntu2204降内核版本
linux·运维·服务器·ubuntu
昌sit!33 分钟前
Linux系统性基础学习笔记
linux·笔记·学习
zdslovezy42 分钟前
CentOS 系统升级 OpenSSH 和 OpenSSL 的完整方案
linux·运维·centos
HIT_Weston1 小时前
18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
linux·tcp/ip·ubuntu
cccccc语言我来了1 小时前
(Linux (6):从包管理到工具探索,构建系统操作基础认知)
linux·运维·服务器
8K超高清2 小时前
高校巡展:中国传媒大学+河北传媒学院
大数据·运维·网络·人工智能·传媒
ben9518chen2 小时前
嵌入式Linux C语言程序设计九
linux·c语言
wuk9982 小时前
CentOS7环境搭建L2TP服务器
运维·服务器
恒创科技HK2 小时前
香港1核2G云服务器当网站服务器够用不?
运维·服务器
IT 小阿姨(数据库)3 小时前
PostgreSQL 之上的开源时序数据库 TimescaleDB 详解
运维·数据库·sql·postgresql·开源·centos·时序数据库