文件、目录属性

可能有人觉得,文件这东西这么普通有什么好讲的,,,其实不然,在linux中一切皆文件,搞清楚文件的本质,将对我们大有裨益。

文件、目录属性简介

举个例子

randolf@localhost:~/pytest/pythondemo $ ls -lih
总用量 16K
105674 drwxrwxr-x. 4 randolf randolf 160 1月 21 17:58 appium
33870718 drwxrwxr-x. 2 randolf randolf 235 1月 21 17:58 beautifulsoup
16800015 drwxrwxr-x. 2 randolf randolf 110 1月 21 17:58 cnki

先说一下命令的选项,-i: inode(节点) -h: human-readable(人眼易读的) -l: 显示长信息(详细信息)

第一列:索引节点号(系统通过inode找到文件内容,类似于我们通过身份证号查找个人信息)

第二列:类型及权限属性(第1个字符为文件类型,后9个字符是权限信息),如果一个目录,具有可执行权限,则意味着可以进入这个目录。 第三列:硬链接数

第四列:文件或者目录所属用户

第五列:文件或者目录所属用户

第六列:文件或者目录的大小

第七八九列:文件或者目录的修改时间;按照月、时、分钟的顺序

第十列:实际的文件名或者目录名(不算文件属性)

属性深入解读

1. 索引节点(index node)与block数据存储

一块新的硬盘 ->分区(打隔断)->格式化系统 ->存数据

格式化文件系统(ext4、xfs)后,一般会有两部分:inode与block.

1.inode就是用来存放属性信息的,即ls -l的内容(不包括最后一列的文件名,文件名不算属性)

2.流程:inode(ls -l) -->文件属性,是否具有对文件或者目录的相应权限 -->block中文件的数据内容

3.也可以通过stat filename查看文件详细信息

4.inode大小:centos5 中128字节,centos7中默认256字节

格式化以后inode大小无法改变(格式化后inode和blocK分配的数量固定,所以磁盘满了有两种情况:inode用完了,block不够用)。

5.inode具有唯一性,inode相同的文件互为硬链接文件,其实就是同一个文件的不同入口。

1.block存储实际数据,单个block大小一般为1k、2k,4k等几种。其中引导分区一般1k,其他普通分区一般为4k.

2.一个block只能存放一个文件的内容,无论文件有多小。如果一个block为4k存放的文件是1k,那么剩余的3k就浪费了。所以说,block并不是越大越好。

3.根据实际需求设置block大小,大文件多就设置block大一些,小文件多一些,就设置block小一点。

4.block的大小在格式化分区时设置:mkfs.ext4 -b 2048 -I 256 /dev/sdb -b设置block大小,-I设置inode大小。

5.centos5和centos6文件系统为ext3/ext4,centos7文件系统为xfs.

2.文件类型

文件类型 描述
d(directory) 目录文件,目录是一个特殊的文件
-(regular file) 表示这是一个普通的文件
l(link) 符号链接文件,实际上指向另一个文件
b(block) 块设备和其他外围设备,特殊类型文件
c(character) 字符设备文件
s(socket) 表示socket文件
p(named pipe) 表示管道文件

前四个是重点,也是常见文件类型,后面三个基本用不到。

3.权限属性

rwxr-xr-x为例,三位为一组,前三位为用户权限位,中间三位是属组权限位,后三位是其他人权限。

r :read 读 4;w :write 写 2;x :excute 执行 1; - 没有权限 0

4.用户与组属性简介

Linux中角色决定权限,角色不同,权限和完成的任务也不同;在linux中由UID唯一标记一个用户,由GID唯一标记一个用户组。


用户简单分类
  • 超级用户:即root用户(系统管理员),拥有至高无上的权限,其UID和GID都为0。

  • 普通用户:通过useradd创建,只能操作自己家目录下的文件,要想做超越权限的事情,可以利用sudo进行提权或者直接切换到管理员身份su - root

  • 虚拟用户 : 安装系统后默认存在的,这些傀儡用户大多不能登录系统,他们存在的意义主要在于方便系统管理,满足相应的系统进程对属主的要求,如下,以nologin结尾的就是所谓的虚拟用户。

    randolf@localhost:~ $ cat  /etc/passwd|head -4
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
与用户[组]相关的文件
  • /etc/passwd

    randolf@localhost:/ $ sudo cat /etc/passwd |head -2
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin

    各个字段分别代表:用户名、密码(x)、UID、GID、注释、用户的家目录、用户所使用的默认shell

    用户密码被重定向到了shadow文件,所以用x来表示。

  • /etc/shadow

    randolf@localhost:/ $ sudo cat /etc/shadow | tail -2
    randolf:$6$./CktF0O$giEudjhAawSmBjkt.opCVs2Q3ERXNJWsZZnGvQ4QEkbK5nGRkKH1PrAa4HuRwCDPYTAUrdvZOPSzlW1Jm0M.W/:17912:0:99999:7:::
    bash:$6$nhdotNEp$cufcTHgYi.9OjPI6ky1zh1EPbAGH7hWZjodfSlzAdeV5R1AKefxIifceFr/R6lskGkw1nemBTH422o9x14wOK.:17912:0:99999:7:::

    各个字段分别表示:1.用户名、2.密码、3.时间戳、4.过多久可以修改密码(为0则表示可以立即修改密码)、5.密码使用期限、6.距离到达最长使用时间多久提示修改密码 、7.到达使用期限后的多少天仍然可以登录,但是必须修改密码

    密码是经过加密的,如果密码位显示!!,则表示该用户未设置密码,禁止登录。

    时间戳是指,从1970-01-01到最近一次修改密码所经过的时间。

  • /etc/group

    randolf@localhost:/ $ cat /etc/group|head -3
    root:x:0:
    bin:x:1:
    daemon:x:2:
  • /etc/gshadow

    randolf@localhost:/ $ sudo cat /etc/gshadow|head -3
    [sudo] randolf 的密码:
    root:::
    bin:::
    daemon:::

5.时间属性

1.这个可说的东西不多,首先看看显示格式

#一般的长格式显示
randolf@localhost:/tmp $ ls -l
总用量 8
-rw-r--r--. 1 root root 43 1月 17 03:45 date.txt
-rw-r--r--. 1 root root 28 1月 22 17:40 file2.txt
#控制时间的格式,使用--time选项
randolf@localhost:/tmp $ ls -l --time-style=long-iso
总用量 8
-rw-r--r--. 1 root root 43 2019-01-17 03:45 date.txt
-rw-r--r--. 1 root root 28 2019-01-22 17:40 file2.txt

似乎好看一点,,哈哈,其实有时候筛选字段会用到他的。

2.使用stat命令查看文件的时间属性

randolf@localhost:/tmp $ stat date.txt
File: 'date.txt'
Size: 43 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 16777289 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2019-01-17 03:45:02.645805264 +0800
Modify: 2019-01-17 03:45:01.155796938 +0800
Change: 2019-01-17 03:45:01.155796938 +0800
Birth: -

从这里我们可以查看到文件包括访问时间、修改时间,改变时间在内的详细信息。如果是小白看到这里可能要蒙圈了,“修改时间和改变时间有区别???”,其实这里“修改时间”指的是我们对文件做了修改,“改变时间”则是指文件的状态发生了变化,比如文件大小,再比如文件拥有者或属组发生变化,概括来说就是我们文件的属性发生变化,则这个ctime就发生变化。下面举个栗子:

#当前目录下有个叫做date.txt的文件,来看一下他们的初始时间属性
[root@localhost tmp]# stat date.txt | tail -4
Access: 2019-01-17 03:45:02.645805264 +0800
Modify: 2019-01-17 03:45:01.155796938 +0800
Change: 2019-01-17 03:45:01.155796938 +0800
Birth: -
#向文本中追加内容
[root@localhost tmp]# echo `date` >> date.txt
#再次查看文件时间属性
[root@localhost tmp]# stat date.txt | tail -4
Access: 2019-01-17 03:45:02.645805264 +0800
Modify: 2019-01-23 15:58:07.939618364 +0800
Change: 2019-01-23 15:58:07.939618364 +0800
Birth: -

我们向文本中追加内容后,其大小也发生变化,因此mtime与ctime同时发生变化。

再举个例子:

[root@localhost tmp]# chown randolf:randolf date.txt
[root@localhost tmp]# stat date.txt | tail -4
Access: 2019-01-17 03:45:02.645805264 +0800
Modify: 2019-01-23 15:58:07.939618364 +0800
Change: 2019-01-23 16:16:30.692778301 +0800
Birth: -

我们改变其拥有者和数组,发现只改变了ctime,而mtime并未发生改变,可见mtime改变了ctime一定改变(文件大小属性变化),而ctime改变时,mtime却不一定发生改变。

6.最后一列文件名不算是文件属性,所以它并不在inode里面,而是存放在block中。

Linux文件、目录属性的更多相关文章

  1. Linux 文件|目录 属性

    文件属性 ls  -l 列出的文件|目录信息如下 第一个字符指定类型,-是文件,d是目录(dir). 后面9个字符是该文件|目录的用户权限:r读,w写,x执行. 执行是指:如果该文件是一个可执行文件, ...

  2. Linux实战教学笔记08:Linux 文件的属性(上半部分)

    第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

  3. #Linux学习笔记# Linux文件的属性以及权限说明

    1. Linux文件的属性 关于Linux文件的属性的说明和设置请参考鸟哥Linux私房菜:Linux 的文件权限与目录配置 2. 目录和文件的权限意义 在Linux系统中,每个文件都有三种身份的权限 ...

  4. Linux实战教学笔记08:Linux 文件的属性(下半部分)

    第八节 Linux 文件的属性(下半部分) 标签(空格分隔): Linux教学笔记 ---更多相关资料请点我查看 第1章 链接的概念 在linux系统中,链接可分为两种:一种为硬链接(Hard Lin ...

  5. Linux 文件/目录操作详解

    目录 Linux 文件/目录操作详解 初识Linux 一.文件/目录显示命令 ls 二.目录创建命令 mkdir 三.目录转移命令 cd 四.当前目录显示命令 pwd 五.文件处理命令 rmdir 六 ...

  6. Linux文件时间属性

    Linux文件时间属性                                                                                         ...

  7. 分析Linux文件rwx属性的含义

    Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来. ls -l(这个参数是字母L的小写,不是数字1) 这个命 ...

  8. Linux文件/目录权限设置命令:chmod

    文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 其语法格式为:chmod [w ...

  9. Linux文件权限属性后面有个点

    坑啊,新上的机器,监控怎么都不好使,各种报错说:没有权限 什么情况? 仔细查看,发现文件权限属性后面怎么多了个点,类似如下: 这是什么? 原来: 开启了SELinux功能的Linux系统就会有这个点. ...

  10. Linux文件/目录,权限相关

    查看权限 命令 # ls -l filename 结果 -rw-r--r-- l root root 27 11-10 14:50 filename 解析: -rw-r--r-- --共10位 第1位 ...

随机推荐

  1. iconfont 不居中的问题

    引用 阿里的 iconfont 发现跟我的文字不居中 页面中实际展示的时候,发现 iconfont 字体飘起来了 原因是:iconfont 的基线跟 文字 的基线不同导致的. 解决办法:给 iconf ...

  2. HDU 4771 Stealing Harry Potter's Precious dfs+bfs

    Stealing Harry Potter's Precious Problem Description Harry Potter has some precious. For example, hi ...

  3. HDU 5489 Difference of Clustering 图论

    Difference of Clustering Problem Description Given two clustering algorithms, the old and the new, y ...

  4. Polymorphism (C# Programming Guide)

    https://msdn.microsoft.com/en-us/library/ms173152.aspx Polymorphism is often referred to as the thir ...

  5. 【转】SDK、JDK、JRE、JVM、JDT、CDT等之间的区别与联系 .

    相信大多数java初学者被这些概念搞蒙过,它们之间到底有什么区别,又有什么联系呢?下面我将一一解开大家心中的谜团. 首先,给大家解释一下这些概念: 1.SDK(Software DevelopKit, ...

  6. bzoj2744 [HEOI2012]朋友圈——二分图匹配

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2744 首先,求一个图的最大团等价于求它的补图的最大独立集,而二分图的最大独立集 = 总点数 ...

  7. Word中公式和文字混排对齐的问题

    全选-字体-字符间距-位置-标准-确定 段落-中文版式-文本对齐方式-居中-确定

  8. 能够完成qq信息提醒的代码

    下面这个网址就帮咱们实现了QQ提醒的功能,别被它的外面吓坏,虽然是长的有点恶心,但是它可是一段“神奇代码”. http://qzs.qq.com/snsapp/app/bee/widget/open. ...

  9. [Swift通天遁地]四、网络和线程-(8)下载图片并实时显示下载进度

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  10. [Swift通天遁地]七、数据与安全-(14)使用单元测试进行邮箱格式的验证

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...