Linux 文件权限详解
1. 文件权限的概念
文件权限决定了哪些用户和组可以访问文件以及可以执行什么样的操作。在 Linux 中,每个文件或目录都有其访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
2. ls -al
命令查看文件的权限
在 CentOS 中,可以使用 ls -al
命令来查看文件和目录的详细信息,包括权限、所有者、文件大小和修改日期等。以下是一个示例输出:
[root@centos ~]# ls -al
总用量 36
drwx------ 4 root root 4096 8月 28 17:11 .
drwxr-xr-x 23 root root 4096 6月 20 10:32 ..
-rw------- 1 root root 5243 8月 30 10:16 .bash_history
-rw-r--r-- 1 root root 3106 10月 23 2015 .bashrc
drwx------ 2 root root 4096 6月 17 11:34 .cache
-rw-r--r-- 1 root root 148 8月 17 10:15 .profile
drwxr-xr-x 2 root root 4096 7月 6 15:18 .ssh
-rw------- 1 root root 3624 8月 28 17:11 .viminfo
3. 文件权限的组成部分
文件权限由以下几个部分组成,每个部分具有特定的含义:
文件类型与权限
- 这个字段包含10个字符,第一个字符表示文件类型,接下来的九个字符分为三组,每组三个字符,分别表示用户、用户组和其他用户的权限。
文件类型字符示例如下:
-
:普通文件d
:目录l
:符号链接b
:块设备文件c
:字符设备文件s
:套接字文件p
:命名管道文件
权限字符示例如下:
r
:读权限w
:写权限x
:执行权限
- 例如,权限字符串
-rwxr-xr--
表示一个普通文件,所有者具有读、写和执行权限,用户组具有读和执行权限,其他用户只有读权限。
链接数
- 表示链接到该文件所在 inode 结点的文件名数目。例如,一个目录的链接数通常等于该目录下的子目录数加2(包括当前目录
.
和上级目录..
)。
- 表示链接到该文件所在 inode 结点的文件名数目。例如,一个目录的链接数通常等于该目录下的子目录数加2(包括当前目录
文件所有者
- 表示该文件的拥有者。示例中的
.bashrc
文件的所有者是root
。
- 表示该文件的拥有者。示例中的
所属用户组
- 表示该文件所属的用户组。示例中的
.bashrc
文件的用户组是root
。
- 表示该文件所属的用户组。示例中的
文件大小
- 文件的大小,以字节为单位。例如,
.bashrc
文件的大小是 3106 字节。
- 文件的大小,以字节为单位。例如,
修改日期
- 文件的创建日期或者最近一次修改的日期。例如,
.bash_history
文件的修改日期是 8月 30 日 10:16。
- 文件的创建日期或者最近一次修改的日期。例如,
文件名
- 文件的名称。例如,
.viminfo
。
- 文件的名称。例如,
4. 文件权限的两种表示方式
在 CentOS 中,文件权限有两种表示方式:符号表示法和数字表示法。
符号表示法
- 使用字符
r
、w
、x
表示读、写、执行权限,分别代表数值4、2、1。每组权限的表示是累加的。 - 使用
u
、g
、o
表示 user(所有者)、group(用户组)、others(其他用户)。 例如,权限
-rwxr-xr--
中:u
(所有者)的权限为rwx
,即 4 + 2 + 1 = 7g
(用户组)的权限为r-x
,即 4 + 1 = 5o
(其他用户)的权限为r--
,即 4 = 4
- 使用字符
数字表示法
- 每组权限用一个三位数表示,分别代表所有者、用户组和其他用户的权限。
例如,权限
-rwxr-xr--
对应的数字表示为 754:- 所有者(u)的权限是 7,即
rwx
= 4 + 2 + 1 - 用户组(g)的权限是 5,即
r-x
= 4 + 1 - 其他用户(o)的权限是 4,即
r--
= 4
- 所有者(u)的权限是 7,即
5. 举例说明
在 CentOS 系统中,假设我们创建了一个文件 example.txt
,并设置它的权限为 -rw-r--r--
,其含义如下:
- 所有者可以读和写该文件,权限为 6(4 + 2)。
- 用户组可以读该文件,权限为 4。
- 其他用户也可以读该文件,权限为 4。
使用以下命令可以设置这些权限:
touch example.txt
chmod 644 example.txt
ls -l example.txt
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。