一、权限的介绍
1.权限的含义
在ls命令中,长格式显示的第一列就是文件的权限,例如:
其中第一列权限为如果不计算最后的“.”,则共有10位,“.”的含义是:GNU ’ ls’使用“.”字符指示带有SELinux的文件安全上下文,但没有其他替代访问方法。
- 第1位代表文件类型。Linux 不像Windows使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看
文件类型表示符 | 含义 |
---|---|
- | 普通文件 |
b | 块设备文件,这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件 |
c | 字符设备文件,这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等 |
d | 目录文件,Linux中一切皆文件,所以目录也是文件的一种 |
l | 软链接文件 |
p | 管道符文件,这是一种非常少见的特殊设备文件 |
s | 套接字文件,这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件 |
- 第2~4位代表文件所有者权限,如果有字母则代表有对应的权限,如果是“-”则代表没有对应的权限
权限 | 含义 |
---|---|
r | read,读取权限 |
w | write,写权限 |
x | execute,执行权限 |
- 第5~7位代表所属组的权限,同样拥有“rwx”权限
- 第8~10位代表其他人的权限,同样拥有“rwx”权限
2.基本权限命令
首先来看修改权限的命令chmod
,其基本信息如下
- 命令名称:chmod
- 英文原意:change file mode bits
- 所在路径:/bin/chmod
- 执行权限:所有用户
- 功能描述:修改文件的权限模式
2.1命令格式
chmod [选项] 权限模式 文件名
-R:递归设置权限,也就是给子目录中的所有文件设定权限
2.2权限模式
chmod命令的权限模式的格式是[ugoa][[+\-=][perms]]”,也就是“[用户身份][[赋予方式][权限]]
的格式
- 用户身份
用户身份 | 含义 |
---|---|
u | 所有者(user) |
g | 所属组(group) |
o | 其他人(other) |
a | 全部身份(all) |
- 赋予方式
赋予方式 | 含义 |
---|---|
+ | 加入权限 |
- | 减去权限 |
= | 设置权限 |
2.3数字权限
数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观
- 4:代表“r” 权限
- 2:代表“w”权限
- 1:代表“x”权限
2.4常用权限
数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉
- 644:这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限
- 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限
- 777:这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患
二、基本权限的作用
2.1权限含义的解释
首先,读、写、执行权限对文件和目录的作用是不同的
- 权限对文件的作用
权限 | 权限对文件的作用 |
---|---|
读“r” | 对文件有读权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读权限,就可以对文件执行cat、more、less、head、tail等文件查看命令 |
写“w” | 对文件有写权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写权限,就可以对文件执行vim、echo等修改文件数据的命令。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果想要删除文件,则需要对文件的上级目录拥有写权限 |
执行“x” | 对文件有执行权限,代表文件拥有了执行权限,可以运行。在Linux中,只要文件有执行权限,这个文件就是执行文件了。只是这个文件到底能不能执行,不仅需要执行权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行权限是最高权限 |
- 权限对目录的作用
权限 | 权限对目录的作用 |
---|---|
读“r” | 对目录有读权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读r 权限,就可以在目录下执行Is命令,查看目录下的内容了 |
写“w” | 对目录有写权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写权限,就可以在目录下执行touch、 rm、cp、 mv命令。对目录来说,写权限是最高权限 |
执行“x” | 目录是不能运行的,那么对目录拥有执行权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行权限,就可以对目录执行cd命令,进入目录 |
2.2目录的可用权限
- 0:任何权限都不赋予
- 5:基本的目录浏览和进入权限
- 7:完全权限
三、所有者和所属组命令
chown命令
chown
是修改文件和目录的所有者和所属组的命令
- 命令名称:chown
- 英文原意:change file owner and group
- 所在路径:/bin/chown
- 执行权限:所有用户
- 功能描述:修改文件和目录的所有者和所属组
命令格式
chown [选项] 所有者:所属组 文件或目录
-R:递归设置权限,也就是给子目录中的所有文件设置权限
- 普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者
- 普通用户可以修改所有者是自己的文件的权限
四、umask默认权限
4.1查看系统的umask权限
4.2umask权限的计算方法
我们需要了解一下新建文件和目录的默认最大权限:
- 对文件来讲,新建文件的默认最大权限是666,没有执行权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予
- 对目录来讲,新建目录的默认最大权限是777,这是因为对目录而言,执行权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没什么危险
按照官方的标准算法,umask默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解,不推荐。所以我们在这里还是按照权限字母来分析umask权限的计算方法。我们就按照默认的umask值是022来分别计算–下新建文件和目录的默认权限吧
- 文件的默认权限最大只能是666, 而umask的值是022
“-rw-rw-rw-” 减去“-----w–w-” 等于“-rw-r–r–” - 目录的默认权限最大可以是777, 而umask的值是022
“drwxrwxrwx”减去“-----w–w-”等于“drwx-r-xr-x”
注意:umask权限计算绝对不是数字直接相减