跳转到内容

Linux文件权限查看与解读

课程介绍

接下来我们来学习如何查看和解读Linux文件权限。用ls -l可以看到文件详细信息,包括权限、所有者、所属组等。权限字符串像-rwxr-xr-x这样的,第一位表示文件类型,后面9位分三组表示用户、用户组和其他用户的权限。掌握这些,你就能看懂Linux的权限系统了。

1. ls -l命令输出解读

ls -l命令以列表形式显示文件和目录的详细信息,包括权限、所有者、大小和修改时间等。

命令语法

bash
ls -l [文件/目录]

输出示例

bash
$ ls -l
总用量 12
drwxr-xr-x 2 yege yege 4096 Oct 15 14:30 桌面
-rw-r--r-- 1 yege yege   15 Oct 15 14:35 hello.txt

输出结构分析

序号含义示例值
1权限控制信息drwxr-xr-x-rw-r--r--
2所属用户yege
3所属用户组yege
4文件大小/目录项数409615
5最后修改时间Oct 15 14:30
6文件名/目录名桌面hello.txt

2. 权限字符串解读

权限字符串是ls -l输出的最左侧部分,包含10个字符,分为文件类型和权限两部分。

2. 1 文件类型标识(第1位)

标识含义
-普通文件
d目录
l软链接(符号链接)
c字符设备文件
b块设备文件
s套接字文件
p命名管道

2. 2 权限部分(后9位)

后9位权限分为三组,每组3位,分别代表不同用户的权限:

位置代表用户含义
2-4位所属用户(User)文件/目录所有者的权限
5-7位所属用户组(Group)所有者所在组的权限
8-10位其他用户(Others)系统中其他用户的权限

2. 3 权限标识

每组权限包含三个字符,分别表示读、写、执行权限:

标识含义
r读权限(Read)
w写权限(Write)
x执行权限(Execute)
-无权限

权限字符串示例

drwxr-xr-x
│└─┴─┴─└─┴─┴─└─┴─┴─┴─
│  所属用户   所属组    其他用户

文件类型(d表示目录)

-所属用户:rwx(可读、可写、可执行)
-所属组:r-x(可读、可执行,无写权限)
-其他用户:r-x(可读、可执行,无写权限)

3. 权限的具体含义

rwx权限对于文件和目录有不同的含义,需要分别理解。

3. 1 针对文件的权限

权限含义
r可以读取文件内容(如cat、less命令)
w可以修改文件内容(如vim、echo命令)
x可以将文件作为程序执行(如./script.sh)

3. 2 针对目录的权限

权限含义
r可以列出目录内容(如ls命令)
w可以在目录中创建、删除、重命名文件/目录(如touch、mkdir、rm命令)
x可以进入目录(如cd命令)

权限组合示例

权限字符串文件类型所属用户权限所属组权限其他用户权限
-rw-r--r--普通文件rw-(可读可写)r--(只读)r--(只读)
drwx------目录rwx(完全权限)---(无权限)---(无权限)
-rwxr-xr-x可执行文件rwx(完全权限)r-x(可读可执行)r-x(可读可执行)
drwxrwxrwx目录rwx(完全权限)rwx(完全权限)rwx(完全权限)

4. 实操演示

4. 1 查看文件权限

bash
# 查看当前目录文件权限
$ ls -l
总用量 12
drwxr-xr-x 2 yege yege 4096 Oct 15 14:30 桌面
-rw-r--r-- 1 yege yege   15 Oct 15 14:35 hello.txt

# 查看特定文件权限
$ ls -l hello.txt
-rw-r--r-- 1 yege yege 15 Oct 15 14:35 hello.txt

4. 2 分析目录权限

bash
# 查看根目录权限
$ ls -ld /
drwxr-xr-x 22 root root 4096 Oct 15 14:30 /

# 分析权限:
# - 文件类型:d(目录)
# - 所属用户(root):rwx(可读、可写、可执行)
# - 所属组(root):r-x(可读、可执行)
# - 其他用户:r-x(可读、可执行)

4. 3 权限判定示例

bash
# 1. 测试根目录的执行权限(cd进入)
$ cd /
# 成功进入,说明有x权限

# 2. 测试根目录的读权限(列出内容)
$ ls -l /
# 成功列出,说明有r权限

# 3. 测试根目录的写权限(创建文件)
$ touch /test.txt
touch: cannot touch '/test.txt': Permission denied
# 创建失败,说明无w权限

4. 4 跨用户权限测试

bash
# root用户创建的文件,yege用户查看
$ ls -l /1.txt
-rw-r--r-- 1 root root 10 Oct 15 14:30 /1.txt

# yege用户尝试读取
$ cat /1.txt
Hello World
# 成功读取,说明其他用户有r权限

# yege用户尝试修改
$ echo "test" > /1.txt
bash: /1.txt: Permission denied
# 修改失败,说明其他用户无w权限

当用户访问文件或目录时,Linux系统按以下顺序判定权限:

  • 判断是否为文件所有者:如果是,使用所属用户权限
  • 判断是否属于所属用户组:如果是,使用所属组权限
  • 使用其他用户权限:如果以上都不是,使用其他用户权限

5. 命令总结

命令功能描述示例
ls -l以列表形式显示文件详细信息ls -l
ls -ld显示目录本身的详细信息ls -ld /
ls -la显示所有文件(包括隐藏文件)的详细信息ls -la
ls -lh以人类可读的方式显示文件大小ls -lh

6. 权限理解小测验

  • 权限字符串-rwxr--r--表示什么意思?
  • 一个目录的权限为drwxr-x---,哪些用户可以进入该目录?
  • 一个文件的权限为-rw-r-----,文件所属组的用户可以执行该文件吗?
  • 如果一个用户对某个目录有读权限但没有执行权限,他可以做什么?

课程总结

这节课我们学了如何查看和理解文件权限。

权限字符串: -rwxr-xr-- (10个字符)

第一个字符:

  • d - 目录
  • - - 文件
  • l - 软链接

权限分三组,每组3个字符: 1-3位: 所有者权限(user) - rwx (读写执行) 4-6位: 用户组权限(group) - r-x (读和执行) 7-9位: 其他人权限(other) - r-- (只读)

r - 读(read) w - 写(write) x - 执行(execute)

ls -l查看文件权限,用chmod修改权限。

课后练习

  • 使用ls -l命令查看当前目录下所有文件和目录的权限
  • 分析以下权限字符串的含义:
    • drwx------
    • -rwxr-xr--
    • drwxrwxrwt
  • 尝试在不同目录下创建文件,观察权限差异
  • 查看系统中几个特殊文件的权限(如/etc/passwd/etc/shadow
  • 总结普通用户对系统根目录的权限特点

评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径