文件类型
Linux中万物皆文件,即可以将Linux中任何东西都是文件,配置文件几乎都是纯文本文件(ASCII,内容可以直接读取);可执行文件都是二进制(binary)文件,如命令文件等;还有一种是具有特定格式的文件,数据格式文件(data)。
文件属性
[root@lill ~]# ll -i
总用量 48
24615 -rw-------. 1 root root 1116 1月 23 10:18 anaconda-ks.cfg
13 -rw-r--r--. 1 root root 23755 1月 23 10:18 install.log
14 -rw-r--r--. 1 root root 6240 1月 23 10:17 install.log.syslog
139313 drwxr-xr-x. 3 root root 4096 4月 17 16:25 lill
130689 drwxr-xr-x. 3 root root 4096 3月 8 14:03 opt
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩
① 节点号inode
② 文件类型及权限
③ 硬链接数
④ 所属用户
⑤ 所属组
⑥ 文件大小(Byte)
⑦⑧⑨ 最近更新时间
⑩ 文件名
①inode
- 磁盘分区格式化系统后,分为inode和block两部分,inode相当于一本书的目录,相当于书中的内容,inode存放文件的属性以及指向文件实体的文件,但是文件名不在inode中,在上级目录的block中。
- 访问文件,文件——>inode——>此文件的block。
- inode一般默认为256B,block大小为1k、2k、4k,设置block过造成空间浪费,设置block过小会消耗磁盘IO,block设置要根据实际情况下一般文件大小来设定block大小,如果是大文件业务,block尽量大一些,如果是小文件业务,block尽量小一些,ext3/ext4文件最大为4k,而工作中一般没有小于4k的文件,所以一般默认block为4k(引导分区和特殊分区除外)。
- 通过df -i 可以查看inode是数量及使用情况,dumpe2fs/dev/sda3 查看inode及block的大小及数量,另外 df -h可以查看磁盘的使用量。
- 一个文件至少有一个inode和一个block,多个文件可以使用一个inode(硬链接),一个block只能被一个文件使用。
- 可以在格式化的时候改变inode及block的大小,mksf -b 4096 -I 1024 磁盘名。
②文件详细类型及权限
共中10个字符,第1位字符为文件详细类型,后面9位的为对应权限。
文件详细类型
通过file [文件名] 可查看文件的类型信息,下面是Linux中的一些文件详细类型。
-type c
File is of type c:
b block (buffered) special #块设备,存储数据供系统及程序访问的接口设备,如硬盘
c character (unbuffered) special #字符设备,串行端口的接口设备,如猫
d directory #目录
p named pipe (FIFO) #管道文件,解决多个程序访问一个文件所造成的错误
f regular file #普通文件-
l symbolic link #符号链接文件
s socket #套接口
D door (Solaris) #door
文件权限
Linux文件权限位由9位权限位来控制,每三位一组,分别是文件属主的读、写、执行,用户组的读、写、执行,其他用户的读、写、执行。(读r、写w、执行x、无权限-),注意删除文件或者修改一个文件名要看这个文件的上级目录是否具有这个权限,而不是看当前文件的权限(root除外)。一般情况下,默认创建文件的权限位644,创建目录的权限位755.
再讲几个命令:
chmod 改变用户访问权限
- -R 递归
chown 改变文件拥有者以及用户组 chown [选项][所有者]:[所属组] 文件
chmod [数字组合] 文件名
r:4 w:2 x:1 -:0
例:chmod -R 755 abc.txt 即是 -rwxr-xr-x 1 root root 153 5月 2 16:56 abc.txt
chmod [用户类型] [操作符] [权限字符] 文件名
用户类型u(user) g(group) o(other) a(all)
操作符 +(加) -(减) =(设置)
权限字符r w x
例:源状态 -rwxr-xr-x 1 root root 153 5月 2 16:56 abc.txt
执行命令 chmod u-w,g-r,o-x abc.txt
现状态 -r-x–xr– 1 root root 153 5月 2 16:56 abc.txt- -R 递归
chown zhangsan test 将test的属主改为zhangsan用户
chown :zs test 将test的所属组改为zs
chown zhangsan:zs test 将test的属主改为zs组中zhangsan用户,所属组改为zs组
其中”:”可以被”.”替代
chgrp 改变文件用户组- chgrp [组名] 文件
umask 设置创建文件、目录的默认权限- umask 0022(一般默认的文件的权限位644,目录的权限位755.)
Linux文件与目录权限对比说明:
\ | 文件 | 目录 |
---|---|---|
r | 具有读取文件内容的权限 | 具有浏览目录的权限(与进入目录权限不同,需要x权限配合,没有x权限的话快看不到目录内文件的详细属性,会显示一堆问号) |
w | 具有新增、修改文件内容的权限(移动、删除文件与文件本身无关,在于上级目录的权限) | 具有新增、移动、删除目录内文件的权限 |
x | 具有执行文件的权限(普通用户同时需要r权限,root不需要,当然文件本身需要被执行,如.sh文件) | 具有进入目录的权限 |
③链接
Linux中链接分为两种,硬链接和软连接(符号链接),ln命令不带参数情况下,创建的是硬链接,使用ln -s 创建的为软链接。reaedlink [链接文件] 可以查看链接的vlaue.
硬链接
创建的硬链接文件与源文件有相同的inode,删除硬链接文件或者源文件之一,只有还有一个inode,文件的实体就不会被删除,只有删除了源文件和所有的硬链接文件,文件实体才会被删除,当所有的硬链接文件及源文件被删除后,在存放的新的数据会重新占用这个文件的空间,或者磁盘fask检查时,数据也会被回收。注意:只有超级用户才有创建硬链接的权限,只有在同一文件系统中才可以创建硬链接,硬链接不可以指向目录。
[root@lill ~]# echo "hello world">> abc.txt
[root@lill ~]# ln abc.txt abcln
[root@lill ~]# ll -i
总用量 56
20813 -rw-r--r-- 2 root root 12 4月 28 11:34 abcln
20813 -rw-r--r-- 2 root root 12 4月 28 11:34 abc.txt
24615 -rw-------. 1 root root 1116 1月 23 10:18 anaconda-ks.cfg
13 -rw-r--r--. 1 root root 23755 1月 23 10:18 install.log
14 -rw-r--r--. 1 root root 6240 1月 23 10:17 install.log.syslog
139313 drwxr-xr-x. 3 root root 4096 4月 17 16:25 lill
130689 drwxr-xr-x. 3 root root 4096 3月 8 14:03 opt
[root@lill ~]# cat abcln
hello world
[root@lill ~]# rm -f abc.txt
[root@lill ~]# ll -i
总用量 52
20813 -rw-r--r-- 2 root root 12 4月 28 11:34 abcln
24615 -rw-------. 1 root root 1116 1月 23 10:18 anaconda-ks.cfg
13 -rw-r--r--. 1 root root 23755 1月 23 10:18 install.log
14 -rw-r--r--. 1 root root 6240 1月 23 10:17 install.log.syslog
139313 drwxr-xr-x. 3 root root 4096 4月 17 16:25 lill
130689 drwxr-xr-x. 3 root root 4096 3月 8 14:03 opt
[root@lill ~]# cat abcln
hello world
[root@lill ~]# rm -f abcln
[root@lill ~]# ll -i
总用量 48
24615 -rw-------. 1 root root 1116 1月 23 10:18 anaconda-ks.cfg
13 -rw-r--r--. 1 root root 23755 1月 23 10:18 install.log
14 -rw-r--r--. 1 root root 6240 1月 23 10:17 install.log.syslog
139313 drwxr-xr-x. 3 root root 4096 4月 17 16:25 lill
130689 drwxr-xr-x. 3 root root 4096 3月 8 14:03 opt
[root@lill ~]# ln lill/ lill_ln
ln: "lill/": 不允许将硬链接指向目录
软链接
软链接也称作符号链接,相当于window中的快捷方式,linux中的软链接文件实际就是一个文本文件,指向源文件,当源文件删除时,这个软链接也就失效。
[root@lill ~]# echo "hello boy" >> abc.txt
[root@lill ~]# ln -s abc.txt abcln-s
[root@lill ~]# ll -i
总用量 52
24645 lrwxrwxrwx 1 root root 7 4月 28 13:47 abcln-s -> abc.txt
20813 -rw-r--r-- 1 root root 10 4月 28 13:46 abc.txt
24615 -rw-------. 1 root root 1116 1月 23 10:18 anaconda-ks.cfg
13 -rw-r--r--. 1 root root 23755 1月 23 10:18 install.log
14 -rw-r--r--. 1 root root 6240 1月 23 10:17 install.log.syslog
139313 drwxr-xr-x. 3 root root 4096 4月 17 16:25 lill
130689 drwxr-xr-x. 3 root root 4096 3月 8 14:03 opt
[root@lill ~]# cat abcln-s
hello boy
[root@lill ~]# rm -f abc.txt
[root@lill ~]# cat abcln-s
cat: abcln-s: 没有那个文件或目录
[root@lill ~]# ll -i
总用量 48
24645 lrwxrwxrwx 1 root root 7 4月 28 13:47 abcln-s -> abc.txt #这里会与有强调,表明无效
24615 -rw-------. 1 root root 1116 1月 23 10:18 anaconda-ks.cfg
13 -rw-r--r--. 1 root root 23755 1月 23 10:18 install.log
14 -rw-r--r--. 1 root root 6240 1月 23 10:17 install.log.syslog
139313 drwxr-xr-x. 3 root root 4096 4月 17 16:25 lill
130689 drwxr-xr-x. 3 root root 4096 3月 8 14:03 opt