Linux里面的文件权限

98 阅读3分钟

在 Ubuntu 中,文件权限是文件系统的重要组成部分,它控制谁可以读取、写入或执行文件。文件权限主要包括三种类型:读取(read)、写入(write)和执行(execute),并且这些权限可以分别应用于文件的所有者(user)、所属组(group)和其他用户(others)。

文件权限类型

每个文件或目录的权限分为三组,每组包含三个权限位:

  1. 用户权限(user permissions) :文件所有者的权限。
  2. 组权限(group permissions) :文件所属组的权限。
  3. 其他权限(other permissions) :系统中所有其他用户的权限。

权限位分别为:

  • r:读权限(read),值为 4。
  • w:写权限(write),值为 2。
  • x:执行权限(execute),值为 1。

这些权限可以组合使用,例如:

  • rwx 表示读、写、执行权限全部具备(7)。
  • rw- 表示读、写权限具备,但无执行权限(6)。
  • r-- 表示只有读权限(4)。

查看文件权限

使用 ls -l 命令查看文件或目录的权限:

sh
复制代码
ls -l /path/to/file

示例输出:

sh
复制代码
-rw-r--r-- 1 user group 16569 Jun  2 06:30 android.ipr

修改文件权限

使用 chmod 命令

chmod(change mode)命令用于更改文件或目录的权限。可以使用符号模式或八进制模式修改权限。

符号模式

符号模式使用 ugoa 来表示用户、组、其他用户和所有用户,使用 +-= 来添加、删除或设置权限。

  • u:用户(文件所有者)
  • g:组
  • o:其他用户
  • a:所有用户(默认)

示例:

sh
复制代码
chmod u+r /path/to/file       # 给文件所有者添加读权限
chmod g+w /path/to/file       # 给组添加写权限
chmod o+x /path/to/file       # 给其他用户添加执行权限
chmod a+rwx /path/to/file     # 给所有用户添加读、写、执行权限
chmod u=rw,go=r /path/to/file # 设置文件所有者读写权限,组和其他用户只读权限
八进制模式

八进制模式使用数字表示权限,每个数字是 4(读)、2(写)、1(执行)的组合。

  • 7:读、写、执行(4+2+1)
  • 6:读、写(4+2)
  • 5:读、执行(4+1)
  • 4:读
  • 3:写、执行(2+1)
  • 2:写
  • 1:执行
  • 0:无权限

示例:

sh
复制代码
chmod 755 /path/to/file  # 用户拥有读、写、执行权限,组和其他用户只有读、执行权限
chmod 644 /path/to/file  # 用户拥有读、写权限,组和其他用户只有读权限
chmod 700 /path/to/file  # 只有用户拥有读、写、执行权限,组和其他用户无权限

修改文件所有者和组

使用 chown 命令

chown(change owner)命令用于更改文件或目录的所有者和组。

sh
复制代码
sudo chown new_user:new_group /path/to/file

示例:

sh
复制代码
sudo chown zyz:zyz /path/to/file  # 将文件所有者和组更改为 `zyz`

使用 chgrp 命令

chgrp(change group)命令用于更改文件或目录的组。

sh
复制代码
sudo chgrp new_group /path/to/file

示例:

sh
复制代码
sudo chgrp zyz /path/to/file  # 将文件组更改为 `zyz`

示例操作汇总

查看文件权限

sh
复制代码
ls -l /path/to/file

修改文件权限

符号模式
sh
复制代码
chmod u+r /path/to/file       # 添加读权限
chmod g+w /path/to/file       # 添加写权限
chmod o+x /path/to/file       # 添加执行权限
chmod a+rwx /path/to/file     # 添加读、写、执行权限
chmod u=rw,go=r /path/to/file # 设置权限
八进制模式
sh
复制代码
chmod 755 /path/to/file  # 设置权限
chmod 644 /path/to/file  # 设置权限
chmod 700 /path/to/file  # 设置权限

修改文件所有者和组

sh
复制代码
sudo chown zyz:zyz /path/to/file  # 更改所有者和组
sudo chgrp zyz /path/to/file      # 更改组