【概述】
在 Linux 文件属性 中,介绍了使用 ls
命令查看文件的属主、属组、其他权限,以及使用 chmod
命令修改文件权限,下面,详细的介绍文件权限的相关内容
【默认权限】
文件默认权限是指,当用户新建一个文件或目录时权限的默认值,umask
命令用于指定默认权限
查看默认权限
在查看系统的默认权限时,有两种方法 umask
和 umask -S
直接使用 umask
命令,会给出 4 位数字,第一位是特殊权限用的,后面会进行详细介绍,后三位分别对应 user、group、other 的权限,其含义是该默认值需要减掉的权限(被拿掉的权限),r、w、x 分别对应了 4、2、1
在默认情况下,root 的默认权限会拿掉比较多的属性,其 umask
默认为 022,而对于一般用户,其 umask
默认为 002
如下图,输入 umask
后给出 0002
,这代表了用户、组未被拿掉任何权限,其他用户被拿掉写权限
而使用 umask -S
命令,会给出系统默认权限的字符形式。
修改默认权限
umask
也可用于修改默认权限,在其后跟 3 位分别对应 user、group、other 权限的数字,该数字是被拿掉的权限
如下图,将默认权限设为 222,代表 user、group、other 分别被拿掉了写权限
目录与文件的默认权限
一般创建的文件,其目的是用于数据记录,不应该有执行权限,只有 r、w 两个选项,即其权限最大是 666,默认权限为:-rw-rw-rw
而目录需要进入,这就与执行权限有关,因此其所有权限均为开放,即其最大权限是 777,默认权限为:drwxrwxrwx
当 umask
为 002 时,user 和 group 未被拿走任何权限,但 other 被拿走了 w 权限,那么当用户新建文件或目录时,有不同的权限:
- 新建文件:(-rw-rw-rw-)-(————w-)=>-rw-rw-r—
- 新建目录:(drwxrwxrwx)-(————w-)=>drwxrwxr-x
【特殊权限】
概述
文件的特殊权限有三个,分别是 SUID
、SGID
、SBIT
,这三个权限与系统账号和系统进程有关
之前介绍的权限,均为 r、w、x,而在特殊权限中,引入了另外两个标志,分别是 s
和 t
SUID 与 SGID
SUID 是 Set User ID,SGID 是 Set Group ID
我们知道,在 Linux 中,系统内核是根据进程的运行用户的 ID 来确定一个进程对资源的访问权限,而这个运行用户的 ID 就包括 UID 和 GID
在 Linux 系统中,当一个文件的 user 的可执行位被设为 s
,那么说明该文件被设置了 UID,即 Set UID(SUID);如果一个文件的 group 的可执行位被设为 S
,那么说明该文件被设置了 GID,即 Set GID(SGID)
SUID 权限仅可作用于文件,且对二进制程序有效,当一个文件被被设置 SUID 后,其有以下特点:
- 一个执行者若想执行该程序,需要拥有该程序的可执行权限(x)
- 可执行权限(x)仅在执行该程序的过程中有效
- 执行者将具有程序所有者的权限。
SGID 权限除了作用于文件(二进制程序)外,还可作用于目录
当一个文件被设置 SGID 后,其有以下特点:
- 一个执行者若想执行该程序,需要拥有该程序的可执行权限(x)
- 在执行过程中,将会获得该程序用户组的支持
而当一个目录被设置 SGID 后,其有以下特点:
- 只有当某用户拥有该目录的 r 和 x 权限时,才能进入目录
- 若用户具有该目录的 w 权限(可新建文件),则用户所创建的新文件的用户组与此目录组相同
- 用户在此目录下的有效用户组将会变成该目录的用户组
SBIT
SBIT 是 Sticky Bit,其标志位为 s
,目前只针对目录有效,其作用是:
- 当用户具有该目录的 w、x 权限时,将拥有写入权限
- 当用户在该目录下创建文件和目录时,仅有自己和 root 用户才有权利删除该文件
特殊权限的设置
对于基础三位 r、w、x 权限,在其前再加一位数字,并进行如下规定:
- 4 代表 SUID
- 2 代表 SGID
- 1 代表 SBIT
这样一来,使用 chmod
命令即可进行设置特殊权限
如下图,为 test.txt 文件加入 SUID 和 SGID 权限