《鸟哥的Linux私房菜-基础学习篇》笔记
文件权限概念
以查询root用户根目录为例:

第一列的10个字符就代表了这个文件的类型与权限:

解释一下10个字符的含义:
- 第一个字符代表这个文件是“目录、文件或者链接文件等”。
字母 | 含义 |
---|---|
d | 目录(例如图1文件名为.config) |
- | 目录(例如图1文件名为.initial-setup-ks.cfg) |
l (小写的L) | 表示为连接文件(link file) |
b | 表示设备文件里面的可供储存的接口设备(可随机存储设备) |
c | 表示设备文件里的串行端口设备,例如键盘、鼠标(一次性读取设备) |
- 接下来的9个字符,以3个为一组,且均为‘rwx’的3个参数的组合(实际上还有s和t参数,待会儿解释)。‘r’ = 可读(read),‘w’ = 可写(write),‘x’ = 可执行(execute)。需要注意的是,这3个权限的位置不会改变,如果没有权限,就会出现减号‘-’
文件特殊权限:SUID、SGID、SBIT
Set UID
当‘s'出现在文件所有者的‘x'权限上时,例如-rwsr-xr-x
,此时就被称为Set UID,简称为SUID的特殊权限。有如下限制与功能:
- SUID权限仅对二进制程序(binary program)有效;(目录无效)
- 执行者对于该程序需要具有x的可执行权限;
- 本权限仅在执行该程序的过程中有效(run-time);
- 执行者将具有该程序拥有者(owner)的权限。
栗子:用户改密码:

Set GID
当‘s'出现在用户组的‘x'权限上时,例如-rwx--s--x
,此时就被称为Set GID,简称为SGID的特殊权限。与SUID不同,SGID可以针对文件或者目录来设置。对于文件来说有如下功能:
- SGID对二进制程序有用;
- 程序执行者对于该程序来说,需具备x的权限;
- 执行者在执行的过程中将会获得该程序用户组的支持。
当目录设置了SGID的权限后,它将具有如下的功能:
- 用户若对此目录具有r与x权限时,该用户能够进入此目录;
- 用户在此目录下的有效用户组(effective group)将会变成该目录的用户组;
- 若用户在目录下具有w的权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同。
Sticky Bit
当‘t'出现在其他人的‘x'权限上时,例如drwxrwxrwt
,此时就被称为Sticky Bit,简称为SBIT的特殊权限。该权限只对目录有效,对文件已经没有效果了。对于目录的作用如下:
- 当用户对此目录具有w,x权限,即具有写入权限时;
- 当用户在该目录下创建文件或者目录时,仅有自己与root才有权利删除该文件。
更改文件权限
-
数字类型改变文件权限(推荐):
chmod 4761 /path
//设置结果为-rwsrw---x
SUID = 4 ; SGID = 2 ; SBIT = 1 ;
r = 4 ; w = 2 ; x = 1; -
符号类型改变文件权限:
chmod u=rwxs,go=r /path
//设置结果为-rwsr--r--
图5-符号类型改变普通文件权限方式 .png
u = 文件所有者权限
g = 文件所属用户组权限
o = 其他人权限
a = all(u+g+o)
默认权限
Linux默认情况为:
- 若用户创建‘文件’,则默认没有可执行(x)权限,即只有r、w这两个选项,也就是666,默认权限如为:
-rw-rw-rw-
。 - 若用户创建‘目录’,则由于x与是否进入此目录有关,因此默认为所有权限均开放,即为777,默认权限为:
drwxrwxrwx
。
注意:这不用最终的权限,最终权限需要‘减去’umask的分数。umask分数指的是“该默认值需要减掉的权限”。
- root的umask默认是:0022。
- 一般身份用户umask默认是:0002。
查看umask:umask
设置umask:umask 0002
最终的创建权限

网友评论