第4章 文件权限

发布时间 2023-11-28 23:49:04作者: 陈陌溪

 

1. 基本权限UGO

 在Linux系统中,文件权限是一个关键的概念,它决定了对文件的访问权限。文件权限主要分为读(r)、写(w)、执行(x),这些权限分别适用于文件的所有者(u)、所属组(g)和其他用户(o)。

  1.1. 文件权限表示

文件权限以一串字符的形式表示,共有九个字符,分为三组,每组三个字符。例如,rw-r--r--表示文件所有者有读写权限,所属组和其他用户有读权限。

  • r:读权限
  • w:写权限
  • x:执行权限
  • -:表示相应位置没有该权限

  1.2. 改变文件权限

  1.2.1 chmod命令

chmod命令用于更改文件或目录的权限。可以使用符号表示法和数字表示法设置权限。 

 

  1.2.2 chown命令

chown命令用于更改文件或目录的所有者。

 1.2.3 chgrp命令

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

 

1.3. 同时给所有对象修改权限

如果要同时修改文件的所有者、所属组和其他用户的权限

 

1.4. 同时删除权限

使用-号可以删除指定权限。例如,如果要删除文件所有者的写权限

 

1.5. 递归参数 -R 

递归参数-R用于将权限修改操作应用于目录及其内容。

1.6 UGO权限设置案例

在Linux系统中,文件和目录的权限分为读(r)、写(w)、执行(x)三种,这些权限分别适用于文件的所有者(u)、所属组(g)和其他用户(o)。以下是通过案例说明r、w、x对文件和目录的影响以及文件与目录的区别。

 1.6.1 文件权限设置案例

文件权限说明
  • r(读权限):允许查看文件内容。
  • w(写权限):允许修改文件内容。
  • x(执行权限):对文件而言,允许执行文件。

 

1.6.2目录权限设置案例

目录权限说明

对于目录而言,r 表示允许列出目录内容,w 表示允许在目录中创建或删除文件,x 表示允许进入目录。

 

1.6.3 文件与目录的区别

  • 文件: 用于存储数据或执行代码的容器。
  • 目录: 用于组织和存储文件的容器。

文件和目录之间的主要区别在于它们的用途和如何使用权限。文件权限控制对文件的读取、写入和执行操作,而目录权限控制对目录的查看、创建、删除和进入操作。

2. 基本权限ACL

UGO权限只针对一个用户、一个组与其他用户,使用上有局限性,ACL主要提供传统的UGO的r、w、x权限之外的具体权限设置,可以对单一用户、单一文件或目录进行权限设置

2.1 ACL的基本用法

2.1.1 查看ACL信息

ACL(Access Control List)是一种用于文件和目录的附加权限机制。getfacl命令用于查看文件或目录的ACL信息。它显示用户(user)和组(group)的具体权限信息。


2.1.2 添加ACL权限

setfacl命令用于添加ACL权限。

 

2.1.3 删除ACL权限

使用setfacl命令可以删除指定用户或组的ACL权限:

2.1.4 默认ACL权限

默认ACL权限用于确保新创建的文件和目录继承相应的ACL权限。

 

2.2 ACL的高级特性

2.2.1 ACL继承

ACL权限可以继承到新创建的子目录和文件。使用-R选项表示递归设置ACL权限。

2.2.2 默认ACL权限

设置默认ACL权限以确保新创建的文件和目录继承ACL权限。

2.2.3 ACL限定

ACL权限可以使用限定符进行更精细的控制。

 

3. Linux系统文件权限的高级权限管理

3.1. SUID权限

SUID(Set User ID)是一种文件权限机制,允许一个执行文件在执行过程中暂时获得文件所有者的权限。这对于某些需要特殊权限执行的程序非常有用。

 

3.2. SGID权限

SGID(Set Group ID)是一种文件权限机制,允许一个执行文件在执行过程中暂时获得文件所属组的权限。通常用于确保多用户能够协同工作,同时具有对特定文件的写入权限。

 

3.3. Sticky权限

Sticky权限是一种目录权限机制,防止非目录所有者删除其他用户创建的文件。通常用于一些公共目录,例如/tmp,确保用户只能删除自己的文件。

 

4.Linux系统文件权限的进程掩码(umask)

4.1. 进程掩码概述

进程掩码,通常称为umask,是一个用于限制新创建文件权限的值。它作为一个权限掩码,用来屏蔽掉权限中的特定位,确保新创建的文件或目录不会赋予过于宽松的权限。

4.2. umask的作用

umask的主要作用是确定文件和目录的默认权限。系统中的每个用户和进程都有一个umask值,它与创建文件时所用的权限进行按位与运算,从而确定最终的实际权限。

  • umask的设置: umask值通过三位八进制数来表示,分别对应文件所有者、组和其他用户的权限位。

4.3. 修改umask值

  • 永久修改: 修改用户的shell配置文件(如~/.bashrc~/.bash_profile)。

  • 临时修改: 直接在命令行中设置umask值。

umask值的设置使得系统管理员可以对文件和目录的默认权限进行更精细的控制,确保系统的安全性和一致性。