# Linux文件和目录的属性及权限
[TOC]
## 文件属性概述
Linux系统中文件和目录的属性主要包括:文件或目录的索引节点(inode)、类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容。
~~~
# ls -lhi
总用量 4.0K
317015 drwxr-xr-x 2 root root 4.0K 10月 20 17:17 test
~~~
**详解如下:**
| 列数 | 值 | 解释 |
| -- | -- | -- |
| 第一列 | 317015 | inode索引节点 |
| 第二列 | drwxr-xr-x | 文件类型及权限 |
| 第三列 | 2 | 硬链接个数 |
| 第四列 | root | 文件或目录的属主 |
| 第五列 | root | 文件或者目录所属的用户所归属组 |
| 第六列 | 4.0K | 文件或者目录的大小 |
| 第七、八、九列 | 10月 20 17:17 | 文件或目录的修改时间 |
| 第九列 | test | 实际的文件名或目录名 |
### 文件属性举例说明
`317015 -rw-r--r-- 1 root root 0 10月 20 17:42 test`
**inode索引节点编号**:317015
**文件类型**:文件类型-表示普通文件
**文件权限**:文件权限是`rw-r--r--`,表示文件属主可读、可写、可执行,文件所归属的用户组可读可执行,其他用户可读可执行。
**硬链接个数**:表示test这个文件没有其他的硬链接,因为链接数为1,就是它本身。
**文件属主**:这个文件所属的用户,即test文件被root用户拥有,是第一个root
**文件属组**:这个文件所属的用户组,
上述文件为root,是第二个root;
**文件大小**:文件大小为0字节;
**文件修改时间**:这里的时间是该文件最后被更新(包括文件创建、内容更新、文件名等),可使用如下命令查看文件的修改、访问以及创建时间:
~~~
# stat test
File: "test"
Size: 0 Blocks: 0 IO Block: 4096 普通空文件
Device: 803h/2051d Inode: 317015 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-10-20 17:42:15.000000000 +0800
Modify: 2015-10-20 17:42:15.000000000 +0800
Change: 2015-10-20 17:42:15.000000000 +0800
~~~
## 索引节点inode
inode中文意思是索引节点,每个存储设备或存储设备的分区(存储设备可以是硬盘、软盘、U盘...)被格式化为文件系统后,都应该有两部分:一部分是inode,另一部分是Block。Block是用来存储数据用的,而inode就是用来存储这些数据信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。
inode为每个文件进行信息索引,所以就有了inode的数值。错左系统根据指令能通过inode值最快的找到相对应的文件。
### inode值相同的文件是硬链接文件
在Linux文件系统中,inode值相同的文件是硬链接文件。也就是说不同的文件名,inode的值可能是相同的,一个inode值可以对应多个文件,在Linux中,链接文件是通过ln命令来创建的。
# Linux中文件的权限
每个文件或目录都有一组共9个权限位,每三位被分为一组,他们分别是属主权限为(占三个字符)、用户组权限位(占三个字符)、其他用户权限位(占三个字符)。比如`rwxr-xr-x`,在linux中正式这9个权限位来控制文件属主、用户组以及其他用户的权限。
## 权限位说明
Linux文件或目录的权限位是由9个权限位来控制,每三位为一组,他们分别是文件属主(ower)的读、写和执行,用户所属主(group)的读、写和执行,以及其他用户(other)的读、写和执行。
~~~
文件属主 : 读r 写w 执行x
文件属组 : 读r 写w 执行x
其他用户 : 读r 写w 执行x
如果权限位不可读、不可写、不可执行,则用-表示
~~~
### Linux普通文件的读、写、执行权限
~~~
可读r:表示具有读取阅读文件内容的权限;
可写w:表示具有新增、修改文件内容的权限(温馨提示:删除、修改和移动的权限受父目录的权限控制)
可执行x:表示具有执行文件的权限
~~~
### Linux目录的读、写、执行权限
~~~
进入目录的权限 x
浏览目录的权限 r
修改目录内文件的权限 w
~~~
### Linux文件与目录权限对比说明:
1. **r(read,读取权限)**
对文件而言,表示具有读取阅读文件内容的权限;
对目录而言,表示具有浏览目录的权限(*注意:与进入目录的权限不同*)
2. **w(write,写入权限)**
对文件而言,表示具有新增、修改文件内容的权限(*注意:删除和移动文件和文件本身属性无关*)
对目录而言。表示具有删除、移动目录内的文件的权限。
3. **x(exectue,执行权限)**
对于文件而言,表示具有执行文件的权限;
对与目录而言,表示具有进入目录的权限。
4. **-(无任何权限)**
若对应位置权限位为字符"-",表示对应用户没有读、写、执行的任何权限。
>[danger]
当删除或移动一个文件或目录,仅与该文件和目录所在的上一层目录权限有关,与该文件本身属性无任何关系;
对于文件来说,写文件是修改文件,而不是删除文件,因此写文件是与该文件的本身属性有关。
- Linux的安装
- Linux的软件安装管理
- Linux零碎的命令
- 了解ssh
- 系统调优及安全设置
- Linux系统中的硬链接和软连接
- Linux文件和目录的属性及权限
- 命令总结
- 文件目录管理命令
- cat
- cd
- cp
- ls
- mkdir
- mv
- rm
- touch
- vi
- 硬件检测内核shell命令
- echo
- alias
- dd
- diff
- date
- grep(重要)
- head
- rpm
- sed(重要)
- tree
- unalias
- yum
- seq
- su
- less
- more
- tail
- awk(重要)
- pwd
- history
- whoami
- find(重要)
- which
- vimdiff
- sudo
- wget
- ln
- chmod
- chown
- vim常用技巧
- scp
- 工作场景应用总结
- 自动删除n天前日志
- 删除一个目录下的所有文件但保留一个文件
- Linux软件安装
- php安装(apache版本)
- vsftpd安装
- git安装
- python安装
- LNMP安装
- LAMP安装I
- LAMP安装II
- svn安装
- svn在Linux下的命令操作
- svn钩子简介
- svn代码上传流程
- Crond介绍
- sersync应用指南
- 其他
- 小结一
- 系统调优重新整理tmp
- linux禁止root用户直接登录sshd并修改默认端口