Linux文件权限详解

316 阅读3分钟

Linux文件权限决定了哪些用户或用户组可以对文件或目录执行特定的操作。文件权限分为 读取(read)、写入(write)和 执行(execute),并且这些权限可以为不同的用户类型(所有者、同组用户、其他用户)单独设置。

文件权限表示

文件权限通过 ls -l 命令查看,其格式如下:

Copy Code
-rwxr-xr--

这个字符串由 10 个字符组成,解释如下:

  1. 文件类型(第一个字符)

    • -:普通文件
    • d:目录
    • l:符号链接
    • c:字符设备文件
    • b:块设备文件
    • s:套接字文件
    • p:命名管道(FIFO)
  2. 权限(接下来的 9 个字符) :分为 3 组,每组三个字符:

    • 第1组rwx): 文件所有者(User)的权限
    • 第2组r-x): 同组用户(Group)的权限
    • 第3组r--): 其他用户(Others)的权限

每组的字符含义:

  • r:读取权限,允许查看文件内容或列出目录内容。
  • w:写入权限,允许修改文件内容或在目录中创建/删除文件。
  • x:执行权限,允许执行文件或进入目录。

权限的数字表示

Linux也使用数字(八进制)来表示权限。每个权限字符有一个对应的值:

  • 读(r)= 4
  • 写(w)= 2
  • 执行(x)= 1
  • 无权限 = 0

三种权限的数字值相加,得到一个数字表示:

  • rwx = 4 + 2 + 1 = 7
  • rw- = 4 + 2 + 0 = 6
  • r-- = 4 + 0 + 0 = 4

例如:

  • -rwxr-xr-- 对应的数字表示为 755
  • -rw-r--r-- 对应的数字表示为 644

权限修改命令

  • chmod(change mode): 用来修改文件或目录的权限。 语法:
chmod [权限]文件名

数字模式(如755644):

chmod 755 myfile

符号模式(用r,w,x+,-来设置或移除权限):

chmod u+x myfile  # 给文件所有者添加执行权限
chmod g-w myfile  # 移除同组用户的写权限
chmod o=r myfile  # 设置其他用户为只读权限

用户和用户组

  • 用户(User,u):文件的所有者。
  • 同组用户(Group,g):与文件所有者属于同一组的用户。
  • 其他用户(Others,o):系统中其他所有用户。

例子:

  1. -rwxr-xr--

    • 文件所有者(User)可以读、写、执行。
    • 同组用户(Group)可以读、执行。
    • 其他用户(Others)只能读取。
  2. -rw-r--r--

    • 文件所有者(User)可以读、写。
    • 同组用户(Group)和其他用户(Others)只能读取。

目录权限

对于目录,权限的含义略有不同:

  • 读(r) :列出目录中的文件。
  • 写(w) :在目录中创建、删除文件。
  • 执行(x) :进入目录,即访问目录中的文件或子目录。

设置特殊权限

  • SUID(Set UID):当设置在可执行文件上时,运行该文件的用户将获得文件所有者的权限。
    • 用 chmod u+s file 设置。
  • SGID(Set GID):当设置在目录上时,新创建的文件将继承目录的组权限。
    • 用 chmod g+s directory 设置。
  • Sticky Bit:通常用于目录,限制文件的删除权限,仅允许文件的所有者删除该文件。
    • 用 chmod +t directory 设置。

总结

Linux 文件权限决定了不同用户对文件的访问能力。正确设置权限对于系统安全至关重要,确保只有授权用户才能修改或执行重要文件。