Linux基础系列(三)Linux系统文件和目录重要知识


详细解释图:

wKioL1XMF7vCs4BkAAK4-iYae6c642.jpg

第一列

Inode详解

第二列

文件类型及权限

第三列

硬链接数

第四五列

属主及所归属得组

第六列

文件或目录的大小

第七八九列

最近修改时间

第十列

文件或目录名字

 

inode详解

block是用来存储实际数据

inode用来存储文件属性

inode不包含文件名

文件在上一级目录的block

block小结

  • 磁盘读取数据是按Block为单位读取的。

  • 一个文件可能占用多个Block。每读取一个Block就会消耗一次磁盘I/O

  • 如果要提升磁盘I/O性能,那么就要尽可能一次性读取数据尽量的多。

  • 一个Block只能存放一个文件内容,无论内容有多小。如果Block4K,那存放1k的文件,剩余3k就浪费了。

  • Block并非越大越好。Block太大对于小文件存放就会浪费磁盘空间,例如:1000k的文件,Block4K,占用250BlockBlock1k,占1000Block。访问效率谁更高?消耗IO分别为250次和1000次。

  • 大文件(大于16k)一般设置Block大一点,小文件(小于1k)一般设置Block小一点。

  • Block太大例如4k,文件都是0.1k,大量浪费磁盘空间。

  • Block太大例如1k,文件都是1000k,消耗磁盘IO

  • Block的设置也是格式化分区时候,mkfs.ext4-b 2048 -l 256 /dev/sdb

  • 文件较大时,Block设置大一些会提升磁盘访问效率。

  • ext3/ext4文件一般设置为4k

当前的生成环境一般设置为4k特殊的业务,如视频可以加大Block大小。

inode小结

  • 磁盘分区格式化为ext4文件系统后会生成一定的数量的inodeblock

  • inode是索引节点,作用是存放文件的属性信息以及作为文件的索引(指向文件的实体。)

  • ext3/ext4文件系统的block存放的是文件的实际内容。

  • inode是一块磁盘存储空间,c6非启动分区inode默认大小256字节,c5128字节。

  • inode是一串数字,不同的文件对应的inode(一串数字)在文件系统里是唯一的。

  • inode相同的文件,互为硬链接文件。

  • 一个文件被创建后至少要占用一个inode和一个block

  • 如果一个文件很大,可能占多个block(4k)

  • 如果文件很小,也要至少占一个block,并且剩余空间不可以使用了

  • inode大小和总量查看

  • 查看inode的总量和使用量命令df –i

  • 如何生成及指定inode大小mkfs.ext4-b 2048 -l 256 /dev/sdb1

文件的类型

格式

说明

-

普通文件,(纯文本,二进制文件,数据文件)

d(directory)

目录

l (link)

符号链接或者软链接文件(快捷方式,它指向文件的实体)

c(character)

串口设备,

b(block)

硬盘,光驱

s(sock)

sock进程之间通信会用

p

管道文件

文件的权限

Linux中的文件或目录的权限和用户及用户组关联很大,Linux中每个文件或目录都有一组共9个基础权限位,每三个字符被分为一组,他们分别是属主权限位(占三个字符)、属组权限位(占三个字符)、其他用户权限位(占三个字符)。比如rwxr-xr-x linux中正是这9个权限位来控制文件属主、属组、其他用户的权限。

权限图:

wKioL1XMF__jipEWAAEoLeKjCkI205.jpg

权限字母

数字表示

r 代表读权限

4

w 代表写权限

2

x 代表执行权限

1

- 代表没有权限

0

 

文件权限

可读:

具有读取\阅读文件内容的权限。

可写:

表示具有新增、修改文件内容的权限(注意:删除和移动文件和文件本身属性无关)

可执行:

表示具有执行文件的权限。(普通用户同事还需要r的权限,root用户不用r,但要本身能执行才行。)

 (删除文件,修改文件名等) 的权限是受父目录的权限控制,必须查看上一级目录的权限,因为文件存在上级目录的block里面,上级目录的inode就包含了权限

  • 本身要能够执行

  • 普通用户同时还需要具备r的权限才能

  • root都可执行

目录权限

可读:

表示具有浏览目录下面文件及子目录的权限,ls dir  (不能进到目录里,即无法 cd dir )

如果没有x权限,ls列表时可以看到所有文件名。但是会提示无权方式目录下的文件,如果ls -l列表,所有的属性会带有问号,也会提示无权访问目录下文件,但是可以看到所有文件名。

可写:

表示具有增加、删除或者修改目录内文件名的权限 (需要x权限配合)

可执行:

表示具有进入目录的权限:例如 cddir   但是没有r无法获取列表,没有w无法新建和删除

文件与目录权限对比

读取权限:

对文件而言:表示具有读取\阅读文件内容的权限。

对目录而言:具有浏览目录下面文件及子目录的权限,ls dir  (不能进到目录里,即无法 cd dir )

如果没有x权限,ls列表时可以看到所有文件名。但是会提示无权方式目录下的文件,如果ls -l列表,所有的属性会带有问号,也会提示无权访问目录下文件,但是可以看到所有文件名。

写入权限:

对于文件而言:表示具有新增、修改文件内容的权限(注意:删除和移动文件和文件本身属性无关)

对于目录而言:表示具有增加、删除或者修改目录内文件名的权限 (需要x权限配合)

执行权限:

对于文件而言:表示具有执行文件的权限。(普通用户同事还需要r的权限,root用户不用r,但要本身能执行才行。)

对于目录而言:表示具有进入目录的权限:例如cd dir但是没有r无法获取列表,没有w无法新建和删除。

umask默认权限

文件权限一般算法:

1)假设umask值为:022(所有位为偶数)

6 66     ==>文件的起始权限值

0 22 -    ==>umask的值

---------

6 44

2)假设umask值为:045(其他用户组位为奇数)

6 66     ==>文件的起始权限值

0 4 5-    ==>umask的值

---------

6 2 1   ==>计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1

0 0 1 +

---------

622 ==>真实文件权限

默认目录权限计算方法

 7 77     ==>目录的起始权限值

 0 2 2 -    ==>umask的值

---------

 7 5 5

案例一

umask所有位全为偶数时

[root@studentxuliangwei]# umask 044
[root@studentxuliangwei]# umask
0044
[root@studentxuliangwei]# mkdir d044
[root@studentxuliangwei]# touch f044
[root@studentxuliangwei]# ls -l
drwx-wx-wx2 root root 4096 7月  21 23:40 d044
-rw--w--w-1 root root    0 7月  21 23:40 f044

案例二

umask值的部分或全部位为奇数时
[root@studentxuliangwei]# umask 023
[root@studentxuliangwei]# umask
0023
[root@studentxuliangwei]# mkdir d023
[root@studentxuliangwei]# touch f023
[root@studentxuliangwei]# ls -l
drwxr-xr--2 root root 4096 7月  21 23:44 d023
-rw-r--r--1 root root    0 7月  21 23:44 f023

案例三

umask值的所有位为奇数时

[root@studentxuliangwei]# umask 035
[root@studentxuliangwei]# umask
0035
[root@studentxuliangwei]# mkdir d035
[root@studentxuliangwei]# touch f035
[root@studentxuliangwei]# ls -l
drwxr---w-2 root root 4096 7月  21 23:48 d035
-rw-r---w-1 root root    0 7月  21 23:48 f035

suid特殊权限

  • 用户或属主对应的前三位权限的x位上如果有s就表示suid权限。

  • x位上没有小写x执行权限的时候,suid的权限显示就是大S

  • suid作用是让普通用户可以root(或其他)的用户角色运行,只有root(或其他)账号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。

问题:希望xuliangwei用户能够删除本来无权删除的文件

a.    sudoxuliangwei授权rm  b.rm命令设置suid  c.设置上级目录权限。

  • suid修改的是执行的命令passwd,而不是处理的目标文件/etc/shadow

  • 仅对二进制命令程序有效,不能用在shell等类似脚本文件上(具体权限还需要看二进制命令本身)

  • 二进制命令程序需要有可执行权限x配合。

  • suid权限仅在程序命令执行过程中有效。

  • 执行suid命令的任意系统用户都可以获得该命令程序在执行期间对应的拥有者

  • suid双刃剑,是一个比较危险的功能,对系统安全有一定的威胁。

如何查找系统中设置了suid的命令

[root@student~]# find /usr/bin/ -type f -perm 4755 | xargs ls -l
-rwsr-xr-x.1 root root 66352 10月 15 2014 /usr/bin/chage
-rwsr-xr-x.1 root root 51784 11月 23 2013 /usr/bin/crontab
-rwsr-xr-x.1 root root 71480 10月 15 2014 /usr/bin/gpasswd
-rwsr-xr-x.1 root root 36144 10月 15 2014 /usr/bin/newgrp
-rwsr-xr-x.1 root root 30768 2月  22 2012 /usr/bin/passwd
-rwsr-xr-x.1 root root 22544 10月 15 2014 /usr/bin/pkexec

sgid特殊权限

sgid知识总结介绍:

  • suid不同的是,sgid既可以针对文件也可以针对目录设置

  • sgid是针对用户组权限位修改的。

对于文件来说,sgid的功能如下:

  • sgid仅对二进制命令程序有效。

  • 二进制命令或程序需要有可执行权限x

  • 执行程序的任意用户可以获得该命令程序执行期间所属组的权限。

特殊权限小结

suid 4000 权限字符s(S),用户位置上的x位上设置。

授权方法:

chmod 4755xuliangwei.txt   
chmod  u+s test

 

sgid 2000 权限字符s(S),用户组位的x位置上设置。

授权方法:

chmod 2744xuliangwei.txt
chmod  g+s  xuliangwei.txt

 

粘滞位 1000 权限字符t(T),其他用户位的x位上设置。

设置方法:

chmod 1755 /tmp
chmod  o+t /tmp

如果对应位有x(执行权限),字符权限表现为小写,否则表现为大写


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章