Linux文件属性

概述

Linux中文件名不是文件属性
在Linux中扩展名与文件类型无关,仅用于标识文件,供系统管理员识别

Linux系统中常见的扩展名

*.txt 文本文件
*.log 日志文件
*.conf/*.cfg 配置文件
*.sh/*.bash 脚本文件

1.inode

inode与block

inode号码:inode号码:相当于文件在系统中的身份证号;
在同一分区中,每个文件的inode号码是唯一的;具有相同inode号的文件互为硬链接

使用df -i查看系统inode使用情况;
使用ls -i命令查看文件inode号码;
inode空间:存放文件属性信息(大小、所有者、权限、文件类型、硬链接数以及修改时间)和Block的位置;系统默认Inode空间256字节
block空间:一般用于存放文件的实体(内容)和文件名字;系统默认Block空间是4k;
一个block只能供一个文件使用,但一个文件可以拥有多个block
使用df -h查看系统block使用情况

Linux下面每创建一个非空文件需要占用1个inode和至少1个block
不同分区下,文件的inode号码可能一致

[root@aspen ~]# df -h | head -2 && df -h |tail -2 | head -1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        18G  1.9G   16G  11% /
/dev/sda1      1014M  127M  888M  13% /boot
[root@aspen ~]# ll -id / /boot
64 dr-xr-xr-x. 19 root root  253 May 10 21:07 /
64 dr-xr-xr-x.  5 root root 4096 Mar 20 09:36 /boot

2.文件类型

- 普通文件

二进制文件(命令)
文本文件(text)
数据文件(data)

d 目录
l 软链接/符号链接(相当于Windows的快捷方式)

用于存放原文件的位置,使用ln -s命令创建软链接(建议使用绝对路径)

b 块设备(如光盘、硬盘等)
c 字符设备 (不断向外发出或接收字符)
p 管道文件

[root@aspen ~]# ll -id /bin /sbin /etc/redhat-release 
   41945 lrwxrwxrwx. 1 root root  7 Mar 20 09:32 /bin -> usr/bin
16837171 lrwxrwxrwx. 1 root root 14 Mar 20 09:32 /etc/redhat-release -> centos-release
   41950 lrwxrwxrwx. 1 root root  8 Mar 20 09:32 /sbin -> usr/sbin
[root@aspen ~]# ll -ih /dev/urandom /dev/null /dev/sda /dev/sr0 /backup/10.0.0.200/bak-2019-05-13-1.tar.gz /bin/ls /root/*.txt
  688890 -rw-r--r--  1 root root   9.8M May 13 21:58 /backup/10.0.0.200/bak-2019-05-13-1.tar.gz
50359267 -rwxr-xr-x. 1 root root   115K Oct 31  2018 /bin/ls
    6477 crw-rw-rw-  1 root root   1, 3 May 13 14:14 /dev/null
   17999 brw-rw----  1 root disk   8, 0 May 13 14:14 /dev/sda
   17747 brw-rw----  1 root cdrom 11, 0 May 13 14:14 /dev/sr0
    6482 crw-rw-rw-  1 root root   1, 9 May 13 14:14 /dev/urandom
33593157 -rw-r--r--  1 root root     21 May 13 22:01 /root/num.txt
33593153 -rw-r--r--  1 root root     75 May 13 19:06 /root/password.txt

查看文件具体类型可使用file命令

[root@aspen ~]# ls -ihl /root/num.txt /backup/10.0.0.200/bak-2019-05-13-1.tar.gz /bin/ls
  688890 -rw-r--r--  1 root root 9.8M May 13 21:58 /backup/10.0.0.200/bak-2019-05-13-1.tar.gz
50359267 -rwxr-xr-x. 1 root root 115K Oct 31  2018 /bin/ls
33593157 -rw-r--r--  1 root root   21 May 13 22:01 /root/num.txt
[root@aspen ~]# file /bin/ls /root/num.txt /backup/10.0.0.200/bak-2019-05-13-1.tar.gz 
/bin/ls:                                    ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped
/root/num.txt:                              ASCII text
/backup/10.0.0.200/bak-2019-05-13-1.tar.gz: gzip compressed data, from Unix, last modified: Mon May 13 21:58:54 2019
[root@aspen ~]# 

3.文件权限

普通权限

权限 权值 文件 目录
r 4 查看文件内容 查看目录下文件名
w 2 修改文件内(需配合r权限使用) 在目录下创建、删除或重命名文件;需要配合x权限
x 1 执行文件、命令或脚本(需要配合r权限使用) 进入目录,并查看目录下文件属性信息
Linux目录系统默认权限:755
Linux文件系统默认权限:644
文件名不是文件属性,保存在文件所在目录的block中;因此重命名文件需要对该目录具有写权限;删除文件时,不仅要删除目录名还要删除文件的inode空间,所以删除文件要获取文件所在目录的wx权限
[aspen@aspen aspen]$ ll /aspen/
ls: cannot access /aspen/aspen01.txt: Permission denied
ls: cannot access /aspen/aspen02.txt: Permission denied
ls: cannot access /aspen/aspen03.txt: Permission denied
ls: cannot access /aspen/aspen04.txt: Permission denied
ls: cannot access /aspen/aspen05.txt: Permission denied
total 0
-????????? ? ? ? ?            ? aspen01.txt
-????????? ? ? ? ?            ? aspen02.txt
-????????? ? ? ? ?            ? aspen03.txt
-????????? ? ? ? ?            ? aspen04.txt
-????????? ? ? ? ?            ? aspen05.txt
[aspen@aspen aspen]$ ll -d /aspen/
dr-xr-xr-x 2 aspen aspen 101 May 14 19:52 /aspen/
[aspen@aspen aspen]$ ll /aspen/
total 0
-rw-r--r-- 1 root root 0 May 14 19:52 aspen01.txt
-rw-r--r-- 1 root root 0 May 14 19:52 aspen02.txt
-rw-r--r-- 1 root root 0 May 14 19:52 aspen03.txt
-rw-r--r-- 1 root root 0 May 14 19:52 aspen04.txt
-rw-r--r-- 1 root root 0 May 14 19:52 aspen05.txt
[aspen@aspen /]$ ll -d /aspen/
d-w-r-xr-x 2 aspen aspen 105 May 14 20:08 /aspen/
[aspen@aspen /]$ touch /aspen/1.txt
touch: cannot touch ‘/aspen/1.txt’: Permission denied
[aspen@aspen /]$ ll -d /aspen/
d-wxr-xr-x 2 aspen aspen 105 May 14 20:08 /aspen/
[aspen@aspen /]$ touch /aspen/1.txt
[aspen@aspen /]$ rm -f /aspen/1.txt
[aspen@aspen /]$ cd /aspen/
[root@aspen aspen]# ls
aspen01.txt.bak  aspen02.txt  aspen03.txt  aspen04.txt  aspen05.txt
[aspen@aspen aspen]$ mv aspen01.txt.bak aspen01.txt
[root@aspen aspen]# ls
aspen01.txt  aspen02.txt  aspen03.txt  aspen04.txt  aspen05.txt

特殊权限

  • s
set uid(在文件的属主权限执行位设置s权限) 用户执行文件时,相当于文件的属主用户执行文件
set gid(在文件的属组权限执行位设置s权限)用户执行文件时,相当于文件的属组用户执行文件

当文件不具备执行权限,但具备s权限时;则权限位显示为S

  • t (粘滞位权限)
每个人都可以在目录下创建文件,但仅能管理自己所有的文件;一般用于文件的其它人权限的执行位
[root@aspen ~]# ll -d /bin/passwd /tmp/
-rwsr-xr-x.  1 root root 27832 Jun 10  2014 /bin/passwd
drwxrwxrwt. 10 root root  4096 May 14 16:12 /tmp/
[aspen@aspen ~]$ cd /tmp/
[aspen@aspen tmp]$ touch aspen.txt
[aspen@aspen tmp]$ su - stu01
Password: 
Last login: Mon May 13 21:39:02 CST 2019 on pts/1
[stu01@aspen ~]$ cd /tmp/
[stu01@aspen tmp]$ rm -f aspen.txt 
rm: cannot remove ‘aspen.txt’: Operation not permitted
[stu01@aspen tmp]$ logout
[aspen@aspen tmp]$ ls aspen.txt 
aspen.txt
[aspen@aspen tmp]$ rm -f aspen.txt 
[root@aspen ~]# stat /bin/passwd /tmp/
  File: ‘/bin/passwd’
  Size: 27832       Blocks: 56         IO Block: 4096   regular file
Device: 803h/2051d  Inode: 51007483    Links: 1
Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-05-13 18:51:53.119044667 +0800
Modify: 2014-06-10 14:27:56.000000000 +0800
Change: 2019-03-20 09:33:23.095005928 +0800
 Birth: -
  File: ‘/tmp/’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 803h/2051d  Inode: 16777288    Links: 10
Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-05-14 16:12:14.737538727 +0800
Modify: 2019-05-14 16:12:45.930539501 +0800
Change: 2019-05-14 16:12:45.930539501 +0800
 Birth: -
普通权限和特殊权限可使用chmod命令为文件赋权,ls -l命令查看文件权限

隐藏权限

  • a 只能追加文件内容
  • i 只能查看文件内容(无敌权限)
[root@aspen ~]# ll power.txt 
-rw-r--r-- 1 root root 30 May 14 16:26 power.txt
[root@aspen ~]# cat ./power.txt 
01 02 03 04 05 06 07 08 09 10
[root@aspen ~]# chattr +a power.txt 
[root@aspen ~]# ll power.txt 
-rw-r--r-- 1 root root 30 May 14 16:26 power.txt
[root@aspen ~]# > power.txt 
-bash: power.txt: Operation not permitted
[root@aspen ~]# lsattr power.txt 
-----a---------- power.txt
[root@aspen ~]# echo {a..z}>> power.txt 
[root@aspen ~]# cat power.txt 
01 02 03 04 05 06 07 08 09 10
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@aspen ~]# lsattr power.txt 
----i----------- power.txt
[root@aspen ~]# cat power.txt 
01 02 03 04 05 06 07 08 09 10
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@aspen ~]# echo {A..Z} >> power.txt 
-bash: power.txt: Permission denied
[root@aspen ~]# echo {A..Z} > power.txt 
-bash: power.txt: Permission denied
[root@aspen ~]# rm -f power.txt 
rm: cannot remove ‘power.txt’: Operation not permitted
[root@aspen ~]# ll ./power.txt 
-rw-r--r-- 1 root root 82 May 14 16:28 ./power.txt

4.硬链接

硬链接:相当于文件的入口;在同一个磁盘分区中,inode号码相同的文件之间互为硬链接;使用ln命令为文件创建硬链接;
软链接/符号链接:相当于Windows的快捷方式;存放的是原文件的位置;使用ln -s为文件创建软链接;

软硬链接的区别

创建
ln命令,默认不带参数的情况下创建的是硬链接;使用-s参数时创建软链接

含义
硬链接:同一磁盘分区中inode节点号码相同的文件
软链接:相当于Windows的快捷方式,软链接的inode号码与源文件不同,用于存放源文件的位置

特点
不能对目录创建硬链接,但可以创建软链接;(对目录创建软链接经常被用到)
软链接可以跨文件系统创建,但硬链接不可以跨文件系统创建

与源文件的关系
删除软链接文件,对源文件及硬链接文件无任何影响
删除文件的硬链接文件,对源文件及软链接文件无任何影响
删除链接文件的源文件,硬链接文件无影响,会导致其软链接失效(红底白字闪烁)
删除源文件及其硬链接文件,整个文件才会被“真正”删除
[root@aspen rename-test]# echo {A..Z} >abc.txt
[root@aspen rename-test]# ln -s abc.txt abc.txt.sl 
[root@aspen rename-test]# ln  abc.txt abc.txt.hl 
[root@aspen rename-test]# ll -i
total 8
51386518 -rw-r--r-- 2 root root 52 May 14 17:28 abc.txt
51386518 -rw-r--r-- 2 root root 52 May 14 17:28 abc.txt.hl
51386519 lrwxrwxrwx 1 root root  7 May 14 17:28 abc.txt.sl -> abc.txt
[root@aspen rename-test]# rm -f ./abc.txt
[root@aspen rename-test]# ll -i
total 4
51386518 -rw-r--r-- 1 root root 52 May 14 17:28 abc.txt.hl
51386519 lrwxrwxrwx 1 root root  7 May 14 17:28 abc.txt.sl -> abc.txt
[root@aspen rename-test]# cat ./abc.txt.hl 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
[root@aspen rename-test]# cat ./abc.txt.sl 
cat: ./abc.txt.sl: No such file or directory

5.文件属主(u)

超级用户 root

UID == 0 默认对系统所有文件具有读和写权限

普通用户

UID>=1000(Cent OS 7)
UID>=500 (Cent OS 6)

傀儡用户

虚拟用户(傀儡用户):无法直接使用、登录系统的用户
UID 1-999(Cent OS 7)
UID 1-499(Cent OS 6)

傀儡用户的存在,是为了满足每个进程在运行的时候需要一个用户和用户组的系统需求;

6.文件属组(g)

GID:系统用户组ID
改变用户属主和属主的命令为chown

[root@aspen ~]# touch aspen.txt
[root@aspen ~]# ls -ihl aspen.txt 
33596738 -rw-r--r-- 1 root root 0 May 14 19:28 aspen.txt
[root@aspen ~]# chown aspen aspen.txt 
[root@aspen ~]# ls -ihl aspen.txt 
33596738 -rw-r--r-- 1 aspen root 0 May 14 19:28 aspen.txt
[root@aspen ~]# chown stu01.stu01 aspen.txt 
[root@aspen ~]# ls -ihl aspen.txt 
33596738 -rw-r--r-- 1 stu01 stu01 0 May 14 19:28 aspen.txt
既不是文件属主,也不是文件属组的用户称为其他用户(o)
a=ugo
[root@aspen ~]# chmod 000 aspen.txt 
[root@aspen ~]# ls -hl aspen.txt 
---------- 1 stu01 stu01 0 May 14 19:28 aspen.txt
[root@aspen ~]# chmod u+rw aspen.txt 
[root@aspen ~]# ls -hl aspen.txt 
-rw------- 1 stu01 stu01 0 May 14 19:28 aspen.txt
[root@aspen ~]# chmod u=x aspen.txt 
[root@aspen ~]# ls -hl aspen.txt 
---x------ 1 stu01 stu01 0 May 14 19:28 aspen.txt
[root@aspen ~]# chmod o=r aspen.txt 
[root@aspen ~]# ls -hl aspen.txt 
-rw-rw-r-- 1 stu01 stu01 0 May 14 19:28 aspen.txt
[root@aspen ~]# chmod g-w aspen.txt 
[root@aspen ~]# ls -hl aspen.txt 
-rw-r--r-- 1 stu01 stu01 0 May 14 19:28 aspen.txt
[root@aspen ~]# chmod a+rw aspen.txt 
[root@aspen ~]# ls -hl aspen.txt 
-rwxrw-rw- 1 stu01 stu01 0 May 14 19:28 aspen.txt
[root@aspen ~]# chmod +x aspen.txt 
[root@aspen ~]# ls -hl aspen.txt 
-rwxrwxrwx 1 stu01 stu01 0 May 14 19:28 aspen.txt

7.文件容量:表示文件的大小

[root@aspen ~]# dd if=/dev/zero of=/tmp/test.block bs=1M count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.383074 s, 137 MB/s
[root@aspen ~]# ll -h /tmp/test.block 
-rw-r--r-- 1 root root 50M May 14 19:25 /tmp/test.block

8.文件时间

  • mtime 文件的修改时间
mtime是文件的属性信息,保存在文件的inode空间内;
  • atime 文件的访问时间
  • ctime 文件属性的改变时间

附:思维导图

未完待续…