二Linux文件属性及文件权限.docx

上传人:b****2 文档编号:518286 上传时间:2023-04-29 格式:DOCX 页数:28 大小:331.47KB
下载 相关 举报
二Linux文件属性及文件权限.docx_第1页
第1页 / 共28页
二Linux文件属性及文件权限.docx_第2页
第2页 / 共28页
二Linux文件属性及文件权限.docx_第3页
第3页 / 共28页
二Linux文件属性及文件权限.docx_第4页
第4页 / 共28页
二Linux文件属性及文件权限.docx_第5页
第5页 / 共28页
二Linux文件属性及文件权限.docx_第6页
第6页 / 共28页
二Linux文件属性及文件权限.docx_第7页
第7页 / 共28页
二Linux文件属性及文件权限.docx_第8页
第8页 / 共28页
二Linux文件属性及文件权限.docx_第9页
第9页 / 共28页
二Linux文件属性及文件权限.docx_第10页
第10页 / 共28页
二Linux文件属性及文件权限.docx_第11页
第11页 / 共28页
二Linux文件属性及文件权限.docx_第12页
第12页 / 共28页
二Linux文件属性及文件权限.docx_第13页
第13页 / 共28页
二Linux文件属性及文件权限.docx_第14页
第14页 / 共28页
二Linux文件属性及文件权限.docx_第15页
第15页 / 共28页
二Linux文件属性及文件权限.docx_第16页
第16页 / 共28页
二Linux文件属性及文件权限.docx_第17页
第17页 / 共28页
二Linux文件属性及文件权限.docx_第18页
第18页 / 共28页
二Linux文件属性及文件权限.docx_第19页
第19页 / 共28页
二Linux文件属性及文件权限.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

二Linux文件属性及文件权限.docx

《二Linux文件属性及文件权限.docx》由会员分享,可在线阅读,更多相关《二Linux文件属性及文件权限.docx(28页珍藏版)》请在冰点文库上搜索。

二Linux文件属性及文件权限.docx

二Linux文件属性及文件权限

一:

文件属性

[root@ginday1]#ll-hi

total16K

24826-rw-r--r--1rootroot656Oct210:

20group

24827----------1rootroot534Oct210:

20gshadow

24482-rw-r--r--1rootroot1.3KOct210:

20passwd

24825----------1rootroot1.1KOct210:

20shadow

文件属性简介

第一列:

inode(indexnode)索引节点编号:

它是文件或目录,在磁盘里的唯一标识,linux读取文件首先要读取到这个索引节点。

相当于书的目录。

第二列:

//第一个字符表示文件类型

d:

表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。

-:

表示这是一个普通的文件。

l:

表示这是一个符号链接文件,实际上它指向另一个文件。

b、c:

分别表示区块设备和其他的外围设备,是特殊类型的文件。

s、p:

这些文件关系到系统的数据结构和管道,通常很少见到。

//从第二个字符到最后共9(第2-10个字符)个字符,三个字符为一段:

rw-r--r--

//第11个字符:

.与selinux相关,有这个点表示selinux开启,没有这个点表示selinux关闭

第三列:

1表示文件的硬链接数。

硬链接是文件的第又一个入口!

第四列:

root文件对应的属主或者用户

第五列:

root文件对应的用户组或属组

第六列:

文件大小

第七,八,九列:

表示文件最后修改的时间

索引节点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)

Access:

2016-10-0210:

20:

27.860993546+0800

Modify:

2016-10-0210:

20:

27.860993546+0800

Change:

2016-10-0210:

20:

27.860993546+0800

总之,除了文件名以外的所有文件信息,都存在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为单位读取的

2):

一个文件可能占用多个block。

每读取一个block就会消耗一次磁盘I/O

3):

如果要提升磁盘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)

1:

普通文件(regularfile)

[root@localhost~]#ls-lhinstall.log

-rw-r--r--1rootroot53K03-1608:

54install.log

普通文件包含纯文本文件,二进制文件,数据格式文件;具体是什么类型的普通文件,可通过file命令查看:

[root@ginday1]#file/var/log/wtmp

/var/log/wtmp:

data

2:

目录

[root@localhost~]#ls-lh

总计14M

-rw-r--r--1rootroot203-2702:

00fonts.scale

-rw-r--r--1rootroot53K03-1608:

54install.log

-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

-rw-r--r--1rootroot14M03-1607:

53kernel-6.15-1.2025_FC5.i686.rpm

[root@localhost~]#ln-skernel-6.15-1.2025_FC5.i686.rpmkernel.rpm

[root@localhost~]#ls-lhkernel*

-rw-r--r--1rootroot14M03-1607:

53kernel-6.15-1.2025_FC5.i686.rpm

lrwxrwxrwx1rootroot3304-1911:

27kernel.rpm->kernel-6.15-1.2025_FC5.i686.rpm

硬链接与软链接

硬链接知识小结

1:

具有相同的inode节点的多个文件是互为硬链接文件

2:

删除硬链接文件或删除源文件任意之一,文件实体并不受影响

3:

只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除

4:

当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间或者磁盘fsck检查的时候,删除的数据也会被系统回收

5:

硬链接文件就是文件的另一个入口(相当于超市的前门后门)

6:

可以通过给文件设置硬链接文件,来防止重要文件被误删除

7:

通过执行命令“ln源文件硬链接文件”,可完成创建硬链接

8:

硬链接文件可以用rm命令删除

9:

对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为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

其格式:

account:

password:

最近更改密码的日期:

密码不可更该的天数:

密码需要重新更改的天数:

密码更改前的警告期限:

密码过期的宽限时间:

帐号失效日期:

保留

用户组

用户组分类;

a.普通用户组:

可以加入多个用户

b.系统组:

一般加入一些系统用户

c.私有组(也称基本组):

当创建用户时,如果没有为其指明所属组,则就为其定义一个私有的用户组,起名称与用户名同名.

注:

私有组可以变成普通用户组,当把其他用户加入到该组中,则其就变成了普通组

组是权限的容器:

如普通用户a,b,c所属组grp,则它们会继承组grp的权限

与组有关的文件:

/etc/group,/etc/gshadow

/etc/group文件:

其格式:

group_name:

passwoerd:

GID:

user_list

group_name:

组名

passwoerd:

组密码

GID:

组的ID号

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2