Linux文件的默认权限、软硬链接和属性

news2024/12/25 9:22:38

在这里插入图片描述

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Java案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Linux文件的默认权限、软硬链接和属性

文章目录

    • Linux文件的默认权限
      • 创建默认权限
      • 文件权限的一般计算方法
    • Linux文件的软硬链接
      • 硬链接
      • 软链接(符号链接)
    • Linux文件属性
      • 第1列——文件权限
      • 第2列——链接数或子目录数
      • 第3列——文件所有者
      • 第4列——文件所属组
      • 第5列——文件大小
      • 第6列——最后一次修改时间
      • 第7列——文件名

在这里插入图片描述

Linux文件的默认权限

在这里插入图片描述

创建默认权限

每次新建一个文件或者目录后,用ls –l去查看的时候,新建的文件或者目录本身就有些权限存在。

通过实例总结规律如下

在这里插入图片描述

在这里插入图片描述

说明:通过实例发现,在 seashorewang 账户下创建的所有目录的权限是一样的,将新建目录的权限值转换为八进制数字是 775;新建的所有文件的权限也都是一样的,将新建文件的权限值转换为八进制数字是 664

新建的目录和文件是有一定规律的,会有一个默认的权限。这个默认的权限就是umask。

umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般在/etc/bashrc、/etc/profile、$ [HOME]/.bash_profile或$ [HOME]/.profile中设置umask值。但是强烈建议不要通过文件修改umask的值。

名称:umask
使用权限:root
使用方式:umask [-S] [权限掩码]

参数:
-S:以文字的方式来表示权限掩码。
说明:umask可以用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。

查看本系统中root账户与seashorewang账户下的umask。

在这里插入图片描述

说明:不同账户的默认umask可能是不同的。

umask的值为4为八进制数,其中第一位是特殊权限的设置,在此不作介绍。后面所说的umask都使用三位数字,指的是后三位。

创建文件默认最大权限为666(-rw-rw-rw-),默认创建的文件没有可执行权限x位。对于文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减去umask的掩码数值;如果umask的部分位或全部位为奇数,那么,在对应为奇数的文件权限位计算结果分别再加1就是最终文件权限值。

创建目录默认最大权限777(-rwxrwxrwx),默认创建的目录属主是有x权限,允许用户进入。对于目录来说,umask的设置是在假定文件拥有777权限上进行,目录八进制权限777减去umask的掩码数值。

文件权限的一般计算方法

(1) 默认文件权限计算方法

  • 假设umask值为:022(所有位为偶数)。
    6 6 6 = = >文件的起始权限值
    0 2 2 = = >umask的值
    6 4 4

  • 假设umask值为:045(其他用户组为奇数)。
    6 6 6 = = >文件的起始权限值
    0 4 5 = = >umask的值
    6 2 1 = = >计算出来的权限,由于umask的最后一位数字是5,所以在其他用户组位再加1
    0 0 1 +
    6 2 2 = = >真实文件权限

(2) 默认目录权限计算方法

  • 7 7 7 = = >目录的起始权限值
    0 2 2 = = >umask的值
    7 5 5

    在wei目录下使用seashorewang账户与root账户分别创建一个文件与一个目录,然后用ls查看其详细信息。

在这里插入图片描述

说明1:seashorewang账户下的umask为0002,按照上面说的减法,所以seashorewang账户创建的文件的权限为666-002=664,也就是rw-rw-r–,创建的目录的权限为777-002=775,也就是rwxrwxr-x。而root账户创建的文件的权限为666-022=644,也就是rw-r—r–,创建目录的权限为777-022=755,也就是rwxr-xr-x。
说明2:通过比较我们发现使用root账户创建的文件与目录权限反而比seashorewang账户创建的文件与目录权限少,主要体现在对于group上,这是因为root的权限实在太大了,为了防止使用root时出现问题,所以通过umask对root创建的文件和目录加了限制。

将seashorewang账户的umask更改为022

在这里插入图片描述

说明:umask后面接数字用于修改umask的值。

将当前账户的umask改为044,建立目录与文件进行测试。

在这里插入图片描述

将当前账户的umask改为023,建立目录与文件进行测试。

在这里插入图片描述

注意:umask为偶数的位不要加1.

将当前账户的umask改为551,建立目录与文件进行测试。

在这里插入图片描述

说明:umask为0551,根据掩码方法计算:目录权限为777-551=226,也就是-w—w-rw-;文件的权限为666-551=115,115+111=226(因为umask的三个权限位都是奇数,所以每个位分别加1就是正确的权限)也就是-w–w-rw-。

Linux文件的软硬链接

在这里插入图片描述

  Linux文件系统中的每一个对象都有唯一的inode索引,每一个inode号和文件系统的一个对象一一对应,要查看文件或目录的inode号可在ls命令中使用-i选项,每个目录下的.(当前目录)和…(上级目录)都是硬链接。

  在Linux系统中内核为每一个新建立的文件分配一个inode(i节点),每个文件都有一个唯一的inode号。文件属性保存在索引节点里,在访问文件时,索引节点被复制到内存中,从而实现文件的快速访问。链接是在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。

  Linux具有为一个文件起多个名字的功能,称为 链接。被链接的文件可以存放在相同的目录下,但必须有不同的文件名,而不用在硬盘上为同样的的数据重复备份。被链接的文件可以有相同的文件名,但是要存放在不同的目录下,只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对某个文件的各链接文件,可以给它们指定不同的权限,以控制对信息的共享和增强安全性。

硬链接

  建立硬链接时,在别的目录或本目录中增加目标文件的一个目录项,这样一个文件就登记在多个目录中。创建硬链接后,已经存在的文件的i节点号会被多个目录文件项使用。

  文件的硬链接数可以在用ls –l查看信息的第2列中看到,无额外链接的文件的链接数为1.默认情况下,ln 命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。
(1)普通用户不能对目录文件创建硬链接;不能在不同的文件系统至之间做硬链接。即链接文件和被链接文件必须处于同一个文件系统中。
(2)硬链接是文件的一个拷贝,其i节点号是一样的。 类似于复制,但复制只是一个简单的拷贝,是静态的;而硬链接不但是拷贝,是动态的,而且是可以共享资源。

  硬链接是一个指针,指向文件inode号,系统并不为硬链接重新分配inode。硬链接可以节省空间,也是Linux系统整合文件系统的传统方式,但是不可以在不同文件系统的文件之间建立链接;只有root用户可以为目录创建硬链接。

软链接(符号链接)

  软链接也称符号链接,是一个新文件。符号链接类似于Windows的快捷方式,符号链接实际上是特殊文件的一种。在符号链接中,文件实际上是一个文本文件,其中包含有另一个文件的位置信息。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。

  使用 ln –s 命令建立符号链接。

硬链接和软链接的区别
(1) 符号链接是一个新文件,具有自己的i节点号;硬链接没有建立新文件,其只是一个指针。
(2) 符号链接没有硬链接的限制,可以对目录文件建立符号链接,也可以在不同文件系统之间建立符号链接。
(3) 当源文件被删除后,硬链接文件同样可以被使用,而符号链接文件将无法使用。
(4) 符号链接会显示为“链接文件名->指向的实际文件”,而硬链接通过文件名无法判断。

在这里插入图片描述

名称:ln
全称:link
使用权限:ln [options] source(源路径) dest(目标路径)
说明:创建软硬链接。
参数:
-s:创建软链接,如果不加参数默认创建的是硬链接。
-f:删除目标文件,然后创建连接。

在这里插入图片描述

Linux文件属性

在这里插入图片描述

通过ls –l或者ls –al命令来解读Linux文件属性

在这里插入图片描述

利用ls –al查看的信息一共有7列,每个文件信息由7个部分组成,分别为①文件权限;②链接数或子目录数;③文件所有者;④文件所属用户组;⑤文件大小;⑥文件最后被修改时间mtime;⑦文件名

第1列——文件权限

第一部分由10个字符组成,每个字符都有其自身的含义,其中10个字符的具体含义分别是:

在这里插入图片描述

第1个字符代表文件的类型:
[-]该文件是一个普通文件。
[d]该文件是一个目录,字母[d]是directory的缩写。
[l]该文件是一个符号链接,字母[l]是link(链接)的缩写。
[b]该文件是一个块设备文件,字母[b]是block的缩写。
[p]代表管道。

注意:

一个目录或者一个文件夹是一个特殊文件,里面存放的是其他文件和文件夹的相关信息。
符号链接的概念类似于windows里的快捷方式。
在UNIX类系统中,一个文件可以有多个文件名,一个文件的多个文件名之间互称为硬链接(Hard Link),这些文件名可以指向同一个文件,删除其中一个文件名并不能删除该文件,只有把指向该文件的所有硬链接都删除,这个文件所占用的空间才真正被释放,该文件才真正被删除。
设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件,它没有文件大小,只有一个主设备号和一个辅设备号。

操作系统对文件的权限管理可以总结为“两个三”:第一个三就是文件的所属分为 自己、同组与其他;第二个三是对文件的 读、写与执行

文件属性第一列除了第一个字符外的其它9个字符可以3个一组分为三组,分别代表自己、同组与其他。每组有且只有三个字符,分别是[r]代表可读read;[w]代表可写write;[x]代表可以执行execute。这三个字符的顺序是不能改变的,每组中的第一个字符都代表可读;第二个字符都代表可写;第三个字符都代表可执行。如果不具有读写执行的某个权限则用[-]填补,也就是即使没有这个权限,也不能为空,用[-]代替。如下所示:

在这里插入图片描述

将/etc/passwd文件复制到/tmp/sanguo目录下,查看其详细信息并说明其文件权限情况。

在这里插入图片描述

说明:从passwd文件的权限部分的第一个字符可以看出这是一个普通文件;从其24个字符可以看到,创建文件的用户对该文件具有读写权限,但不可以执行,也间接说明了这个文件是个不可执行文件;从57个字符可以看出该文件对同组成员仅开放了读的权限;从8~10个字符可以看出该文件对其他用户也是仅开放了读的权限。

第2列——链接数或子目录数

如果所查看的文件为目录,则该字段表示的是该目录下面有多少个子目录;如果查看的是文件,则表示该文件的硬链接数。其实在Linux操作系统中文件的权限与属性都会记录到文件系统的inode之中,每个文件名都是指向这个inode的。即:这个字段表示的是该文件有多少个文件名

查看passwd文件的链接数,为其创建2个硬链接后再查看其链接数,为其创建1个软链接后继续查看。

在这里插入图片描述

说明:在没有创建任何硬链接前passwd 文件的链接数为1,每次为其创建一个硬链接,该文件的链接数就增肌1,创建软链接不改变其链接数。从而说明,这项值指的是硬链接数,其中passwd_1与passwd_2互为硬链接。

在这里插入图片描述

说明:从查看的结果看,建立硬链接后的文件和原来的passwd文件的inode号是一样的,而创建软链接的inode号是不一样的。再次说明,硬链接其实指向的是同一个文件,只是不同的文件名而已。

第3列——文件所有者

该字段表示这个文件是属于哪个用户的 。UNIX类系统都是多用户系统,每个文件都有它的拥有者。只有文件的拥有者才具有改动文件属性的权利,当然root用户具有改动任何文件属性的权利。对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利。该列指的是该文件的所属,也就是拥有者是谁。

第4列——文件所属组

组的概念可以想象成一个共同完成一个项目的团队,通过组的概念可以控制文件,让特定的用户查看、修改或运行;而不是一棍子打死要么全不让看,要么全让看。一个用户可以加入很多个组,但其中有一个是主组,就是显示在第4列的名称。该列指的是该文件所属的组。

第5列——文件大小

第5字段表示文件大小,如果是一个文件夹,则表示该文件夹的大小(注意是文件夹本身的大小,不是文件夹以及它下面文件的总大小)。文件大小在Linux操作系统中默认的大小单位是B,即你的文件大小是多少B。

在这里插入图片描述

第6列——最后一次修改时间

该列指的是文件的创建时间或者最后一次被修改的时间。

在这里插入图片描述

说明:这两个文件的最后一次修改时间是不一样的,因为/tmp/sanguo下的passwd文件是刚复制过来的,它的最后一次被修改时间肯定改变了。

第7列——文件名

即文件的名字,如果是一个符号链接,就会有一个“->”箭头符号,后面跟一个它指向的文件。符号链接类的文件的大小是所指向的文件的名称的字符数。文件名的第1个字符是“.”的文件为 隐藏文件

查看/tmp/sanguo目录下的文件名称,尤其是软链接的文件名。

在这里插入图片描述

说明:软链接的文件名颜色有所区别并且用“->”,软链接的大小为其指向的文件名的名称字符数。


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/164273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝

Java-FileInputStream和FileOutputStream的使用什么是IO流?流是什么?IO流的类图流的分类字符与字节的区别FileInputStream的使用1.构造器2.常用方法3.使用FileInputStream来读取txt文件FileOutputStream的使用1.构造器2.常用方法3.使用FileOutputStream写…

(11)go-micro微服务雪花算法

文章目录一 雪花算法介绍二 雪花算法优缺点三 雪花算法实现四 最后一 雪花算法介绍 雪花算法是推特开源的分布式ID生成算法,用于在不同的机器上生成唯一的ID的算法。 该算法生成一个64bit的数字作为分布式ID,保证这个ID自增并且全局唯一。 1.第一位占用…

【嘉立创EDA】构建自己的元件库,绘制符号、封装的方法

器件问题 先选择需要的元器件,然后查看其数据手册,找到官方提供的元件封装进行绘制。 器件 选择一款卧贴式双排排针进行绘制。 器件模型 主要用到的就是 Recommended P.C.B Layout 前期资料准备完毕,下面开始绘制自己的元件库。 元件库制作…

微服务多模块feign更新数据问题

文章目录问题测试1.bill模块抛异常,data模块正常2.bill模块抛异常,data模块正常解决方案1.分布式事务2.复制data的dao mapper到bill中3.判断feign返回值,抛异常做回滚最近在做一个财务系统,用到了两个模块bill账单模块和data数据模…

C语言文件补充笔记1:EOF与feof

1 关于EOF 可以查看EOF的宏定义 函数fgetc如果读取失败就返回-1&#xff0c;对于文本文件而言&#xff0c;以为着读取结束&#xff0c;因此-1可以作为结束的标志。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {FILE* fp fopen("a.txt"…

IvyPdf 1.64.1 .NET library Crack

IvyPdf 帮助您快速轻松地从非结构化 PDF 文档中提取有价值的信息。它可以提取无限的单个值和表格&#xff0c;并提供强大的后处理机制来进一步清理和格式化数据。 虽然 PDF 是图书馆的主要目标&#xff0c;但它们也可用于解析 Excel、文本、HTML 和其他文件格式&#xff0c;从…

基于python机器学习深度学习实现股市评论情感分析 (完整代码+数据集可直接运行)

结果展示: 情绪与股市 情绪与股市关系的研究由来已久,情绪是市场的一个重要影响因素已成为共识。 15年股灾时,亲历了一次交易灾难,眼见朋友的数千万在一周不到的时间内灰飞烟灭。那段时间市场的疯狂,让人深刻地明白:某些时候,股票市场这个抽象、复杂的系统,反映的不再是…

Vue 基础之过滤器

Vue 基础之过滤器描述过滤器capitalize 过滤器过滤器函数的参数私有过滤器与全局过滤器私有过滤器全局过滤器Vue.filter()capitalize 全局过滤器全局过滤器 VS 私有过滤器描述 项目描述IDEVScode操作系统Windows 10 专业版Vue.js2.6.12 过滤器 Vue.js 允许你自定义过滤器&…

程序员面试,能不能不考“八股文”?

学过初中历史的小伙伴们都知道&#xff0c;明清的科举考试形式&#xff0c;是一种名为“八股文”的文体形式。这种考试形式给考生们带来了极大的限制&#xff0c;考生只能在严格的规则内进行发挥。在新的时代&#xff0c;真正的八股文已经成为了历史&#xff0c;然而在程序员行…

【GPU】Nvidia CUDA 编程高级教程——NVSHMEM 内存模型

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

【Python学习】字典和集合

前言 往期文章 【Python学习】列表和元组 字典和集合 字典是一系列无序元素的组合&#xff0c;其长度大小可变&#xff0c;元素可以任意地删减和改变。不过要注意&#xff0c;这里的元素&#xff0c;是一对键&#xff08;key&#xff09;和值&#xff08;value&#xff09;…

【nvidia CUDA 高级编程】NVSHMEM 直方图——分布式方法

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

Redis基础命令操作五之集合类型ZSET

ZSET 命令举例说明ZADD ZADD [KEY][序号1][序号1的值]集合中添加元素ZREMZREM [KEY][序号的值]移除集合中元素ZRANGEZRANGE [KEY][下标1][下标2]获取指定区间集合元素ZRAGNEBYSCOREZRANGEBYSOCRE [KEY] -INF INF集合中按照序号从小到大排列ZREVRANGEZREVRANGE [key][序…

四,Spring注解开发

Spring day04 1 Spring基于注解的开发 XML方式配置bean存在的问题&#xff1a;开发效率低下。Spring2.x提供了开发效率更高的注解式配置。注解开发替换XML配置的好处&#xff1a;简化编程&#xff0c;提高开发效率。 XML方式&#xff1a;配置繁琐&#xff0c;但功能强大&…

测试开发的一次实践总结

这些年&#xff0c;测开越来越火&#xff0c;火的原因之一就是因为大部分公司都有设测开岗位并有招聘需求。那测试开发到底是做什么&#xff0c;和测试又有什么区别呢&#xff1f;接下来&#xff0c;说说我对测开的理解与实际工作的总结。 01—测试开发的理解 测试分类 从市场…

测试碎碎念(基础篇_1)

一、软件测试1.1 什么是测试测试行为 在生活中是十分常见的~在生活中&#xff0c;我们有许多 "测试" 的行为&#xff0c;比如说&#xff0c;在坐地铁之前&#xff0c;需要用金属探测仪在身上刷一下&#xff0c;需要把身上的背包等物品放在闸机上过一下~比如说&#x…

Rockchip开发系列 - 8. IO电源域配置

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 RK3566 RK3568 IO 电源域配置指南概述第一步:获取硬件原理图并确认硬件电源的设计方案第二步:查找对应的内核dts配置文件第三步:修…

Open3D 网格滤波(Python版本)

文章目录 一、简介二、滤波2.1 均值滤波2.2 Laplacian滤波2.3 Taubin滤波三、实现效果参考资料一、简介 网格数据的滤波其本质上仍是针对点的滤波过程,具体的过程如下所示。 二、滤波 2.1 均值滤波 如下公式所示,均值滤波其实就是该点与其邻近点之间的平均值: Open3D中的相…

在Ubuntu上安装OpenShift并使用

服务器信息 在阿里云买了个抢占式的服务器&#xff0c;地区为华南广州&#xff0c;系统为Ubuntu 20.04&#xff0c;8核16GB。 安装Docker 命令如下&#xff1a; $ apt-get update -y $ apt-get upgrade -y $ apt-get install -y docker.io 安装成功后&#xff0c;检查一下版…

2023 年你应该知道的所有机器学习算法

在过去的几年里&#xff0c;根据自己的工作经验&#xff0c;整理了我认为最重要的机器学习算法。 通过这个&#xff0c;我希望提供一个工具和技术的存储库&#xff0c;以便您可以解决各种数据科学问题&#xff01; 让我们深入研究六种最重要的机器学习算法&#xff1a; 解释…