在linux系统中,存在两种类型的用户:root用户和普通用户。root用户几乎不受权限限制,而普通用户则受到严格的权限控制。
当使用ls -l命令查看目录内容时,会看到一系列字符,如下图所示:
这些字符的含义如下:
- 拥有者:表示文件或目录的所属者。
- 所属组:表示文件或目录所属的组。
-
第一个字符:
- d:表示目录。
- -:表示普通文件。
-
后面九个字符(每组三个):
- r表示读权限。
- w表示写权限。
- x表示执行权限。
这些权限分为三组:
- 第一组:拥有者的权限。
- 第二组:所属组的权限。
- 第三组:其他人的权限。
要改变这些权限,可以使用以下命令:
- u:改变拥有者的权限。
- g:改变所属组的权限。
- o:改变其他人的权限(other)。
也可以使用八进制方法进行权限更改:
- rwx:每一位权限可以用二进制表示,1表示有权限,0表示无权限。每组用八进制表示。
要更改文件或目录的所有者和所属组,需要使用以下命令:
- chown:更改拥有者。
- chgrp:更改所属组。
这些操作需要root权限。
进入一个目录需要什么权限呢?答案是需要x权限。
在目录内创建文件则需要w权限。
目录的初始权限为777,普通文件的初始权限为666。但实际显示的权限可能不同,这是因为umask的影响。umask中的权限不会出现在最终的权限中。
我的umask值是0002。
更改umask后,新创建的文件权限会发生变化。
最终的权限并不是简单的初始权限减去umask,而是通过位运算得出的:最终权限 = 初始权限 & (~umask)。
粘滞位(sticky bit)可以防止用户在共享目录中删除他人创建的文件或目录。例如,创建一个共享目录mytmp,并设置所有权限:
假设有两个用户,分别是temp和ML。
在没有设置粘滞位的情况下,用户可以在共享目录中删除其他用户的文件:
设置粘滞位后,用户就无法删除其他用户的文件了: