二Linux文件属性及文件权限Word文件下载.docx
- 文档编号:701948
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:28
- 大小:331.47KB
二Linux文件属性及文件权限Word文件下载.docx
《二Linux文件属性及文件权限Word文件下载.docx》由会员分享,可在线阅读,更多相关《二Linux文件属性及文件权限Word文件下载.docx(28页珍藏版)》请在冰点文库上搜索。
第七,八,九列:
表示文件最后修改的时间
索引节点inode
1:
inode简介
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"
扇区"
(Sector)。
每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"
块"
(block)。
这种由多个扇区组成的"
,是文件存取的最小单位。
"
的大小,最常见的是4KB,即连续八个sector组成一个block。
文件数据都储存在"
中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。
这种储存文件元信息的区域就叫做inode,中文译名为"
索引节点"
。
2:
inode的内容
inode包含文件的元信息,具体来说有以下内容:
*文件的字节数
*文件拥有者的UserID
*文件的GroupID
*文件的读、写、执行权限
*文件的时间戳,共有三个:
ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
*链接数,即有多少文件名指向这个inode
*文件数据block的位置
可以用stat命令,查看某个文件的inode信息:
[root@ginday1]#statgroup
File:
`group'
Size:
656Blocks:
8IOBlock:
4096regularfile
Device:
803h/2051dInode:
24826Links:
1
Access:
(0644/-rw-r--r--)Uid:
(0/root)Gid:
(0/root)
2016-10-0210:
20:
27.860993546+0800
Modify:
Change:
总之,除了文件名以外的所有文件信息,都存在inode之中。
至于为什么没有文件名,下文会有详细解释。
3:
inode的大小
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。
一个是数据区,存放文件数据;
另一个是inode区(inodetable),存放inode所包含的信息。
一个文件被创建后至少要占用一个inode和一个block。
如果一个文件很大,可能占多个block(4k);
如果文件很小,也要至少占一个block,并且剩余空间不可以使用!
每个inode节点的大小,一般是128字节或256字节。
inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。
假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inodetable的大小就会达到128MB,占整块硬盘的12.8%。
查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。
[root@ginday1]#df-i
FilesystemInodesIUsedIFreeIUse%Mountedon
/dev/sda34795525403442551812%/
tmpfs12858411285831%/dev/shm
/dev/sda15120038511621%/boot
查看每个inode节点的大小,可以用如下命令:
[root@ginday1]#dumpe2fs-h/dev/sda1|grep"
Inodesize"
dumpe2fs1.41.12(17-May-2010)
Inodesize:
128
由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。
这时,就无法在硬盘上创建新文件。
4:
inode号码
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。
对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
表面上,用户通过文件名,打开文件。
实际上,系统内部这个过程分成三步:
首先,系统找到这个文件名对应的inode号码;
其次,通过inode号码,获取inode信息;
最后,根据inode信息,找到文件数据所在的block,读出数据。
使用ls-i命令,可以看到文件名对应的inode号码:
[root@ginday1]#ls-igroup
24826group
5:
目录文件
Unix/Linux系统中,目录(directory)也是一种文件。
打开目录,实际上就是打开目录文件。
目录文件的结构非常简单,就是一系列目录项(dirent)的列表。
每个目录项,由两部分组成:
所包含文件的文件名,以及该文件名对应的inode号码。
ls命令只列出目录文件中的所有文件名,ls-i命令列出整个目录文件,即文件名和inode号码!
6:
硬链接
一般情况下,文件名和inode号码是"
一一对应"
关系,每个inode号码对应一个文件名。
但是,Unix/Linux系统,允许多个文件名指向同一个inode号码。
这意味着,可以用不同的文件名访问同样的内容;
对文件内容进行修改,会影响到所有文件名;
但是,删除一个文件名,不影响另一个文件名的访问。
这种情况就被称为"
硬链接"
(hardlink)。
ln命令可以创建硬链接:
[root@localhost/]#ln源文件目标文件
运行上面这条命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。
inode信息中有一项叫做"
链接数"
,记录指向该inode的文件名总数,这时就会增加1。
反过来,删除一个文件名,就会使得inode节点中的"
减1。
当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。
这里顺便说一下目录文件的"
创建目录时,默认会生成两个目录项:
."
和"
.."
前者的inode号码就是当前目录的inode号码,等同于当前目录的"
;
后者的inode号码就是当前目录的父目录的inode号码,等同于父目录的"
所以,任何一个目录的"
总数,总是等于2加上它的子目录总数(含隐藏目录),这里的2是父目录对其的“硬链接”和当前目录下的"
.硬链接“。
7:
软链接
除了硬链接以外,还有一种特殊情况。
文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。
读取文件A时,系统会自动将访问者导向文件B。
因此,无论打开哪一个文件,最终读取的都是文件B。
这时,文件A就称为文件B的"
软链接"
(softlink)或者"
符号链接(symboliclink)。
这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:
Nosuchfileordirectory"
这是软链接与硬链接最大的不同:
文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"
不会因此发生变化。
ln-s命令可以创建软链接。
[root@localhost/]#ln-s源文文件或目录目标文件或目录
8:
inode的特殊作用
由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。
1.有时,文件名包含特殊字符,无法正常删除。
这时,直接删除inode节点,就能起到删除文件的作用。
2.移动文件或重命名文件,只是改变文件名,不影响inode号码。
3.打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。
因此,通常来说,系统无法从inode号码得知文件名。
第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。
因为系统通过inode号码,识别运行中的文件,不通过文件名。
更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。
等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。
9:
实际问题
在一台配置较低的Linux服务器(内存、硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df-h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间,按理说不会出现这种问题。
后来用df-i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。
查找原因:
1):
可能是/data/cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。
2):
企业工作中邮件临时队列/var/spool/clientmquene这里很容易被大量小文件占满导致Nospaceleftondevice错误。
clientmquene目录只有安装了sendmail服务,才会有。
CentOS5系列的系统会默认安装sendmail服务,因此邮件临时存放地点的路径是:
/var/spool/clientmqueue/。
CentOS6默认情况下没有安装sendmail服务,而是改装了postfix服务,因此邮件存放地点的路径为/var/spool/postfix/maildrop/。
3):
以上目录很空间垃圾文件占满导致inode数量不够用!
解决方案:
1.删除/data/cache目录中的部分文件,释放出/data分区的一部分inode。
2.用软连接将空闲分区/opt中的newcache目录连接到/data/cache,使用/opt分区的inode来缓解/data分区inode不足的问题:
[root@localhost/]#ln-s/opt/newcache/data/cache
手动清理方法如下:
[root@ginday1]#find/var/spool/clientmqueue/-typef|xargsrm-f
[root@ginday1]#find/var/spool/postfix/maildrop/-typef|xargsrm-f
block相关知识
1):
磁盘读取数据是按block为单位读取的
一个文件可能占用多个block。
每读取一个block就会消耗一次磁盘I/O
如果要提升磁盘IO属性,那么就要尽可能一次性读取数据尽量的多。
4):
一个block只能存放一个文件的内容,无论内容有多小。
如果block4k,存放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的设置也是格式化分区的时候,mfs.ext4-b2018-I256/dev/sdb
10):
文件较大时,block设置大一些会提升磁盘访问效率
11):
ext3/ext4文件一般设置为4K
当前的生产环境一般设置为4K。
特殊业务,如视频文件可加大block大小
Linux的文件类型与扩展名
linux的文件类型分为:
bblock(buffered)special
ccharacter(unbuffered)special
ddirectory
pnamedpipe(FIFO)
fregularfile
lsymboliclink;
thisisnevertrueifthe-Loptionorthe-follow
optionisineffect,unlessthesymboliclinkisbroken.Ifyouwant
tosearchforsymboliclinkswhen-Lisineffect,use-xtype.
ssocket
Ddoor(Solaris)
普通文件(regularfile)
[root@localhost~]#ls-lhinstall.log
-rw-r--r--1rootroot53K03-1608:
54install.log
普通文件包含纯文本文件,二进制文件,数据格式文件;
具体是什么类型的普通文件,可通过file命令查看:
[root@ginday1]#file/var/log/wtmp
/var/log/wtmp:
data
目录
[root@localhost~]#ls-lh
总计14M
-rw-r--r--1rootroot203-2702:
00fonts.scale
-rw-r--r--1rootroot14M03-1607:
53kernel-6.15-1.2025_FC5.i686.rpm
drwxr-xr-x21000users4.0K04-0423:
30mkuml-2004.07.17
drwxr-xr-x2rootroot4.0K04-1910:
53mydir
drwxr-xr-x2rootroot4.0K03-1704:
25Public
当我们在某个目录下执行,看到有类似drwxr-xr-x,这样的文件就是目录,目录在Linux是一个比较特殊的文件。
注意它的第一个字符是d。
创建目录的命令可以用mkdir命令,或cp命令,cp可以把一个目录复制为另一个目录。
删除用rm或rmdir命令。
3字符设备或块设备文件
如时您进入/dev目录,列一下文件,会看到类似如下的;
[root@localhost~]#ls-la/dev/tty
crw-rw-rw-1roottty5,004-1908:
29/dev/tty
[root@localhost~]#ls-la/dev/hda1
brw-r-----1rootdisk3,12006-04-19/dev/hda1
我们看到/dev/tty的属性是crw-rw-rw-,注意前面第一个字符是c,这表示字符设备文件。
比如猫等串口设备
我们看到/dev/hda1的属性是brw-r-----,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备;
这个种类的文件,是用mknode来创建,用rm来删除。
目前在最新的Linux发行版本中,我们一般不用自己来创建设备文件。
因为这些文件是和内核相关联的。
4套接口文件
当我们启动MySQL服务器时,会产生一个mysql.sock的文件。
[root@localhost~]#ls-lh/var/lib/mysql/mysql.sock
srwxrwxrwx1mysqlmysql004-1911:
12/var/lib/mysql/mysql.sock
注意这个文件的属性的第一个字符是s。
我们了解一下就行了。
5符号链接文件
[root@localhost~]#ls-lhsetup.log
lrwxrwxrwx1rootroot1104-1911:
18setup.log->
install.log
当我们查看文件属性时,会看到有类似lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。
是通过ln-s源文件名新文件名。
上面是一个例子,表示setup.log是install.log的软链接文件。
怎么理解呢?
这和Windows操作系统中的快捷方式有点相似。
符号链接文件的创建方法举例;
[root@localhost~]#ls-lhkernel-6.15-1.2025_FC5.i686.rpm
[root@localhost~]#ln-skernel-6.15-1.2025_FC5.i686.rpmkernel.rpm
[root@localhost~]#ls-lhkernel*
lrwxrwxrwx1rootroot3304-1911:
27kernel.rpm->
kernel-6.15-1.2025_FC5.i686.rpm
硬链接与软链接
硬链接知识小结
具有相同的inode节点的多个文件是互为硬链接文件
删除硬链接文件或删除源文件任意之一,文件实体并不受影响
只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除
当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间或者磁盘fsck检查的时候,删除的数据也会被系统回收
硬链接文件就是文件的另一个入口(相当于超市的前门后门)
可以通过给文件设置硬链接文件,来防止重要文件被误删除
通过执行命令“ln源文件硬链接文件”,可完成创建硬链接
硬链接文件可以用rm命令删除
对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link),文件就被删除。
i_link的查看方法:
ls-l
软链接知识小结
软链接原理图:
1)软件链接类似windows的快捷方式(可以通过readlink查看其指向)
2)软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体
3)删除源文件,软链接依然存在,但是无法访问指向的源文件路径内容
4)失效的时候一般是白字红底闪烁提示
5)执行命令“ln-s源文件软链接文件”,即可完成创建软链接
6)软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同
7)删除软链接文件可以用rm命令。
文件删除原理:
linux的文件名是存在父目录的block里面,并指向这个文件的inode节点,这个文件的inode节点再标记指向存放这个文件的block数据块。
我们删除一个文件,实际上并不清除inode节点和block的数据。
只是在这个文件的父目录里面的block中,删除这个文件的名字,从而使这个文件名消失,并且无法指向这个文件的inode节点,当没有文件名指向这个inode节点的时候,会同时释放inode节点和存放这个文件的数据块,并更新inodemap和blockmap。
今后让这些位置可以用于放置其他文件数据。
文件删除控制的变量:
i_link文件的硬链接数量;
i_count引用计数(有一个程序使用i_count加1)
文件删除的条件:
i_link=0并且i_count=0
用户与用户组
用户是能够获取系统资源的权限的集合.
linux用户组的分类:
a.管理员root:
具有使用系统所有权限的用户,其UID为0.
b.普通用户:
即一般用户,其使用系统的权限受限,其UID为500-60000之间.
c.虚拟用户:
保障系统运行的用户,一般不提供密码登录系统,其UID为1-499之间.在/etc/passwd文件中都是以/sbin/nologin结尾的账户
与用户有关的文件
/etc/passwd,/etc/shadow
a./etc/passwd文件:
其格式:
account:
password:
UID:
GID:
GECOS:
diretory:
shell
account:
用户名或帐号
password:
用户密码占位符
UID:
用户的ID号
GID:
用户所在组的ID号
GECOS:
用户的详细信息(如姓名,年龄,电话等)
diretory:
用户所的家目录
shell:
用户所在的编程环境
b./etc/shadow
最近更改密码的日期:
密码不可更该的天数:
密码需要重新更改的天数:
密码更改前的警告期限:
密码过期的宽限时间:
帐号失效日期:
保留
用户组
用户组分类;
a.普通用户组:
可以加入多个用户
b.系统组:
一般加入一些系统用户
c.私有组(也称基本组):
当创建用户时,如果没有为其指明所属组,则就为其定义一个私有的用户组,起名称与用户名同名.
注:
私有组可以变成普通用户组,当把其他用户加入到该组中,则其就变成了普通组
组是权限的容器:
如普通用户a,b,c所属组grp,则它们会继承组grp的权限
与组有关的文件:
/etc/group,/etc/gshadow
/etc/group文件:
其格式:
group_name:
passwoerd:
user_list
group_name:
组名
passwoerd:
组密码
GID:
组的ID号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 文件属性 文件 权限