在Linux系统中,文件和目录都有各自的权限设置,用于控制对其的访问和操作。权限分为三个部分:所有者权限、组权限和其他用户权限。以下是对Linux文件和目录权限的详细介绍:
每个文件和目录都有一个9位的权限字符串,用于表示其权限。例如,-rw-r–r-- 表示一个文件的权限,其中第一位表示文件类型(-表示普通文件,d表示目录),接下来的三位表示所有者权限,再接下来的三位表示组权限,最后的三位表示其他用户权限。
- 所有者权限(Owner Permissions):
-
- 读权限(Read):允许所有者查看和读取文件内容。
- 写权限(Write):允许所有者修改和编辑文件内容。
- 执行权限(Execute):对于文件,允许所有者执行文件;对于目录,允许所有者进入目录并访问其中的文件。
- 组权限(Group Permissions):
-
- 读权限(Read):允许组成员查看和读取文件内容。
- 写权限(Write):允许组成员修改和编辑文件内容。
- 执行权限(Execute):对于文件,允许组成员执行文件;对于目录,允许组成员进入目录并访问其中的文件。
- 其他用户权限(Other Permissions):
-
- 读权限(Read):允许其他用户查看和读取文件内容。
- 写权限(Write):允许其他用户修改和编辑文件内容。
- 执行权限(Execute):对于文件,允许其他用户执行文件;对于目录,允许其他用户进入目录并访问其中的文件。
可以使用chmod命令来修改文件和目录的权限。例如,chmod 755 file.txt 将文件file.txt的权限设置为-rwxr-xr-x,即所有者具有读、写、执行权限,组成员和其他用户只具有读和执行权限。
其中755转换成二进制是 111 101 101,对应的就是 -rwx r-x r-x。
在Linux中,创建文件时都会有默认权限,默认权限受到umask值的影响。一般情况下,新建文件的默认权限是666,新建目录的默认权限是777。但是这些默认权限会减去umask的值。例如,如果umask值为022,则新建文件的默认权限变为644,新建目录的默认权限变为755。
因此,Linux创建文件时的默认权限是666减去umask的值。默认情况下,umask值通常为022,所以一般情况下创建的新文件的默认权限是644,也就是所有者具有读写权限,而组成员和其他用户只有读权限。
umask的工作原理是通过“减去”的方式从基本权限(即文件为666,目录为777)中得出默认权限。例如,如果umask设置为022,则文件的默认权限为644(即666-022),目录的默认权限为755(即777-022)。这里的“减去”并非真正的减法运算,而是根据权限的位来进行的掩码运算。
为了理解umask的工作方式,可以将其看作是一个“屏蔽”值,它从基本权限中“屏蔽”掉一部分权限,从而形成最终的默认权限。因此,umask值越大,新文件或目录的默认权限就越严格。
需要注意的是,umask只影响新创建的文件和目录的默认权限,不会影响已经存在的文件和目录的权限。要改变已存在文件或目录的权限,需要使用chmod命令进行手动修改。
umask命令的用法如下:
umask [选项] [掩码值]
选项: S:以符号形式显示umask值。
掩码值:掩码值是一个三位八进制数,用于表示新文件和目录的默认权限掩码。每位数字分别代表所有者、组和其他用户的权限。
示例:
- 显示当前的umask值:
umask
- 设置umask值为022:
umask 022
- 以符号形式显示当前的umask值:
umask -S