Linux系统9位基础权限体系
文件权限
* r权限 可读 对文件具有读取及查看文件内容的全新啊
* w权限 可写 对文件具有新增、修改文件内容的权限
1. 删除文件与文件本身权限无关,受上级目录权限控制
2. 如果文件没有r权限,vi编辑文件时会提示无权限,可通过echo重定向或追加
* x权限 可执行 对文件具有执行的权限
1. 文件本身要能够执行
2. 普通用户需要具备r权限才能够执行;root用户只需要有x权限就可以执行
目录权限
* r权限 具有浏览目录下文件及子目录的权限
1. 如果没有r权限,用户无法进入到目录,即无法cd目录
2. 如果没有r权限,ls列目录时可以看到所有文件名,但文件属性信息会变成问号字符,同时会提示无法访问目录下的文件
* w权限 表示具有增加、删除目录内文件名的权限(需要x权限配合)
* x权限 可执行权限 表示具有进入目录的权限。但如果没有r权限,无法列目录和文件,没有w权限无法新建和删除
Linux系统下默认权限控制umask
Linux系统中,用户的默认权限是由umask的值来控制的。umask是通过八进制的数值来定义用户创建文件或目录的默认权限的,其对应数值表示禁止的权限 。
正常情况下,root超级用户的系统默认umask值为022,普通用户的默认umask值为002
文件及目录权限计算方法
1. 文件默认权限的计算方法
文件默认权限为最大的权限为666减去umask的值,如结果权限位是奇数的话,奇数位+1
例:root用户默认umask为022,所以其创建的文件为644(666-022所得)
[root@master ~]# umask 0022 [root@master ~]# touch file.txt [root@master ~]# ls -l file.txt -rw-r--r--. 1 root root 0 5月 29 20:22 file.txt
2. 目录默认权限的计算方法
目录默认权限为最大的权限为777减去umask的值
例:root用户默认umask为022,所以其创建的文件为755(777-022所得)
[root@master ~]# mkdir test [root@master ~]# ll drwxr-xr-x. 2 root root 4096 5月 29 20:35 test
Linux系统12特殊权限体系
SUID
它是针对程序和二进制命令的 chmod 4755 命令==>设置suid
用户或属主对应的前三位权限的x位上有s表示有suid权限,当x位上没有小写x执行权限时,suid的权限显示为大S
suid作用是让普通用户可以以root角色运行只有root用户才能运行的程序和命令,或程序命令对应本来没有操作权限的文件。suid为某一命令设置特殊权限(给所有人用)。
例:当普通用户无法删除文件时,可通过设置rm命令suid权限来达到删除目的
suid修改的是执行命令(passwd),而不是处理的目标文件(shadow)
仅针对二进制命令有效,不能用在shell等类似脚本等文件上
二进制命令程序需配合x可执行权限
suid权限仅在程序命令执行过程中有效
执行suid命令的任意系统用户都可以获得该命令程序在执行期间对应的拥有者所有权限
suid是一把双刃剑,是比较危险的功能,对系统安全有一定的威胁。系统suid的无用功能取消suid权限(安全优化)
例:chmod u-s /bin/ping
SGID
与suid不同的是,sgid既可以针对文件,也可以针对目录。它是针对用户组权限位的。 chmod 2755 命令==>设置sgid
对文件的功能
仅对二进制命令有效
需要x可执行权限
执行命令的任意用户可以获得该命令程序执行期间所属组的权限
对目录的功能
所有用户创建文件,默认用户和组都是本身
可以让用户在此目录下创建文件盒目录,具有和此目录相同的用户组设置。sgid主要用于目录中,当为某个目录设置了sgid以后,该目录中新创建的文件具有该目录的所属组权限,而不是创建该文件的用户的默认所有者
例:
[root@master data]# mkdir admins [root@master data]# useradd adminsuser [root@master data]# chown .adminsuser admins/ [root@master data]# touch admins/test.txt [root@master data]# ll admins/
总用量 0
-rw-r--r--. 1 root root 0 5月 29 21:24 test.txt
[root@master data]# chmod g+s admins/ 设置目录sgid
[root@master data]# touch admins/test.sh
[root@master data]# ll admins/
总用量 0
-rw-r--r--. 1 root adminsuser 0 5月 29 21:29 test.sh