Skip to content

第6章:文件权限操作

6.1 权限的含义

基本权限

  • Linux文件和目录有三种基本权限:
    • 读(r):可以查看文件内容或列出目录中的文件
    • 写(w):可以修改文件内容或在目录中创建、删除、重命名文件
    • 执行(x):可以执行文件或进入目录

权限分组

  • 权限分为三组,分别对应不同的用户:
    • 所有者(u):文件或目录的创建者
    • 所属组(g):文件或目录所属的用户组
    • 其他用户(o):既不是所有者也不是所属组成员的用户

权限表示方法

  • 符号表示:如 rwxr-xr--
  • 数字表示:如 754(4-2-1 规则)
    • r = 4
    • w = 2
    • x = 1
    • 例如:rwx = 4+2+1 = 7,r-x = 4+1 = 5,r-- = 4

6.2 查看文件/目录权限

ls -l 命令

  • 功能:以长格式显示文件和目录的详细信息,包括权限
  • 示例:
    bash
    $ ls -l
    -rw-r--r-- 1 user user 1234 May 20 14:30 file.txt
    drwxr-xr-x 2 user user 4096 May 20 14:30 directory

权限字段解读

  • 第一个字符:文件类型
    • -:普通文件
    • d:目录
    • l:符号链接
    • c:字符设备
    • b:块设备
  • 接下来的9个字符:权限(3组,每组3位)
    • 第2-4位:所有者权限
    • 第5-7位:所属组权限
    • 第8-10位:其他用户权限

示例解读

  • -rw-r--r--
    • 文件类型:普通文件
    • 所有者:读、写(rw-)
    • 所属组:读(r--)
    • 其他用户:读(r--)
  • drwxr-xr-x
    • 文件类型:目录
    • 所有者:读、写、执行(rwx)
    • 所属组:读、执行(r-x)
    • 其他用户:读、执行(r-x)

6.3 修改权限

chmod命令

  • 功能:修改文件或目录的权限
  • 格式:
    • 符号法:chmod [u/g/o/a][+/-/=][r/w/x] 文件/目录
    • 数字法:chmod 数字 文件/目录

符号法示例

  • 给所有者添加执行权限:
    bash
    $ chmod u+x file.txt
  • 给所属组添加写权限:
    bash
    $ chmod g+w file.txt
  • 移除其他用户的执行权限:
    bash
    $ chmod o-x file.txt
  • 给所有用户添加读权限:
    bash
    $ chmod a+r file.txt
  • 设置所有者权限为读写执行,所属组为读执行,其他用户为读:
    bash
    $ chmod u=rwx,g=rx,o=r file.txt

数字法示例

  • 设置权限为 rwxr-xr--(754):
    bash
    $ chmod 754 file.txt
  • 设置权限为 rw-rw-rw-(666):
    bash
    $ chmod 666 file.txt
  • 设置权限为 rwxrwxrwx(777):
    bash
    $ chmod 777 file.txt

递归修改权限

  • 使用 -R 选项递归修改目录及其内容的权限:
    bash
    $ chmod -R 755 directory

6.4 修改文件所有者与所属组

chown命令

  • 功能:修改文件或目录的所有者
  • 格式:chown 用户名 文件/目录
  • 示例:
    bash
    $ chown user1 file.txt
  • 同时修改所有者和所属组:
    bash
    $ chown user1:group1 file.txt
  • 递归修改:
    bash
    $ chown -R user1:group1 directory

chgrp命令

  • 功能:修改文件或目录的所属组
  • 格式:chgrp 组名 文件/目录
  • 示例:
    bash
    $ chgrp group1 file.txt
  • 递归修改:
    bash
    $ chgrp -R group1 directory

6.5 新手踩坑:权限不足的解决方法

常见权限错误

  • Permission denied:权限不足,无法执行操作
  • Cannot create directory:无法创建目录,权限不足
  • Cannot write to file:无法写入文件,权限不足

解决方法

  1. 检查当前用户

    bash
    $ whoami
  2. 检查文件权限

    bash
    $ ls -l file.txt
  3. 使用sudo命令

    • 对于系统文件或其他用户的文件,使用 sudo 获取临时管理员权限:
    bash
    $ sudo chmod 755 file.txt
  4. 修改文件所有者

    • 如果是自己的文件,确保所有者是当前用户:
    bash
    $ sudo chown $USER file.txt
  5. 修改目录权限

    • 确保目录有执行权限,否则无法进入:
    bash
    $ chmod +x directory
  6. 检查父目录权限

    • 确保父目录有相应的权限,否则无法在其中创建文件或目录

权限管理最佳实践

  • 最小权限原则:只给用户必要的权限
  • 定期检查权限:定期检查系统文件的权限设置
  • 使用用户组:通过用户组管理权限,提高安全性
  • 备份重要文件:修改权限前备份重要文件

实战练习:权限管理

  1. 创建一个测试文件:

    bash
    $ touch test.txt
  2. 查看文件权限:

    bash
    $ ls -l test.txt
  3. 修改文件权限为 rwxr-xr--:

    bash
    $ chmod 754 test.txt
  4. 再次查看文件权限:

    bash
    $ ls -l test.txt
  5. 创建一个测试目录:

    bash
    $ mkdir testdir
  6. 查看目录权限:

    bash
    $ ls -ld testdir
  7. 递归修改目录权限:

    bash
    $ chmod -R 755 testdir
  8. 尝试修改系统文件权限(需要sudo):

    bash
    $ sudo chmod 644 /etc/passwd

通过学习文件权限操作,你将能够更好地控制文件和目录的访问权限,提高系统的安全性。

© 2026 编程马·菜鸟教程 版权所有