Linux一切皆文件:php
Llinux系统的文件或目录的属性主要包括:索引节点、文件类型、文件权限、连接数、所属的用户和用户组、最近修改时间等。html
Llinux文件属性及权限图形说明:node
Linux文件属性及权限补充说明:python
第一列:inode索引结点linux
inode (index node)概述shell
一个硬盘须要存放数据,首先分区,再格式化(格式化会建立文件系统类型),最后就能够存储数据。windows
Linux的文件系统类型通常有ext2/ext3/ext4等类型。在每一个linux存储设备或存储分区被格式化建立成socket
ext4(CentOS 6.7)文件系统后,建立文件系统通常生成两部分:第一部分inode,第二部分是block。jsp
inode用来存储文件属性及信息索引(指向文件实体,但文件名称不包含在inode),block用来存放实ide
际的数据使用(例如文字、照片、视频等普通文件数据)。inode是一块存储空间,CentOS 6非启动分
区inode默认大小为256字节,CentOS 5 默认大小为128字节。正常状况下,一个文件只能占用一个
inode,若是两个文件的inode相同则说明是这两个文件是互为硬连接,也能够是多个文件。inode节点
的总数通常在格式化时就给定。
查看系统分区及文件类型
[root@oldboy test]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 8.8G 1.4G 7.0G 17% /
tmpfs tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 ext4 190M 36M 145M 20% /boot
查看指定文件inode
[root@oldboy test]# stat file.txt
File: `file.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 139792 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-13 16:58:45.989909373 +0800
Modify: 2018-11-13 16:58:45.989909373 +0800
Change: 2018-11-13 16:58:45.989909373 +0800
[root@oldboy test]# ls -lih file.txt
139792 -rw-r--r-- 1 root root 0 Nov 13 16:58 file.txt
查看系统分区inode使用状况
[root@oldboy test]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 55764 537580 10% /
tmpfs 125596 1 125595 1% /dev/shm
/dev/sda1 51200 38 51162 1% /boot
[root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "inode count"
dumpe2fs 1.41.12 (17-May-2010)
Inode count: 593344
不一样CentOS版本inode大小不一样(boot分区默认是128字节)
[root@localhost test]# cat /etc/redhat-release
CentOS release 5.5 (Final)
[root@localhost test]# dumpe2fs /dev/sda1 | grep -i "inode size"
dumpe2fs 1.39 (29-May-2006)
Inode size: 128
[root@localhost test]# dumpe2fs /dev/sda3 | grep -i "inode size"
dumpe2fs 1.39 (29-May-2006)
Inode size: 128
[root@oldboy test]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[root@oldboy test]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.4G 7.0G 17% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 36M 145M 20% /boot
[root@oldboy test]# dumpe2fs /dev/sda1 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size: 128
[root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size: 256
block概述
linux存储设备或存储分区被格式化建立成ext4(CentOS 6.7)文件系统后,建立文件系统
通常生成两部分:第一部分inode,第二部分是block。inode前面已讲述,。了解block先了
解sector(扇区)。硬盘的最小存储单位:sector(扇区),每一个扇区储存512字节,操做系统
会一次性连续读取多个扇区,即一次性读取多个扇区称为一个block(块),文件存取的最小
单位:block(块),由多个扇区组成;block的大小常见的有1KB、2KB、4KB,在linux中常见
设置为4KB,即连续8个扇区组成一个block,/boot分区的block通常为1KB。系统建立一个文件
或者文件占大小一次固定分配4K(8个扇区,每一个扇区512B)
查看每一个分区的sector大小
[root@oldboy test]# df -l
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 9213440 1440588 7298180 17% /
tmpfs 502384 0 502384 0% /dev/shm
/dev/sda1 194241 35992 148009 20% /boot
查看分区指定的block大小
[root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 4096
[root@oldboy test]# dumpe2fs /dev/sda1 | grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 1024
查看指定分区的扇区、磁道、柱面、磁头等信息,磁盘的容量=磁头*磁道*扇区(512B)*柱面
[root@oldboy test]# fdisk -l /dev/sda3
Disk /dev/sda3: 9721 MB, 9721348096 bytes
255 heads, 63 sectors/track, 1181 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
第二列:文件类型及权限
文件类型及权限共有10个字符组成(第一个字符表明文件类型、后面9个字符表明文件权限),
假如把SElinux开启,文件类型及权限共有11个字符(第一个字符表明文件类型、第2个到第10个字符
表明文件权限,第11个字符与selinux有关系,通常用不到)
第一个字符:
Linux的文件类型
在linux系统中,能够说一切设备(包括目录、普通文件等)皆文件。文件类型包含有普通文件、目录、字符设备文件、块设备文件、符号连接文件、管道文件等等
一、 d(directory)表示目录
[root@oldboy test]# ls -l /test/ | grep "^d"
drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir1
drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir2
drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir3
[root@oldboy test]# ls -ld /test/*
drwxr-xr-x 2 root root 4096 Nov 14 19:24 /test/dir1
drwxr-xr-x 2 root root 4096 Nov 14 19:24 /test/dir2
drwxr-xr-x 2 root root 4096 Nov 14 19:24 /test/dir3
二、 -(regular file) 普通文件
(1)、纯文本文件(ascll)文件内容能够直接读到的数据,例如:字母、数字、特殊字条串等,能够用cat命令读取的文,好比配置文件几乎都是这种类型。
[root@oldboy test]# file file.txt
file.txt: ASCII text
(2)、二进制文件(binary)linux中的命令程序就属于这个格式。例如cat 命令就是一个二进制文件。
[root@oldboy test]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
(3)、数据格式文件(data)有些程序运行过程当中会读取某些特定格式的文件,那些特定格式的文件能够被称为数据文件。例如:linux 在用户登陆时都会将登陆数据记录在/var/log/wtmp 那个文件内,该文件是一个数据文件,经过last命令读出来。/var/log/lastlog也是一个数据文件,可使用lastlog命令读出来。cat命令读取会是乱码,由于他属于一种特殊格式的文件。file 命令也能够查看文件类型
[root@oldboy test]# file /var/log/wtmp
/var/log/wtmp: data
三、l (link)连接文件(通常指得是软连接文件或符号连接)
[root@oldboy test]# ls -l /mnt/file_hard_link.txt
lrwxrwxrwx 1 root root 14 Nov 14 19:38 /mnt/file_hard_link.txt -> /test/file.txt
[root@oldboy test]# readlink /mnt/file_hard_link.txt
/test/file.txt
四、 b(block)块设备和其它外围设备,是特殊类型的文件
[root@oldboy ~]# find /dev/ -type b | xargs ls -l | head -3
brw-rw---- 1 root disk 7, 0 Nov 12 23:12 /dev/loop0
brw-rw---- 1 root disk 7, 1 Nov 12 23:12 /dev/loop1
brw-rw---- 1 root disk 7, 2 Nov 12 23:12 /dev/loop2
五、 c(character)字符设备文件(通常是指串设备或终端设备等)
[root@oldboy ~]# find /dev/ -type c | xargs ls -l | head -3
crw-rw---- 1 root video 10, 175 Nov 12 23:12 /dev/agpgart
crw-rw---- 1 root root 251, 0 Nov 12 23:12 /dev/bsg/0:0:0:0
crw-rw---- 1 root root 251, 1 Nov 12 23:12 /dev/bsg/2:0:0:0
六、 s(socket)套接字文件
[root@oldboy ~]# find /dev/ -type s | xargs ls -l | head -3
srw-rw-rw- 1 root root 0 Nov 12 23:12 /dev/log
七、 p(named pipe)管道文件
[root@oldboy ~]# find /var/spool/postfix/public/ -type p | xargs ls -l
prw--w--w- 1 postfix postfix 0 Nov 14 19:52 /var/spool/postfix/public/pickup
prw--w--w- 1 postfix postfix 0 Nov 14 19:48 /var/spool/postfix/public/qmgr
Linux下扩展名的做用
在linux中,虽然扩展名没什么实际意义,但为了兼容windows,同时方便咱们多数习惯了windows用户区分文件的不一样,因此仍是习惯经过扩展名来表示不一样的文件类型,例如:
一、.tar\.tar.gz\.tgz\.zip\.tar.bz表示压缩文件,建立命令通常为tar\gzip\unzip等
二、.sh表示shell脚本文件,经过shell语言开发的程序
三、.pl表示perl语言文件,经过perl语言开发的程序
四、.py表示python语言文件,经过python语言开发的程序
五、.html\.htm\.php\.jsp\.do表示网页语言文件
六、.conf表示系统配置文件
七、.rpm表示rpm安装包文件
后面9个字符:
第三列:硬连接个数
文件连接分为两种,硬连接和软连接(符号连接)。
硬连接文件与软连接访问图形说明:
软连接(符号连接)能够看做是windows的快捷方式,可让你快速找到目标文件,只是一个普通的文件,
但软连接文件跟实际的原文件inode是不相同,软连接能够针对文件和目录进行建立。
硬连接是经过原文件的索引节点进行连接的文件,也能够理解为经过原文件inode复制出来的一个文件。
硬连接和原文件的inode索引节点是相同的,硬连接只能够针对文件进行建立,目录建立不了(系统限制)。
每一个建立的目录会自动建立两个硬连接.和..可经过ls –a查看
连接建立命令
ln 原文件 目标文件 ##建立硬连接命令
ln -s 原文件 目标文件 ##建立软连接命令
硬连接建立
[root@oldboy test]# touch file
[root@oldboy test]# echo "testfile" > file
[root@oldboy test]# cat file
testfile
[root@oldboy test]# ln file file_hard_link
[root@oldboy test]# ls -lih
total 0
140988 -rw-r--r-- 2 root root 0 Nov 15 01:51 file
140988 -rw-r--r-- 2 root root 0 Nov 15 01:51 file_hard_link
[root@oldboy test]# cat file_hard_link
testfile
[root@oldboy test]# mkdir dir
[root@oldboy test]# ls -ld dir/
drwxr-xr-x 2 root root 4096 Nov 15 01:52 dir/
[root@oldboy test]# ls -lid dir/ dir/.
140989 drwxr-xr-x 2 root root 4096 Nov 15 01:52 dir/
140989 drwxr-xr-x 2 root root 4096 Nov 15 01:52 dir/.
软连接建立
[root@oldboy test]# touch file
[root@oldboy test]# echo "testfile" > file
[root@oldboy test]# cat file
testfile
[root@oldboy test]# ln -s file file_soft_link
[root@oldboy test]# ls -li
total 4
140988 -rw-r--r-- 1 root root 9 Nov 15 01:57 file
140989 lrwxrwxrwx 1 root root 4 Nov 15 01:57 file_soft_link -> file
[root@oldboy test]# cat file_soft_link
testfile
第四列:文件或目录所属用户(用户)
第五列:文件或目录所属用户组(用户组)
Linux/Unix是一个多用户、多任务的操做系统同,在linux系统系统用户是分角色的,linux系统中,
因为角色不一样,权限和所完成的任务也不一样,用户的角色是经过UID和GID识别的,特别是UID,在linux
系统中,一个UID是惟一标识系统用户的帐号(至关于咱们的身份证)。用户的系统帐号的名称(如oldboy)
其实给人(管理员)看的,linu系统可以识别的仅仅是UID和GID这样的数字。用户UID就至关于咱们的身份
证同样,用户名就至关于咱们的名字。
UID(User Identify) 中文用户ID,至关于各位的身份证,在系统中是惟一的
GIP(Group Identify) 中文组ID,至关于各位的家庭或者大家的学校ID
Linux系统分为三类用户:
一、 超级用户root
root(超级管理员),UID为0,拥有最高的权限,相似windows系统的administrator本地管理员。root可使用sudo管理提权给普通用户使用,至关于分配特殊权限给普通用户使用。
二、 虚拟用户
虚拟用户,UID为1~499,虚拟用户通常与系统和程序服务相关,通常是默认不能登陆系统使用。
三、 普通用户
通常是由具有系统管理员root权限用户所建立,UID为500~65534,这类用户的权限会受到必定的基本权限限制,通常来自具有管理员用户的限制。
查看用户UID和GID命令
[root@oldboy ~]# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
当建立一个用户,如下配置文件会被修改
用户配置文件 /etc/passwd
用户密码配置文件 /etc/shadow
用户组配置文件 /etc/group
用户组密码配置文件 /etc/gshadow
一、用户配置文件/etc/passwd 是系统识别用户的一个文件,系统全部用户都记录在这里/etc/passwd文件里
二、用户密码配置文件/etc/shadow是系统用户密码配置文件,与用户配置文件/etc/passwd中x字段的占位符相对应,记录着用户密码等相关记录。
三、用户组配置文件/etc/group记录用户组相关信息。
四、用户组密码配置文件/etc/gshadow与用户配置文件/etc/group中x占位符相对应,记录用户组密码相关信息。
第7、8、九列:文件或目录的修改时间,默认月日时分
文件时间戳分三种:
modify 修改时间 find命令对应选项 -mtime 通常修改文件内容
change 改变时间 find命令对应选项 -ctime 文件的属性改变
access 访问时间 find命令对应选项 -actime 访问文件内容
格式化时间:
[root@oldboy ~]# ls -l
total 44
-rw-------. 1 root root 1139 Sep 7 17:18 anaconda-ks.cfg
-rw-r--r--. 1 root root 22179 Sep 7 17:18 install.log
-rw-r--r--. 1 root root 5890 Sep 7 17:16 install.log.syslog
drwxr-xr-x 2 root root 4096 Nov 14 18:18 test
[root@oldboy ~]# ls -l --time-style=long-iso
total 44
-rw-------. 1 root root 1139 2018-09-07 17:18 anaconda-ks.cfg
-rw-r--r--. 1 root root 22179 2018-09-07 17:18 install.log
-rw-r--r--. 1 root root 5890 2018-09-07 17:16 install.log.syslog
drwxr-xr-x 2 root root 4096 2018-11-14 18:18 test
修改时间戳命令:
[root@oldboy ~]# stat install.log
File: `install.log'
Size: 22179 Blocks: 56 IO Block: 4096 regular file
Device: 803h/2051d Inode: 13 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-09-07 17:12:50.634999903 +0800
Modify: 2018-09-07 17:18:05.290999679 +0800
Change: 2018-09-07 17:18:18.479999676 +0800
[root@oldboy test]# touch file.txt
[root@oldboy test]# echo "testfile" > file.txt
[root@oldboy test]# stat file.txt
File: `file.txt'
Size: 9 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 140987 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-17 13:33:09.362803892 +0800
Modify: 2018-11-17 13:33:57.626808703 +0800
Change: 2018-11-17 13:33:57.626808703 +0800
[root@oldboy test]# cat file.txt
testfile
[root@oldboy test]# stat file.txt
File: `file.txt'
Size: 9 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 140987 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-11-17 13:34:13.969814896 +0800
Modify: 2018-11-17 13:33:57.626808703 +0800
Change: 2018-11-17 13:33:57.626808703 +0800
[root@oldboy test]# chown oldboy.oldboy file.txt
[root@oldboy test]# stat file.txt
File: `file.txt'
Size: 9 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 140987 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 500/ oldboy) Gid: ( 500/ oldboy)
Access: 2018-11-17 13:34:13.969814896 +0800
Modify: 2018-11-17 13:33:57.626808703 +0800
Change: 2018-11-17 13:34:38.519806714 +0800
第十列:文件名
注意:文件名不包含在文件inode里,而是在上级目录的block里
查看文件和目录
[root@oldboy ~]# ls -lF
total 56
-rw-------. 1 root root 1139 Sep 7 17:18 anaconda-ks.cfg
-rw-r--r--. 1 root root 22179 Sep 7 17:18 install.log
-rw-r--r--. 1 root root 5890 Sep 7 17:16 install.log.syslog
-rw-r--r-- 1 root root 10240 Nov 17 18:10 pack.tar
drwxr-xr-x 2 root root 4096 Nov 17 17:47 test/
感谢老男孩博客提供参考 https://blog.51cto.com/oldboy