第1章 Linux系统权限知识及应用实践
1.1 文件权限介绍
1.1.1 文件权限位说明
Linux文件或目录的基础权限位是由9个字符来控制的,每3位字符为一组。
权限定义字母:
1) r代表读权限,用数字4表示;
2) w代表写权限,用数字2表示;
3) x代表执行权限,用数字1表示;
4) -代表没有权限,用数字0表示;
1.2 Linux文件及目录权限核心知识说明
1.2.1 普通文件对应读、写、执行权限的详细说明
1、 可读r:表示具有读取、浏览文件内容的权限。
2、 可写w:表示具有新增、修改、删除文件内容的权限。
3、 可执行x:表示具有执行文件的权限。
对于可读r,有两点需要说明:
1) 如果没有可读r配合,那么使用vim编辑文件时会提示无法编辑(但可强制编辑),可以使用echo等命令进行重定向或追加。
2) 删除文件或创建文件的权限是受父目录(上一级目录)的权限控制的(因为文件名没有存放在Inode里,而是在上级目录的Block里存放着的,若修改上级目录的Block (删除文件本质),当然会受上级目录的Inode的权限控制),和文件本身的权限无关,因此,文件本身的可写w权限和文件是否能被删除和改名无关。
对于可执行x,需要注意以下三点。
1) 首先文件的本身要能够执行(命令或脚本)。
2) 如果是普通用户,同时还需要具备可读r的权限才能执行文件。
3) 而root用户只要有可执行x的权限就能执行文件。
1.2.2 目录对应读、写、执行权限的详细说明
1、 可读r:表示具有浏览目录下面文件及子目录内容的权限。
2、 可写w:表示具有增加、删除或修改目录内文件的权限。。
3、 可执行x:表示具有进人目录的权限。
1.3 命令chmod:设置及更改文件和目录的权限
1.3.1 chmod命令是用来改变文件或目录权限的命令,但只有文件的属主和超级用户root才能够执行这个命令。
1.3.2 命令参数:
1.3.3 数据权限表:
1.3.4 使用权限字符设置权限格式:
1、 用户或用户组的定义:
1) u(owner/user)代表属主用户;
2) g(group)代表属组;
3) o(other)代表其他用户;
4) a(all)或者不写,同时代表ugo属主、属组和其他用户。
2、 权限增减字符:
1)+:添加权限;
2)-:取消权限;
3)=:取消其他所有权限,然后赋予给定的权限。
1.4 命令chown:改变文件用户和组
1.4.1 语法格式
1.4.1.1 更改用户和组
1.4.1.2 只更改用户
1.4.1.3 只更改用户组
注:只更改用户组的情况下也可以使用chgrp命令,格式为:chgrp 用户组 文件,这里的用户组前不用加.。
1.5 安全权限的临界点:
文件不想被修改被执行:644
目录不想被修改(删除、移动、创建)被执行(进入):755
1.6 umask:默认权限掩码
umask是通过八进制的数值来定义用户创建文件或目录的默认权限的。系统会根据预先设定的umask值计算出默认情况下创建的文件或目录权限。
1.6.1 通过umask计算默认权限方法
1.6.1.1 文件默认权限计算:创建文件默认最大的权限是666(-rw-rw-rw-),其默认创建的文件没有可执行权限x位。
umask都为偶数,默认权限用减法
umask有奇数,默认权限用减法后奇数位加1
1.6.1.2 目录默认权限计算(umask没有奇偶之分):创建目录默认最大权限777(-rwxrwxrwx),默认创建的目录属主是有x执行权限的,即允许用户进入。
1.6.2 umask设置与Linux默认权限设置
1.7 特殊权限位
在Linux系统的权限中,除了9位基础权限外,还有3位特殊权限。
1.7.1 suid位:
suid(setuid)位通过S字符标识,存在于基本权限的用户权限位的x权限对应的位置,如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识,suid的s对应的数字权限为4,完整权限用八进制数4000表示。
简单地说,suid的作用就是让普通用户可以在执行某个设置了suid位的二进制命令或程序时,拥有和命令对应属主(一般为root管理员)一样的身份和权限(默认情况)。
1.7.2 sgid位:
sgid(setgid)位同样是通过S字符来标识,但是,sgid位存在于基本权限的用户组权限位的x权限对应的位置,如果用户组权限位对应的x权限位上有x权限,则sgid就用小写的s标识,suid的s对应的数字权限为2,完整的权限用八进制数2000表示。
1.7.3 sticky(粘滞位)知识简介
sticky(粘滞)位通过字符T标识,存在于基本权限的其他用户位对应的x权限位上,如果其他用户位的x权限位上有x权限,则sticky(粘滞)位通过小写的t标识,对应的数字权限是1,完整的权限用八进制数1000表示。
1.7.4 特殊权限修改方法:
代表各特殊权限的八进制数最高位加和后(或单独)放在基础权限数字前面。
修改方法:
例如:
chmod 7755 abc
ls -l abc
-rwsr-sr-t 1 root root 0 Oct 7 23:42 abc