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 分钟前
基于VirtualBox和Ubuntu的虚拟环境搭建
运维·ubuntu·云计算
wdxylb3 分钟前
在远程非桌面版Ubuntu中使用Qt5构建Hello World项目
linux·ubuntu
skywalk816320 分钟前
install fcitx chinese input at FreeBSD14.1
运维·服务器·freebsd
小羊在奋斗27 分钟前
【Linux】包管理器、vim详解及简单配置
linux·运维·vim
CS_素锦少年35 分钟前
Linux_kernel字符设备驱动12
linux·运维·服务器
NineOne_豆浆狂魔40 分钟前
Linux 缓冲区
linux·服务器·c
醉颜凉1 小时前
银河麒麟服务器操作系统中查询服务器主板型号
运维·操作系统·国产化·kylin os·银河麒麟桌面操作系统
陈序缘1 小时前
Go语言实现长连接并发框架 - 消息
linux·服务器·开发语言·后端·golang
mysql学习中1 小时前
Linux的环境变量
linux·运维·服务器·tcp/ip·centos
BXS_null1 小时前
JWT集成Keycloak
运维·服务器