一、文件系统权限说明
1、权限格式
使用touch语句创建一个新的文件,使用ll指令查询一下就可以看到文件的现有权限:
①:长列表的第一个字符表示文件类型
- " - "是常规文件
- " d "是目录
- " l "是软连接
- 其他字符代表硬件设备(b和c),或者具有特殊用途的文件(p和s)
②:拥有该文件的用户(属主)的权限
③:拥有该文件的组(属组)的权限
④:其他所有用户的权限
⑤:属主,该文件属于哪个用户,即创建该文件的用户
⑥:属组,该文件属于哪个用户组,即创建该文件的用户的组
2、权限种类
权限 | 对文件的影响 |
---|---|
r(读取) | 可以读取文件的内容 |
w(写入) | 可以更改文件的内容 |
x(执行) | 可以作为命令执行文件 |
②③④中以三种权限为一组,即rwx为一组,若没有该权限则用 - 表示。
二、修改文件系统权限
用于更改权限的命令为chmod,意为“change mode”,可以配合 -R 选项以递归的方式对整个目录树中的文件进行权限设置。
1、通过符号法更改权限
chmod [-R] WhoWhatWhich file|directory
- Who:u(属主)| g(属组)| o(其他)| a (全部)
- What:+(添加)| -(删除)| =(精确设置)
- Which:r(读取)| w (写入)| x(执行)
例:
2、通过数值法更改权限
chmod [-R] ### file|directory
将权限列表划分成用户、组、其他三部分,并使用一个三位的八进制数进行表示,每个权限位拥有该权限则置1,没有该权限则置0,再将rwx的值相加即可。
权限位 | 值 |
---|---|
r | 4 |
w | 2 |
x | 1 |
按照上述规则,每个八进制数拥有以下几种取值:
权限 | 取值 |
---|---|
- - x | 1 |
- w - | 2 |
r - - | 4 |
- w x | 3 |
r - x | 5 |
r w - | 6 |
r w x | 7 |
文件类型默认为0,如需修改则写成4位八进制即可。
例:
chmod 777 test_file //- rwx rwx rwx
chmod 642 test_file //- rw- r-- -w-
chmod 531 test_file //- r-x -wx --x
三、更改文件和目录的用户或组所有权
1、更改所属用户或所属组
用于更改所有者的命令为chown,意为“change owner”,可以配合 -R 选项以递归的方式更改整个目录树的所有权。
chown [-R] [owner][:group] file|directory
例:
chown root test_file //修改文件所属用户
chown -R user1 test_dir //修改目录树所属用户
chown :user test_file //修改文件所属组
chown user1:user test_file //修改文件所属用户和所属组
2、更改所属组
还有一个直接用于更改所属组的命令为chgrp,意为“change group”,可以配合 -R 选项以递归的方式更改整个目录树的所有权。
chgrp [-R] group file|directory
例:
chgrp manager test_file //修改文件所属组
四、设置特殊权限
1、特殊权限对文件的影响
对于属主、属组和其他用户,均有一个特殊的权限,如下表:
2、设置特殊权限
可以使用chmod指令进行特殊权限的设置,设置后会在执行(x)的位置显示特殊权限。
例:
五、更改默认文件权限
创建新文件或者目录时,会给文件或目录分配一个初始权限,如果是创建新的目录操作系统会默认分配权限0777(drwxrwxrwx),如果是创建新的常规文件操作系统会默认分配权限0666(-rw-rw-rw-)。
此外shell还会设置一个umask,以进一步限制初始设置的权限。这是一个八进制位掩码,用于清除由该进程创建的新文件和目录的权限,掩码设置原理同数值法控制文件权限相同,若该位置1则新创建的文件或目录中该位对应的权限将会被清除。
例:
文件创建后反映出的最终属性是由默认分配权限加umask共同控制的,即在默认分配的基础上减掉umask清除的权限即为最终创建文件或目录时会拥有的权限。
六、设置指定用户/组对文件的控制权限
1、获取详细的文件权限
使用getfacl语句指定文件名可以修改文件或目录详细的权限信息:
getfacl file|directory
例:
2、修改详细的文件权限
使用setfacl语句指定文件名可以修改文件或目录详细的权限信息:
-o如下图:
通常可以使用 -m 来添加/修改指定用户/组/其他的权限,可以使用 -x 来删除指定用户/组的权限,使用格式如下。
setfacl -m user|group|mask|other:[name]:Which file|directory
setfacl -x user|group|mask|other:[name]:Which file|directory
例:
注意:只有通过 -m 添加的指定用户/组的权限才能通过 -x 进行删除。