18、linux文件属性


文件的描述信息;

[root@centos6 /]# ls -lih

总用量 118K

3538945 drwxr-xr-x 3 root root 4.0K 8月 23 17:12 app

3276818 -rw-r--r-- 1 root root 22 8月 27 16:47 a.txt

18.1、linux文件属性详解:

linux文件属性共有10列;

18.1.1、第1列:

inode索引节点编号,先读inode编号(类似于人的身份证,全国唯一);

磁盘被分区并格式化为ext4/ext4文件系统会生成一定数量的inode和block,不同硬盘分区是独立的所以可能会有相同的inode标记;

一个文件被创建只有唯一的inode和至少一个block且只属于当前的文件(文件名———>inode————>block;

18.1.1.1、inode介绍:

inode为索引节点,表现形式是一串数字,它的作用是存放文件的属性信息以及作为文件的索引,指向文件实体,是唯一的;

inode是一块存储空间,默认是256Byte;

一个文件只占用一个inode

inode相同的文件互为硬链接文件,可以认为是一个文件不同的访问入口;

18.1.1.2、block

ext3\ext4文件系统的block存放的是文件的实际内容,block的大小是1kB,2KB、4kB(常用),其中引导分区的block占1kB,

如果一个文件很大,可能占多个block,如果文件很小,至少占一个,并且剩余的空间浪费了,且不能存放其它的数据了。

block数量大于inode数量;

磁盘读取数据是按block读取的,每读取一次block就会消耗一次io;

block应该尽量大,但时太大时,对于小文件存放就会太浪费磁盘空间;

根据业务需求设置block的大小,大文件设置大一点,小文件设置小一点;

block太大:例如4k,文件都是0.1k,大量浪费磁盘空间,但是访问性能高;

block太小:列如 1k,文件都是100k,会消耗大量的磁盘io;

企业里文件都会比较大(一半都会大于4k),block设置大一些会提升磁盘的访问效率;

ext4/ext3文件系统(CentOS5 CentOS6)都是4k;

18.1.1.3、企业面试题:

磁盘性能会很高;

可以写入1M文件的的数量为100000/4/1024/4=97,磁盘的io性能会很低;

18.1.1.4、企业中出现什么情况会出现inode用完:

比一个block空间小的文件特别多(一个文件只有一个inode,最少一个block(只属于该文件),所以block比inode多);

磁盘空间是否满了,是有两项决定的,由inode和block满了,任何一项满了,都不能存放文件;

查看硬盘的使用量:df -h

查看inode的使用量:df -i

查看挂载磁盘的inode和block的大小和总量(dumpe2fs:查看文件系统的元数据)

dumpe2fs /dev/sda2 | egrep -i "block count| inode count"

dumpe2fs /dev/sda2 | egrep -i "block size|inode size"

如何查看inode字符串

stat /etc/hosts

ls -i

18.1.2、第2列:

文件的类型以及权限,共11个字符,第1个字符是文件类型,后9个字符是文件的权限,最后一个“.”和selinux有关(selinux开启时,创建的文件带'.')

linux中一切皆文件

d:表示一个目录:

tree -Ld 1 / (d:只显示目录)

-:表示一个普通的文件:

纯文本文件

文件内容可以直接读到数据,列入:字母,数字,可以用cat直接读取文件,配置文件

二进制文件:

linux中的命令程序文件;

数据格式文件:

/var/log/wtmp

查看文件属于哪一种普通文件:

file + 文件名

last:查看当前用户的登录信息,对应的是/var/log/wtmp数据文件

lastlog:查看所有用户最近的登录信息,对应的是/var/log/lastlog 文件

18.1.2.1、文件后面跟的后缀:

.tar未压缩,.tar.gz、.tgz、.zip、.tar.bz表示压缩的包

.sh表示shell脚本文件,

.pl表示pl语言

.py表示python语言

.html\.htm\.php\.jsp\.do表示网页语言文件

.conf表示系统配置文件

.rpm表示rpm安装包文件

18.1.2.2、文件的权限:

rwx r-xr-x:

(12位权限,3个是特殊权限)前三位属主权限,中间三位属组权限,最后面三位其他用户权限 ,r:读 4、w:写 2,x:执行 1,-:没有权限 0

18.1.2.3、用户和组:

用户:用户UID (0-65535),相当于我们的身份证一样,唯一,用户名就是我们的名字

18.1.2.4、linux用户分类:

超级用户:root用户,uid和guid均为0;

普通用户:只能操作自己家目录中的文件,其余文件只能查看

18.1.2.5、普通用户提权

su - root

sudo ls

18.1.2.6、虚拟用户:

安装系统后默认就存在,且默认情况不能登录系统,主要目的是满足方便管理,满足相应的系统进程对文件属主的要求;

18.1.2.7、/etc/passwd 用户配置文件:

:x表示在密码在 /etc/shadow 中保护起来

18.1.2.8、etc/shadow文件每一行的格式如下:

1.帐号名称:由于密码也需要与帐号对应啊~因此, 这个档案的第一栏就是帐号,必须要与 /etc/passwd 相同才行!

2. 密码:这个才是真正的密码,而且是 经过编码过的密码啦! 你只会看到有一些特殊符号的字母就是了!需要特别留意的是, 虽然这些加密过的密码很难被解出来,但是‘很难’不等于‘不会’,所以,

这个档案的预设属性是‘-rw-------’或者是‘-r--------’,亦即只有 root 才可以读写就是了!你得随时注意,不要不小心更动了这个档案的属性呢!另外, 如果是在密码栏的第一个字元为‘ * ’

或者是‘ ! ’,表示这个帐号并不会被用来登入的意思。 所以万一哪一天你的某个使用者不乖时,可以先在这个档案中,将他的密码栏位的最前面多加一个* !嘿嘿!他就无法使用该帐号啰!直到他变乖了,

再给他启用啊!

3. 最近更动密码的日期:这个栏位记录了‘更动密码的那一天’的日期, 不过,很奇怪呀!在我的例子中怎么会是 12959 呢?呵呵,这个是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 ,

而 1971 年 1 月 1 日则为 366 啦! 所以这个日期是累加的呢!得注意一下这个资料呦!那么最近的 2005 年 1 月 1 日就是 12784 啦,瞭解了吗?

4. 密码不可被更动的天数: 第四个栏位记录了这个帐号的密码需要经过几天才可以被变更!如果是 0 的话, 表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!

如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码呦!

5. 密码需要重新变更的天数: 由于害怕密码被某些‘有心人士’窃取而危害到整个系统的安全,所以有了这个栏位的设计。 你必须要在这个时间之内重新设定你的密码,否则这个帐号将会暂时失效。

而如果像上面的 99999 的话,那就表示,呵呵,密码不需要重新输入啦! 不过,如果是为了安全性,最好可以设定一段时间之后,严格要求使用者变更密码呢!

6. 密码需要变更期限前的警告期限:当帐号的密码失效期限快要到的时候, 就是上面那个‘必须变更密码’的那个时间时, 系统会依据这个栏位的设定,发出‘警告’言论给这个帐号,提醒他‘再过

n 天你的密码就要失效了,请尽快重新设定你的密码呦!’,如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。

7. 密码过期的恕限时间:如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在‘必须变更密码的期限前,并没有变更你的密码!’ 那么该组密码就称为‘失效的密码’啰~怎么办?

没关系,还有这个栏位的天数设计啊~ 意思就是说,当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,呵呵!那么您的帐号就失效了!无法登入!

8. 帐号失效日期:这个日期跟第三个栏位一样,都是使用 1970 年以来的总日数设定。这个栏位表示: 这个帐号在此栏位规定的日期之后,将无法再使用。 这个栏位会被使用通常应该是在‘收费服务’

的系统中, 你可以规定一个日期让该帐号不能再使用啦!

9. 保留:最后一个栏位是保留的,看以后有没有新功能加入。

例如: llc1:$6$1XHri1/k$TpA9UlNNjm0zvBoVlt6tgLH8POk62cIvJnW25i/l2Ka/ODQS4TQjf26rHfq8A9y1TOxmzzynWJg30zBp2Oc/H.:17787:0:99999:7:::

18.1.2.9、组:

组:组GID(0-65535),相当于人的家庭,或者是学校唯一

组GID整数范围和用户UID整数范围类似;

/etc/group:组文件

lc:x:500:

lc:组名

x:组密码文件/etc/gshadow

500:组的GID

:加入组的用户,(显示该组的非主组用户)

etc/gshadow 格式如下,每个用户组独占一行;

groupname:password:admin,admin,...:member,member,...

1) 组名: 是用户组的名称,由字母或数字构成。

2) 口令:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码

3) 组管理者:这个字段也可为空,如果有多个用户组管理者,用,号分割

4) 组内用户列表:如果有多个成员,用,号分割(显示该组的非主组用户) ;

18.1.2.10、小结:

创建用户后就会给该用户被分配唯一个uid,和gid,默认uid和组id相同(500以后开始),组名称就是用户的名称;

一个文件只能有唯一一个属主,但可有多个属组;

创建用户的时候也可以不创建组(单独创建组,GID也是从500以后开始);

l:表示一个软链接文件,指向另一个文件

b:表示块设备(磁盘,光驱设备)和其它外围设备,是特殊类型的文件

c:表示字符设备文件

s:表示socket文件

p:表示管道文件

18.1.3、第3列:

硬链接的数量,有备份的作用(类似于超市里多个门);

在linux系统中,链接可以分为两种,一种是硬链接,另一种是软链接;

18.1.3.1、硬链接(只限文件之间):

ln 源文件,目标文件

[root@centos6 ~]# ln b c

[root@centos6 ~]# ls -li

总用量 56

3276813 -rw-r--r-- 2 root root 5 8月 28 17:10 b

3276813 -rw-r--r-- 2 root root 5 8月 28 17:10 c

类型前面没有符号标记

相同的inode节点号的多个文件(就是同一个文件,block相同),不可以跨越分区系统;

删除硬链接文件或者删除源文件任意之一,文件实体并未被删除

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

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

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

硬链接是普通文件,可以用rm进行删除

对于静态文件(没有进程调用的时候),当对应硬链接数为0,文件就被删除了

文件删除的原理

在linux系统中,删除静态文件(即没有进程调用)条件是与之相关的所有的硬链接文件均被删除;

i_link:硬链接数量,i_count:正在访问的进程

正在访问文件删除的时候,空间不会被释放,需要重启服务才能释放空间(如果要删除正在访问的文件最好是清空该问价,>)

yum install httpd -y:安装httpd协议

service httpd start :启动httpd服务

ps -ef |grep "httpd":进程

netstat -lntup |grep "httpd":查看端口号

lsof i:80:查看端口号

lsof |grep del :查看删除的文件

du -sh \*:查看根目录下所有文件的大小

18.1.3.2、软链接(只限目录和目录,文件和文件之间的链接):

ln -s 源文件,目标文件

软链接就是为目标文件创建了一个快捷方式,和源文件对应不同的inode,是不同的文件,可以跨越分区系统;

文件的类型前面是'l'

可以通过readlink 查看软连接

删除软链接文件,源文件依然存在;删除源文件,软链接文件依然存在,但是会有白字红底的闪烁提示

软链接可以看做是一个文件,删除时要按照文件的删除方式进行(如果是目录的链接时,如果按照目录的删除方式进行删除会导致源目录内容删除);

软链接文件类型为‘l’,可以使用rm进行删除

企业中使用软链接迁数据,速度快

18.1.3.3、目录问题:

目录可以挂接到不同的硬盘和分区

每个目录下面都有一个硬链接“.”号,和对应上级目录的硬链接“..”

在父目录里创建一个子目录,父目录的链接数增加1(子目录理由)

软链接是一个文件

[root@centos6 b]# ls -lid /a

2228226 drwxr-xr-x 3 root root 4096 8月 28 20:12 /a

[root@centos6 b]# ls -lid /a /a/. /a/b/..

2228226 drwxr-xr-x 3 root root 4096 8月 28 20:12 /a

2228226 drwxr-xr-x 3 root root 4096 8月 28 20:12 /a/.

2228226 drwxr-xr-x 3 root root 4096 8月 28 20:12 /a/b/..

18.1.4、第4列:文件或目录的所有者(属主)

18.1.5、第5列:文件或目录所属的组(属组)

18.1.6、第6列:文件的大小

18.1.7、第7,8, 9列:文件或目录的修改时间,默认是月日时分

modify:修改文件内容

change time:修改文件属性的时间

access time:文件访问的时间

--time-style=long-iso:显示文件的长格式

[root@centos6 ~]# ls -lih --time-style=long-iso

3276809 -rw-------. 1 root root 1.2K 2018-08-10 05:35 anaconda-ks.cfg

18.1.8、第10列:文件名,不算文件的属性

文件名,在block中,文件,上级目录之中;

猜你喜欢

转载自www.cnblogs.com/LiuChang-blog/p/12313509.html