文件、目录属性

可能有人觉得,文件这东西这么普通有什么好讲的,,,其实不然,在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. School Personal Contest #1 (Codeforces Beta Round #38)---A. Army

    Army time limit per test 2 seconds memory limit per test 256 megabytes input standard input output s ...

  2. CF85 E Guard Towers——二分图

    题目:http://codeforces.com/contest/85/problem/E 给定一些点的坐标,求把它们分成两组,组内最大距离的最小值: 二分答案,判断就是看距离大于 mid 的点能否组 ...

  3. Weblogic 启动慢解决方法

      添加 启动参数  :      -Xms256m -Xmx512m -XX:MaxPermSize=256m 原因 : 实际是JVM在Linux下的bug:他想调用一个随机函数,但是取不到. 暂时 ...

  4. 【学习笔记】OI玄学道—代码坑点

    [学习笔记]\(OI\) 玄学道-代码坑点 [目录] [逻辑运算符的短路运算] [\(cmath\)里的贝塞尔函数] 一:[逻辑运算符的短路运算] [运算规则] && 和 || 属于逻 ...

  5. 【Codeforces576E_CF576E】Painting Edges(可撤销并查集+线段树分治)

    题目 CF576E 分析: 从前天早上肝到明天早上qwq其实颓了一上午MC ,自己瞎yy然后1A,写篇博客庆祝一下. 首先做这题之前推荐一道很相似的题:[BZOJ4025]二分图(可撤销并查集+线段树 ...

  6. Spring Cloud (7) 服务容错保护-Hystrix服务降级

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以互相调用,在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务通常会集群 ...

  7. iOS - UITableView 多选功能实现

    :自定义Cell中的代码 #import <UIKit/UIKit.h> @interface TestCell : UITableViewCell @property(nonatomic ...

  8. xampp中localhost与DreamWaver站点设置问题

    作为一个初学者,在DreamWaver中配置web服务器用于本地测试,中间碰到了好多问题,百度答案模糊不清,自己摸索出来,把自己碰到的,易错的地方做个总结. step1 : 安装xampp(安装位置记 ...

  9. drupal 8——在CKEditor中导入video media时添加caption会导致video缩小至消失

    在CKEditor中,我点击media browser,选择video型的media,并在caption中输入video的名字.当我保存后发现在前台页面的video消失了,只留下video的名字,点击 ...

  10. Android 6.0一个完整的native service

     上一篇博客<Android 6.0 如何添加完整的系统服务(app-framework-kernel)>http://www.cnblogs.com/hackfun/p/7418902. ...