Linux文件和目录的属性及权限
Linux文件和目录的属性及权限讲解






文字解释:
第一列:inode索引节点
第二列:文件类型及权限
第三列:硬链接个数
第四列:文件或目录所属的用户(属主)
第五列:文件或目录所属的用户所归属的组(用户组)
第六列:文件或目录的大小
第七、八、九列:文件或目录的最近修改时间
第十列:实际的文件名或目录名(文件名称存放在上级目录的block中)
ls -l 显示的时间是修改时间。
[root@oldboy ~]# ls -l --time-style=long-iso
total 9104
-rw-------. 1 root root 1056 2016-07-05 21:13 anaconda-ks.cfg
drwxr-xr-x. 8 root root 4096 2016-07-18 17:57 data
-rw-r--r--. 1 root root 9264484 2015-04-15 01:40 etc.tar.gz
-rw-r--r--. 1 root root 21682 2016-07-05 21:13 install.log
-rw-r--r--. 1 root root 5890 2016-07-05 21:12 install.log.syslog
文件的时间说明:
Access: 2016-07-21 15:33:01.698142377 +0800 <==访问时间 find -atime
Modify: 2016-07-19 09:35:42.432295596 +0800 <==修改时间,内容发生变化 find -mtime
Change: 2016-07-19 09:35:42.452302559 +0800 <==变化时间,包含Modify权限、属主、用户组 find -ctime
stat命令查看时间等的属性


Linux在硬盘格式化分区、创建文件系统时,主要创建了两部分:
第一部分是inode索引节点(很多个):
用来存放文件的属性(文件类型、修改时间、权限等),文件的属性不包括文件名。
inode存放的还包含指向文件实体的指针的功能(inode节点--block的对应关系)等。
第二部分是Block数据块(很多个):
用来存放数据和内容(照片、视频、文档等)
我们读取一个文件的内容时需要通过inode节点指向这个文件的block里,然后通过指向才能从block中读取数据和内容,因为数据和内容都是存放在block里的。
每个文件或目录的inode大小(存放属性的大小):5.8是128 6.4是256
Linux有关block的知识:
1)磁盘读取数据是按block为单位读取的。
2)一个文件可能占用多个block。每读取一个block就会消耗一次磁盘I/O。
3)如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多。
4)一个block只能存放一个文件的内容,无论内容有多小。如果block 4K,那存放1K的文件,剩余3K就浪费了。
5)block并非越大越好。block太大对于小文件存放就会浪费磁盘空间。
例如:1000K的文件,block为4K,占用250个block;block为1K,占用1000个block。访问效率谁更高?消耗IO分别为250次和1000次。
6)大文件(大于16K)一般设置block大一点;小文件(小于1K)一般设置block小一点。
7)block太大例如4K,文件都是0.1K的,大量浪费磁盘空间。
8)block太小例如1K,文件都是1000K的,消耗磁盘IO。
9)block的设置也是格式化分区时候 mkfs.ext4 -b 2048 -I 256 /dev/sdb(工作中不要改)
10)文件较大时,block设置大一些会提升磁盘访问效率。
11)ext3/ext4文件一般设置为4K。
文件原理图:




inode原理图:

学会给阶段性的知识做小结是学好Linux的好习惯
有关inode知识的小结:
1)磁盘分区格式化为ext4文件系统后会生成一定数量的inode和block。
2)inode是索引节点,作用是存放文件的属性信息以及作为文件的索引(指向文件的实体block)。
3)ext3/ext4文件系统的block存放的是文件的实际内容。
4)block的大小一般有1k,2k,4k几种。其中引导分区等为1k,其它普通分区为4k(C6)。
[root@oldboy ~]# dumpe2fs /dev/sda1|grep -i "block size" <==/boot分区1024(1K)
dumpe2fs 1.41.12 (17-May-2010)
Block size: 1024
[root@oldboy ~]# dumpe2fs /dev/sda3|grep -i "block size" <== / 根分区4096(4K)
dumpe2fs 1.41.12 (17-May-2010)
Block size: 4096
5)inode是一块磁盘存储空间,C6非启动分区inode默认大小256字节,C5是128字节。
6)inode是一串数字,不同的文件对应的inode(一串数字)在文件系统里是唯一的。
7)inode号相同的文件,互为硬链接文件(文件的又一个入口)。
8)一个文件被创建后至少要占用一个inode和一个block。可以理解为一个文件诞生需要一个inode和一个block,就算是空文件,系统也会分配给它inode和block。
9)如果一个文件很大,可能占多个block(4K)。
10)如果文件很小,也要至少占一个block,并且剩余空间 不可以使用了(浪费了)。
11)inode大小和总量查看
[root@oldboy ~]# dumpe2fs /dev/sda3|egrep -i "block size|Inode size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 4096
Inode size: 256
[root@oldboy ~]# dumpe2fs /dev/sda3|egrep -i "block count|Inode count"
dumpe2fs 1.41.12 (17-May-2010)
Inode count: 479552
Block count: 1914624
Reserved block count: 95731
12)查看inode的总量和使用量命令df -i
13)如何生成及指定inode大小 mkfs.ext4 -b 2048 -I 256 /dev/sdb(工作中没必要改)。
#以上的C6和C5分别代表CentOS6和CentOS5





特别提示:目录不能创建硬链接,只有文件才能创建硬链接。














文件类型小结:
1)- regular file 普通文件 *****(5星重点)
普通文件细分又包含:ASCII text纯文本、executable二进制文件、data数据文件。
[root@oldboy ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@oldboy ~]# file /bin/cp
/bin/cp: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
[root@oldboy ~]# file /var/log/wtmp
/var/log/wtmp: data
[root@oldboy ~]# ls -l /var/log/wtmp /etc/hosts /bin/cp
-rwxr-xr-x. 1 root root 122872 10月 15 2014 /bin/cp
-rw-r--r--. 2 root root 180 7月 19 2016 /etc/hosts
-rw-rw-r--. 1 root utmp 6144 4月 19 07:49 /var/log/wtmp
2)d directory 目录 *****(5星重点)
3)l link 符号链接或者软连接文件 ***(3星重点)
相当于windows的快捷方式,它指向文件的实体。
4)字符文件,块设备文件
c character 串口设备、猫
b block 硬盘、光驱 **(2星重点)
5).sock进程之间通信会用到。
s socket
6)管道文件
p named pipe (FIFO)



























访问文件原理图:

想要访问/tmp/oldboyfile首先从“/”根目录开始,通过“/”根目录的inode找到对应的block。其中根的block内又存放有子文件和子目录的文件名(包括/tmp)。通过访问/tmp的inode信息,然后在由inode指向对应的block,从而找到oldboyfile文件的名字。找到oldboyfile后,通过它的inode信息判断,如果权限允许则指向对应block。




对于文件:
[root@oldboy test]# umask 032
[root@oldboy test]# umask
0032
[root@oldboy test]# touch 032.log
[root@oldboy test]# ls -l 032.log
-rw-r--r--. 1 root root 0 7月 26 18:14 032.log #为什么权限是644?
[root@oldboy test]# umask 051
[root@oldboy test]# umask
0051
[root@oldboy test]# touch 051.log
[root@oldboy test]# ls -l 051.log
-rw--w-rw-. 1 root root 0 7月 26 18:18 051.log #为什么权限是626?
=========================================
对于目录:
[root@oldboy test]# umask
0051
[root@oldboy test]# mkdir d051
[root@oldboy test]# ls -ld d051/
drwx-w-rw-. 2 root root 4096 7月 26 18:26 d051/
小结:
文件默认权限就是666 - umask得到的值,目录默认权限就是777 - umask得到的值。但是对于文件,umask值的每一位上如果有奇数,相减完后,奇数的那一位还要在加上1。
如下所示:
f 666-umask
6 6 6
0 2 2 -
---------
6 4 4
6 6 6
0 3 2 -
1 +
---------
6 4 4
6 6 6
0 5 1 -
1 1 +
---------
6 2 6
生产案例:
网站站的服务用户为oldboy
防止木马入侵:
文件和目录给什么权限,安全临界点:
d(目录) 755 root root
f(文件) 644 root root
所以umask默认控制的权限是比较安全的值
特别提示:在一般生产环境当中,umask的使用不多见,在此,大家了解一下umask是怎么回事即可。
Linux文件和目录的属性及权限的更多相关文章
- Linux文件和目录的属性及权限总结
本文讲述的是文件或目录的属性及权限,比如索引节点inode.文件类型.文件权限及属主:还对setuid.setgid及粘贴位进行了相关的讲解.其中,对ln.chmod.chown.chgrp.umas ...
- Linux 文件和目录的属性及权限
一.Linux中的文件 1.1文件属性概述 Linux里一切皆文件! Linux系统中的文件或目录的属性主要包括;索引节点(inode).文件类型.权限属性.链接数.所归属的用户组.最近修改时间等内容 ...
- Linux系统文件和目录的属性及权限
1 文件属性概述 Linux系统中的文件或目录的属性主要包括:索引节点(inode).文件类型.权限属性.硬链接数.所归属的用户和用户组.最近修改时间等内容(文件名严格来说不属于文件的属性): 下面是 ...
- (转)Linux 文件和目录的属性
linux 文件属性与权限 原文:https://www.cnblogs.com/kzloser/articles/2673790.html https://www.cnblogs.com/danh/ ...
- Linux文件和目录权限实战讲解
一 相关课程回顾1.1 linux文件类型当执行ls -l或ls -la 命令后显示的结果中最前面的第2~10个字符是用来表示文件权限 第一个字符一般用来区分文件和目录: d:表示是一个目录,事实上在 ...
- Linux文件和目录权限详细讲解
转载请标明出处: http://www.cnblogs.com/why168888/p/5965180.html 本文出自:[Edwin博客园] Linux文件和目录权限解读 如何设置Linxu文件和 ...
- Linux学习之十四-Linux文件和目录权限
Linux文件和目录权限 在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问:允 ...
- Linux文件和目录的777、755、644权限解释
Linux文件和目录的权限 1.文件权限 在linux系统中,文件或目录的权限可以分为3种: r:4 读 w:2 写 x:1 执行(运行)-:对应数值0 数字 4 .2 和 1表示读.写.执行权限 ...
- Linux 文件和目录的权限设置 - umask(默认权限),chmod(改变权限)
1. chmod 改变已有目录或文件的权限 chmod 设置已有目录或文件的权限.可以为指定范围的用户添加或删除权限. 权限范围的表示法如下: u:User,即文件或目录的拥有者: g:Group,即 ...
随机推荐
- P1080 MOOC期终成绩
1080 MOOC期终成绩 (25分) 对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分 ...
- 如何创建一个SpringBoot多模块项目
创建主模块rail-plate-line 1.点击Create New Project --> 选择Spring Initializr -- > 选择本地jdk 2.Group为com ...
- 020、MySQL创建一个存储过程,显示存储过程,调用存储过程,删除存储过程
一.我们创建一个MySQL储存过程,在SQL代码区写入以下内容,并执行就可以了 #编写一个存储过程 CREATE PROCEDURE ShowDate ( ) BEGIN #输出当前时间 SELECT ...
- eclipse、idea中自动生成元模型JPA元模型对象
一.eclipse 1.首先准备好两个jar包hibernate-jpa-2.0-api-1.0.1.Final和hibernate-jpamodelgen-4.3.5.Final 2.选中项目右击 ...
- Most simple basic of internet programming based on two different machines sharing the same local net
This blog is just shown for the most simple basic of internet programming based on two different mac ...
- Python中基于Unpacking与Packing进行分割,组合操作的嵌套元组数据结构的应用
对于二叉树,图等,Python可采用基于Packing与Unpacking形成的嵌套元组数据结构来模拟,这里Packing指,比如a=b,c则,a就成了一个包含b,c的元组,Unpacking是指,比 ...
- c#实现"扫描检测硬件改动"
public static class Win32Api { public const int CM_LOCATE_DEVNODE_NORMAL = 0x00000000; public const ...
- 关于spring-mvc.xml的静态资源的配置
转 配置如下: <!-- 配置静态资源 --><mvc:resources location="/static/" mapping="/static/* ...
- MSVCRTD.LIB和LIBCMTD.LIB冲突(转载)
以前经常遇到这个警告信息,因为运行并没有什么问题,所以也没深究.但是耿耿于怀那个“ 0 个错误,0 个警告”的成功提示,在网上搜了一下.原来问题出在默认库的引用选择上. VS2008,项目——属性—— ...
- bzoj 1962: 模型王子
呵呵呵呵http://wenku.baidu.com/link?url=o0CPVzuBDLJMt0_7Qph1T7TtdFOzu7O-apIpvaWbIYMz8ZWqBneGqI8LGtLdqpuK ...