linux文件属性是指Linux系统中对文件或目录的一些特征和权限的描述,它们决定了文件或目录的类型、所有者、所属组、访问权限等信息。Linux文件属性可以通过ls -l或ll命令来查看,也可以通过chgrp、chown、chmod等命令来修改。
Linux文件属性主要包括以下几个方面:
- **文件类型**:Linux系统中有七种文件类型,分别是普通文件、目录、设备、链接、管道、套接字和门。文件类型可以通过ls -l命令的第一个字符来判断,如下表所示:
| 文件类型 | 第一个字符 | 说明 |
| :------: | :--------: | :--: |
| 普通文件 | - | 存储数据的文件,可以是文本或二进制格式 |
| 目录 | d | 存储其他文件或目录的名称和inode号的文件 |
| 设备文件 | b | 块设备文件,以块为单位进行数据传输的设备,如硬盘 |
| 设备文件 | c | 字符设备文件,以字节为单位进行数据传输的设备,如键盘 |
| 链接文件 | l | 指向另一个文件的路径名的文件,可以是硬链接或软链接 |
| 管道文件 | p | 用于进程间通信的文件,数据只能单向流动 |
| 套接字 | s | 用于网络通信或本机进程间通信的文件 |
| 门 | D | 用于进程间通信的一种特殊文件 |
- **所有者和所属组**:Linux系统中每个用户都有一个唯一的用户ID(UID)和一个或多个组ID(GID),每个用户都属于一个主组和若干个附加组。每个文件或目录都有一个所有者和一个所属组,它们决定了该文件或目录的归属和访问权限。所有者和所属组可以通过ls -l命令的第三列和第四列来查看,也可以通过chown和chgrp命令来修改。例如:
```bash
# 查看/root目录下的install.log文件的所有者和所属组
[root@www ~]# ls -l install.log
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
# 将install.log文件的所有者改为bin用户
[root@www ~]# chown bin install.log
[root@www ~]# ls -l install.log
-rw-r--r-- 1 bin root 68495 Jun 25 08:53 install.log
# 将install.log文件的所属组改为users组
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l install.log
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
# 将install.log文件的所有者和所属组同时改为root用户和root组
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l install.log
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
```
- **访问权限**:Linux系统中每个文件或目录都有三种访问权限,分别是读(r)、写(w)和执行(x)。这三种权限分别对应三种身份,即所有者(u)、所属组(g)和其他用户(o)。这样就形成了九个权限位,可以通过ls -l命令的第二列到第十列来查看,也可以通过chmod命令来修改。例如:
```bash
# 查看/root目录下的install.log文件的访问权限
[root@www ~]# ls -l install.log
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
# 将install.log文件的所有者的权限改为可读可写可执行
[root@www ~]# chmod u=rwx install.log
[root@www ~]# ls -l install.log
-rwxr--r-- 1 root root 68495 Jun 25 08:53 install.log
# 将install.log文件的所属组的权限改为可读可执行
[root@www ~]# chmod g=rx install.log
[root@www ~]# ls -l install.log
-rwxr-xr-- 1 root root 68495 Jun 25 08:53 install.log
# 将install.log文件的其他用户的权限改为无权限
[root@www ~]# chmod o= install.log
[root@www ~]# ls -l install.log
-rwxr-x--- 1 root root 68495 Jun 25 08:53 install.log
# 将install.log文件的所有者、所属组和其他用户的权限同时改为可读可写
[root@www ~]# chmod a=rw install.log
[root@www ~]# ls -l install.log
-rw-rw-rw- 1 root root 68495 Jun 25 08:53 install.log
```
除了使用字母来表示权限外,还可以使用数字来表示。每种权限都有一个对应的数字,如下表所示:
| 权限 | 数字 |
| :--: | :--: |
| r | 4 |
| w | 2 |
| x | 1 |
| - | 0 |
每种身份的三个权限的数字相加就得到了该身份的权限数字,例如:
```bash
# 查看/root目录下的install.log文件的访问权限
[root@www ~]# ls -l install.log
-rw-rw-rw- 1 root root 68495 Jun 25 08:53 install.log
# 计算各个身份的权限数字
所有者:rw- = 4 + 2 + 0 = 6
所属组:rw- = 4 + 2 + 0 = 6
其他用户:rw- = 4 + 2 + 0 = 6
# 将install.log文件的访问权限改为-rwxr-xr--
[root@www ~]# chmod 754 install.log
[root@www ~]# ls -l install.log
-rwxr-xr-- 1 root root 68495 Jun 25 08:53 install.log
# 计算各个身份的权限数字
所有者:rwx = 4 + 2 + 1 =7
所属组:r-x =4 +0+1=5
其他用户:r-- =4+0+0=4
```