百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

linux下文件权限详解

sinye56 2025-01-09 15:57 8 浏览 0 评论

在Linux系统中,文件是存储数据的基本单位。Linux将所有东西都视为文件,包括文本文件、目录、设备、套接字等。文件权限是一个关键的概念,它决定了谁可以对文件执行哪些操作。当你创建一个文件的时候,系统保存了有关该文件的全部信息,包括: 文件的位置、文件类型、文件长度、哪位用户拥有该文件,哪些用户可以访问该文件、 i节点、文件的修改时间、文件的权限位。 让我们使用ls -l命令,来看一个典型的文件:



  • total 4:该目录中所有文件所占的空间。
  • -rwxrw-r--:文件权限位。其中rwxrw-r--前的横杠:文件类型有七种,其代表普通文件。
  • 1 :该文件硬链接的数目。
  • RedQ: 文件的属主。
  • RedQ:文件的属主RedQ所在的缺省组(也叫做RedQ)。
  • 80: 用字节来表示的文件长度,记住,不是 K字节!
  • Sep 14 16:59: 文件的更新时间。
  • a_file:文件名。

1、文件类型

d 目录(Directory)

  • 目录文件用于组织和存储其他文件和子目录。
  • 目录文件中包含了其他文件和目录的条目。
  • 目录文件的权限控制着谁可以列出(读取)、创建、删除和访问其中的文件和子目录。

l 符号链接(Symbolic Link)

  • 符号链接是一种特殊类型的文件,它包含对另一个文件或目录的引用。
  • 符号链接可以用于创建文件和目录之间的链接。
  • 权限控制着谁可以读取符号链接,而不是实际目标文件或目录。

s 套接字文件(Socket)

  • 套接字文件用于进程间通信,特别是网络通信。
  • 套接字允许不同进程通过网络进行通信。
  • 这些文件通常与网络服务器和客户端应用程序相关。

b 块设备文件(Block Device)

  • 块设备文件用于与块设备通信,如硬盘驱动器。
  • 块设备通常按块(通常为512字节或更多)读取和写入数据。
  • 例如,硬盘驱动器是块设备,用于存储和检索数据块。

c 字符设备文件(Character Device)

  • 字符设备文件用于与字符设备通信,如终端设备、键盘等。
  • 字符设备通常按字符(单个字节)读取和写入数据。
  • 例如,终端设备是字符设备,用于文本输入和输出。

p 命名管道文件(Named Pipe)

  • 命名管道是一种特殊类型的文件,用于进程间通信。
  • 它们提供了一种在不同进程之间传递数据的机制。
  • 命名管道通常用于将一个进程的输出连接到另一个进程的输入。

- 普通文件(Regular File)

  • 普通文件是最常见的文件类型,包括文本文件、二进制文件、图像文件等。
  • 可以包含文本、数据或程序代码。
  • 普通文件的权限控制着谁可以读取、写入和执行这些文件。

2、文件权限

读取权限(Read,表示为r

  • 读取权限允许用户查看文件的内容。
  • 对于目录文件,读取权限允许用户列出目录中的文件和子目录。
  • 如果文件的读取权限被禁用,用户将无法查看文件的内容。

写入权限(Write,表示为w

  • 写入权限允许用户修改文件的内容。
  • 对于目录文件,写入权限允许用户在目录中创建、删除和重命名文件和子目录。
  • 如果文件的写入权限被禁用,用户将无法修改文件的内容或对目录进行更改。

执行权限(Execute,表示为x

  • 执行权限仅适用于可执行文件(二进制文件、脚本等)和目录。
  • 对于可执行文件,执行权限允许用户运行该文件。
  • 对于目录文件,执行权限允许用户进入目录,查看其中的文件和子目录。
  • 如果文件的执行权限被禁用,用户将无法运行可执行文件或进入目录。

特殊权限(Set User ID,Set Group ID,Sticky Bit)

  • 特殊权限是一种附加权限,通常用于可执行文件和目录。
  • Set User ID(SUID):当文件拥有SUID权限时,它将以文件所有者的权限运行,而不是运行它的用户的权限。
  • Set Group ID(SGID):当文件拥有SGID权限时,它将以文件所属组的权限运行。
  • Sticky Bit:对于目录,Sticky Bit权限可以防止其他用户删除不属于他们的文件。只有目录的所有者可以删除其中的文件。

文件所有者(Owner)

  • 文件的所有者是创建文件的用户。
  • 所有者可以更改文件的权限,也可以更改文件的所有者。
  • rwxrwxrwx前面三位

所属组(Group)

  • 文件的所属组通常与创建文件的用户的默认组相关联。
  • 所属组权限控制着属于同一组的用户对文件的访问。
  • rwxrwxrwx中间三位

其他用户(Others)

  • "其他用户" 权限适用于系统中的所有其他用户,不包括文件的所有者和所属组。
  • 这些权限控制着未被列为文件所有者或所属组成员的用户对文件的访问。
  • rwxrwxrwx后面三位

3、改变权限位

基本语法chmod命令的基本语法:chmod 权限文件名

权限表示:权限可以使用数字或符号来表示。数字表示权限:使用三个八进制数字,分别表示文件所有者、所属组和其他用户的权限。每个数字由三个位组成,分别表示读取4、写入2和执行1权限。例如,chmod 755 文件名 将文件权限设置为 -rwxr-xr-x。符号表示权限:使用符号表示,包括加号(+)、减号(-)和等号(=)。例如,chmod u+r 文件名 将文件所有者的读取权限打开。

文件所有者、所属组和其他用户u:文件所有者。g:所属组。o:其他用户。a:所有用户(文件所有者、所属组和其他用户的组合)。

授予权限:使用加号(+)表示授予权限,例如,chmod u+r 文件名 将为文件所有者打开读取权限。可以一次添加多个权限,例如,chmod u+rw 文件名 将为文件所有者打开读取和写入权限。

撤销权限:使用减号(-)表示撤销权限,例如,chmod u-r 文件名 将从文件所有者那里撤销读取权限。可以一次撤销多个权限,例如,chmod u-rw 文件名 将从文件所有者那里撤销读取和写入权限。

设置权限:使用等号(=)表示设置权限,例如,chmod u=rw,g=rx,o= 文件名 将为文件所有者设置读取和写入权限,为所属组设置读取和执行权限,为其他用户设置没有权限。

递归更改权限:若要递归更改目录及其内容的权限,可以使用-R选项,例如,chmod -R 755 目录名 将递归更改目录及其内容的权限。

查看权限:使用ls -l命令可以查看文件的当前权限。

了解和正确管理文件权限是Linux系统中的重要任务,它有助于确保文件和目录的安全性,并控制着用户对系统资源的访问。请注意,更改文件的权限需要超级用户或文件所有者的权限。不正确的文件权限设置可能会导致安全问题或访问问题,因此在更改文件权限时要格外小心。


相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: