Day15-Linux系统特殊权限知识精讲

Day15-Linux系统特殊权限知识精讲

为什么创建文件默认权限为644,目录为755???

umask 权限掩码。控制系统的文件和目录的默认权限。

[root@oldboy oldboy]# umask 
0022

针对文件来说:默认权限计算方法
6 6 6

0 2 2 -

6 4 4 ###系统的文件默认权限

umask掩码的3位每一位数字是否有【奇数】,如果有奇数(奇数位加1)

测试:

[root@oldboy oldboy]# umask 021
[root@oldboy oldboy]# umask 
0021
[root@oldboy oldboy]# touch f021
[root@oldboy oldboy]# ls -l f021 
-rw-r--rw-. 1 root root 0 521 10:40 f021

计算:
6 6 6

0 2 1 -

6 4 5 ###系统的文件默认权限

0 0 1

6 4 6

测试:

[root@oldboy oldboy]# umask 033
[root@oldboy oldboy]# umask 
0033
[root@oldboy oldboy]# touch f033
[root@oldboy oldboy]# ls -l f033
-rw-r--r--. 1 root root 0 521 10:42 f033

结论:

文件默认权限结论

  1. 权限从666开始计算。
  2. 如果偶数,正常做减法。
  3. 如果是奇数,奇数位加一。

针对目录默认权限。

  1. 权限从777开始计算。
  2. 和掩码正常做减法。

测试:

[root@oldboy oldboy]# mkdir d033
[root@oldboy oldboy]# ls -ld d033
drwxr--r--. 2 root root 6 521 10:44 d033
[root@oldboy oldboy]# umask 045
[root@oldboy oldboy]# mkdir d045
[root@oldboy oldboy]# ls -ld d045
drwx-wx-w-. 2 root root 6 521 10:45 d045

UID大于199,并且用户和组同名,umask为002

cat /etc/bashrc
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ];
thenumask 002
elseumask 022
fi

/home/oldboy 默认700, #控制/etc/login.defs

想一想???为什么系统把默认权限定为:

默认644,目录755呢? #安全临界值

【有关权限生产环境应用案例及思路:】

运营电商 jd,站点目录给什么权限安全呢?

目录755

[root@oldboy oldboy]# mkdir /data/html -p
[root@oldboy oldboy]# ls -ld /data/html/
drwxr-xr-x. 2 root root 6 521 11:07 /data/html/

web服务运行时候有一个【虚拟用户www】,

1)虚拟用户www 可进入可查看程序文件,不可以写、删文件。

[root@oldboy oldboy]# useradd www
[root@oldboy oldboy]# chown -R www.www /data/html
[root@oldboy oldboy]# ls -ld /data/html
drwxr-xr-x. 2 www www 6 521 11:07 /data/html  #可以写、删文件

普通站点目录:【用户和组都是root,权限755】

[root@oldboy oldboy]# ls -ld /data/html
drwxr-xr-x. 2 root root 6 521 11:07 /data/html/[root@oldboy oldboy]# mkdir /data/html/upload -p ###存放图片,文件
[root@oldboy oldboy]# ls -ld /data/html/upload/
drwxr-xr-x. 2 root root 6 521 11:15 /data/html/upload/

图片、文件目录授权:【用户和组www,权限755】

[root@oldboy oldboy]# chown -R www.www /data/html/upload/
[root@oldboy oldboy]# ls -ld /data/html/upload/
drwxr-xr-x. 2 www www 6 521 11:15 /data/html/upload/

解决upload上传目录安全:

  1. 不让上传:程序:控制这个目录上传的内容只能是.jpg,.zip。

  2. 不让执行:nginx:针对upload访问的时候,除了.jpg,.zip之外,不提供访问。

  3. 不让执行:动态服务器和静态服务器分离,访问的时候只有静态服务器(不安装PHP,java,python)

  4. 不让执行:磁盘上挂载的时候,设置禁止程序运行(二进制程序)。

不管什么业务都没有改程序文件的需求。

程序文件 [644 root root]

程序文件 [644 www www] #不推荐

三剑客sed 企业木马案例:

[root@oldboy oldboy]# touch suid.txt
[root@oldboy oldboy]# ls -l suid.txt
-rw-r--r--. 1 root root 0 521 11:55 suid.txt

linux特殊权限位:

[suid]

1)suid(setuid)位通过S字符标识。

2)存在于基本权限的用户权限位的x权限对应的位置。

3)如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识。

4)suid的s对应的数字权限为4。

5)完整权限用八进制数4000表示。

创建文件备用测试

[root@oldboy oldboy]# touch suid.txt
[root@oldboy oldboy]# ls -l suid.txt
-rw-r--r--. 1 root root 0 521 11:55 suid.txt

数字权限设置suid测试:

chmod 4644 suid.txt[root@oldboy oldboy]# chmod 4644 suid.txt
[root@oldboy oldboy]# ls -l suid.txt
-rwSr--r--. 1 root root 0 521 11:55 suid.txt
[root@oldboy oldboy]# chmod u+x suid.txt
[root@oldboy oldboy]# ls -l suid.txt
-rwsr--r--. 1 root root 0 521 11:55 suid.txt

取消设置suid测试:

[root@oldboy oldboy]# chmod 644 suid.txt
[root@oldboy oldboy]# ls -l suid.txt
-rw-r--r--. 1 root root 0 521 11:55 suid.txt

字符设置suid

chmod u+s suid.txt
ls -l suid.txt
chmod u-s suid.txt
ls -l suid.txt

为什么会有SUID?

例子:普通用户修改密码。

[oldboy@oldboy ~]$ passwd
更改用户 oldboy 的密码 。
为 oldboy 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

1)修改密码passwd =======>>修改/etc/shadow文件

oldboy用户使用passwd命令,修改/etc/shadow文件,来实现修改密码的。

ls -l /etc/shadow 
[oldboy@oldboy ~]$ ls -l /etc/shadow 
----------. 1 root root 2484 521 12:10 /etc/shadow

传统权限分析,oldboy是其他用户,修改/etc/shadow权限—,没有权限修改。。

事实呢?改了

suid的特殊作用:可以绕过基础权限体系,可以修改没有权限修改的文件。

基于二进制命令的。

[oldboy@oldboy ~]$ ls -l `which passwd`
-rwsr-xr-x. 1 root root 27856 41 2020 /bin/passwd

在这里插入图片描述

1)给一个命令设置suid以后,所有使用这个命令的用户,都拥有和这个命令对应的用户的权限。

问题:
cd 不好用
1)bash内置命令,C6系统中没有对应文件。
2)有对应文件。授权系统文件的cd,执行cd很可能执行的是bash内置的cd。
3)

[root@oldboy ~]# which cd
/usr/bin/cd
[root@oldboy ~]# cd /usr/bin/
[root@oldboy bin]# mv cd cdd
[root@oldboy bin]# cd /root
[root@oldboy ~]# ls cdd
ls: 无法访问cdd: 没有那个文件或目录
[root@oldboy ~]# cd /usr/bin
[root@oldboy bin]# ls cdd
cdd

小结:

1)suid功能是是针对二进制命令或程序的,不能用在shell等类似脚本文件上。

2)用户或属主对应的前三位权限的x位上,如果有s(S)就表示具备 suid 权限。

3)suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有和命令对应属主(一般为 root 管理员)一样的身份和权限(默认)。

4)二进制命令程序需要有可执行权限x配合才行。

5)suid对应的身份和权限仅在程序命令执行过程中有效。

6)suid 是一把双刃剑,是一个比较危险的功能,对系统安全有一定的威胁,企业里用户授权可以使用 sudo 等替代 suid 功能。授权 suid 破坏性

7)在进行安全优化时,系统中默认设置了suid权限的命令要取消掉。

6)最后+授权suid破坏性


[root@oldboy bin]# find /bin/ -type f -perm 4755|xargs ls -l
-rwsr-xr-x. 1 root root 73888 89 2019 /bin/chage
-rwsr-xr-x. 1 root root 57656 89 2019 /bin/crontab
-rwsr-xr-x. 1 root root 32096 1031 2018 /bin/fusermount
-rwsr-xr-x. 1 root root 78408 89 2019 /bin/gpasswd
-rwsr-xr-x. 1 root root 44264 41 2020 /bin/mount
-rwsr-xr-x. 1 root root 41936 89 2019 /bin/newgrp
-rwsr-xr-x. 1 root root 27856 41 2020 /bin/passwd
-rwsr-xr-x. 1 root root 23576 41 2020 /bin/pkexec
-rwsr-xr-x. 1 root root 32128 41 2020 /bin/su
-rwsr-xr-x. 1 root root 31984 41 2020 /bin/umount

suid生产场景实际用途。

  1. 所有普通用户都能用到
  2. 普通用户想修改没有权限文件时候使用。
  3. 命令是没有破坏作用的。比如:ping,passwd

sgid权限知识

对于二进制命令或者程序来说,sgid的功能和suid基本相同,唯一的区别是suid是获得命令所属用户的身份和权限,而sgid是获得命令的所属用户组的身份和权限,因此,有关sgid对于二进制命令或者程序方面的知识就不详细叙述了。

1.suid核心知识小结

1)与suid不同的是,sgid既可以针对文件,也可以针对目录设置!

2)sgid的权限是针对用户组权限位的。

对于文件来说,sgid的功能如下:

1)sgid仅对二进制命令及程序有效。

2)二进制命令或程序,也需要有可执行权限x配合。

3)执行命令的任意用户可以获得该命令程序执行期间所属组的身份和权限。

理解sgid:

locate====>读/var/lib/mlocate/mlocate.db <====updatedb

[root@oldboy bin]# ls -l /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 1423565 521 03:23 /var/lib/mlocate/mlocate.db

结论没有权限可以查询/var/lib/mlocate/mlocate.db

事实上是可以查的。

[oldboy@oldboy ~]$ locate cp

原因:就是locate命令被设置了sgid

[oldboy@oldboy ~]$ ls -l `which locate`
-rwx--s--x. 1 root slocate 40520 411 2018 /bin/locate

测试:取消sgid

[root@oldboy bin]# chmod g-s /bin/locate 
[root@oldboy bin]# ls /bin/locate -l
-rwx--x--x. 1 root slocate 40520 411 2018 /bin/locate

查看:

[oldboy@oldboy ~]$ locate cp
locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 权限不够

参考解答:

[root@oldboy ~]# mkdir /home/admins             #<==创建共享目录admins。
[root@oldboy ~]# groupadd adminuser             #<==添加用户组adminuser。
[root@oldboy ~]# ls -ld /home/admins 
drwxr-xr-x. 2 root root 4096 Apr 30 16:54 /home/admins
[root@oldboy ~]# chgrp adminuser /home/admins/  #<==给adminis目录授权adminuser用户组。
[root@oldboy ~]# ls -ld /home/admins
drwxr-xr-x. 2 root adminuser 4096 Apr 30 16:54 /home/admins  #<==查看授权结果。
[root@oldboy ~]# touch /home/admins/oldboy.txt  #<==创建测试文件。
[root@oldboy ~]# ls -l /home/admins/

对于目录(继承目录所属的组)来说,sgid 的功能如下:

1)Linux里默认情况所有用户创建文件,默认用户和组都是自身。

2)sgid可以让用户在此目录下创建的文件和目录具有和此目录相同的用户组设置。

setgid位主要用在目录中,在为某个目录设置了setgid位以后,在该目录中新创建的文件具有该目录的所属组权限,而不是创建该文件的用户的默认所有者。这样使得在多个用户之间共享一个目录中的文件变得简单。

来看一道RHCE认证考试题(了解即可)。

创建共享目录/home/admins,要求属组为adminuser,adminuser组成员对admins目录有写入、读取和执行的权限,其他所有用户没有任何权限(root除外),在/home/admins目录中创建的文件会自动继成adminuser组。

参考解答:

[root@oldboy ~]# mkdir /home/admins             #<==创建共享目录admins。
[root@oldboy ~]# groupadd adminuser             #<==添加用户组adminuser。
[root@oldboy ~]# ls -ld /home/admins 
drwxr-xr-x. 2 root root 4096 Apr 30 16:54 /home/admins
[root@oldboy ~]# chgrp adminuser /home/admins/  #<==给adminis目录授权adminuser用户组。
[root@oldboy ~]# ls -ld /home/admins
drwxr-xr-x. 2 root adminuser 4096 Apr 30 16:54 /home/admins  #<==查看授权结果。
[root@oldboy ~]# touch /home/admins/oldboy.txt  #<==创建测试文件。
[root@oldboy ~]# ls -l /home/admins/
total 0
-rw-r--r--. 1 root root 0 Apr 30 19:59 oldboy.txt  #<==文件默认用户和组都是root。
[root@oldboy ~]# chmod 2770 /home/admins  #<==授权sgid权限给admins目录。
[root@oldboy ~]# ls -ld /home/admins/
drwxrws---. 2 root adminuser 4096 Apr 30 20:10 /home/admins/  #<==查看授权结果。
[root@oldboy ~]# touch /home/admins/newfile.txt  #<==在创建新文件。
[root@oldboy ~]# ls -l /home/admins/
total 0
-rw-r--r--. 1 root adminuser 0 Apr 30 20:04 newfile.txt  
#<==新创建的文件用户组为adminuser了,而非默认的root了。
-rw-r--r--. 1 root root      0 Apr 30 19:59 oldboy.txt

整个配置过程,已满足题意需求。

粘滞位 sticky Bit(sbit)知识

粘贴位的功能现在很少用了,不过对于像/tmp 目录这样的,是整个系统用户临时文件存放地,还是有点意义。
一个目录既使它的所有权限都开放了,即为rwxrwxrwx,而同时设置了粘贴位,那么除非目录的属主和 root用户有权限删除它,除此之外其他用户是不能删除这个目录的。

粘贴位的用途一般是把一个文件夹的权限都特开,然后来共享文件,像/tmp 目录一样。虽然方便,但是带来了一定的安全隐患,生产环境应禁止设置粘滞位权限。

特殊权限位对比说明表格

类别SUIDSGIDsticky
字符表示SST
占据位置基本权限x位基本权限x位基本权限x位
基本权限位有xsst
数字表示421
八进制表示400020001000
特护权限作用针对用户位针对用户组其它用户

特殊权限位对比说明表格 占据位置,前三位中 中三位中 后三位中

方便,但是带来了一定的安全隐患,生产环境应禁止设置粘滞位权限。

特殊权限位对比说明表格

类别SUIDSGIDsticky
字符表示SST
占据位置基本权限x位基本权限x位基本权限x位
基本权限位有xsst
数字表示421
八进制表示400020001000
特护权限作用针对用户位针对用户组其它用户

特殊权限位对比说明表格 占据位置,前三位中 中三位中 后三位中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么0.1+0.2不等于0.3

一、JS内部的计算是以二进制形式进行的 js里整数和小数转为二进制形式的方法是不一样的&#xff1a; 二、Number类型使用IEEE754标准64位存储 双精度浮点数&#xff08;double类型&#xff09;为每个数分配64位空间&#xff0c;并以科学计数法的方式存储&#xff1a; 那么对于…

C++入门学习(三十三)函数的定义,两数之和函数作为例子

为什么使用函数&#xff1a;将一些重复的代码封装&#xff0c;方便以后的使用&#xff0c;直接调用即可。 先给一个例子&#xff1a; // 函数返回整数类型 int addNumbers(int a, int b) { // 函数体 int sum a b; return sum; // 返回计算得到的和 } 返回值类型&…

基于卷积神经网络的图像去噪

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 基于卷积神经网络的图像去噪 完整代码:基于卷积神经网络的图像去噪.rar资源-CSDN文库 https://download.csdn.net/download/abc9918351…

(全注解开发)学习Spring-MVC的第三天

全注解开发 第一部分 : 1.1 消除spring-mvc.xml 这些是原来spring-mvc.xml配置文件的内容 <!--1、组件扫描, 使Controller可以被扫描到--><context:component-scan base-package"com.itheima.controller"/><!--2、非自定义的Bean, 文件上传解析器--&…

mysql-多表查询-外连接

一、外连接查询语法 &#xff08;1&#xff09;左外连接 select 所要查询的内容 from 左表 left outer join 右表 on 条件; &#xff08;2&#xff09;右外连接 select 所要查询的内容 from 左表 right outer join 右表 on 条件; 二、示例 用以下两张表示例 左外连接 右外…

Pyglet综合应用|推箱子游戏之关卡图片载入内存

目录 读取图片 分割图片 综合应用 本篇为之前写的博客《怎样使用Pyglet库给推箱子游戏画关卡地图》的续篇&#xff0c;内容上有相关性&#xff0c;需要阅读的请见链接&#xff1a; https://hannyang.blog.csdn.net/article/details/136209138 「推箱子」是一款风靡全球的益…

system V 共享内存

1.共享内存的原理 要理解共享内存的原理&#xff0c;首先我们得记起进程间通信的前提&#xff1a;必须让不同的进程看到同一份资源&#xff08;必须由OS提供&#xff09; 我们都知道进程都会有自己的进程地址空间&#xff0c;然后都会通过页表与物理内存进行映射&#xff0c;…

图纸透明加密:保护机械图纸安全的新方法

随着信息技术的不断发展&#xff0c;机械制造行业对于图纸安全的需求越来越高。机械图纸是企业的核心竞争力之一&#xff0c;泄露可能导致严重的商业损失和技术风险。为了解决这一问题&#xff0c;图纸透明加密成为了一种新的保护机械图纸安全的方法。本文将介绍图纸透明加密的…

面试字节跳动,我被怼的好狠,怎一个惨字了得

人们都说&#xff0c;这个世界上有两种人注定单身&#xff0c;一种是太优秀的&#xff0c;另一种是太平凡的。 我一听呀&#xff1f;那我这岂不是就不优秀了吗&#xff0c;于是毅然决然和女朋友分了手。 人们都说&#xff0c;互联网寒冬来了&#xff0c;这个时候还在大面积招人…

从零开始手写mmo游戏从框架到爆炸(二十一)— 战斗系统二

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 上一章&#xff08;从零开始手写mmo游戏从框架到爆炸&#xff08;二十&#xff09;— 战斗系统一-CSDN博客&#xff09;我们只是完成了基本的战斗&#xff0c;速度属性并没有…

R语言数据分析(三)

R语言数据分析&#xff08;三&#xff09; 文章目录 R语言数据分析&#xff08;三&#xff09;一、可视化步骤1.1 创建ggplot1.2 添加美学和图层1.3 简化代码 二、可视化分布2.1 分类变量2.2 数值变量 三、可视化关系3.1 数值变量和分类变量3.2 两个分类变量3.3 两个数值变量3.…

虚拟机器centos7无法识别yum 命令异常处理笔记

问题现象 启动虚拟机后执行ipconfig 提示未找到该命令,然后执行yum install -y net-tools提示 curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"的错误 [roothaqdoop~]# ifconfig -bash: ifconfig: 未找到命令 [roothadoop~]# yum install …

超级抽象的前端2

vue3的调用方法失败的原因 function validateConfirm(rule, value, callback) {if (value ! form.password) {callback(new Error(两次输入的密码不一致))} else {callback()}function showAgreement() {dialogVisible.value true}function submitForm() {// 这里是提交表单的…

逆推求期望DP

我的开始的想法&#xff1a;状态设置 dp[i][j] 为玩了 i 个职业 j 个阵营的期望天数&#xff0c;初始值很好解决 dp[1][1]1 &#xff0c;但是有个问题&#xff0c;每对 (i,j) 除了边界那里&#xff0c;会由三个地方来决定这一个(i-1,j-1)(i,j-1)(i-1,j)&#xff0c;所以&#x…

【spring】 ApplicationListener的使用及原理简析

文章目录 使用示例&#xff1a;原理简析&#xff1a; 前言&#xff1a;ApplicationListener 是spring提供的一个监听器&#xff0c;它可以实现一个简单的发布-订阅功能&#xff0c;用有点外行但最简单通俗的话来解释&#xff1a;监听到主业务在执行到了某个节点之后&#xff0c…

【ACM出版】第五届计算机信息和大数据应用国际学术会议(CIBDA 2024)

第五届计算机信息和大数据应用国际学术会议&#xff08;CIBDA 2024&#xff09; 2024 5th International Conference on Computer Information and Big Data Applications 重要信息 大会官网&#xff1a;www.ic-cibda.org 大会时间&#xff1a;2024年3月22-24日 大会地点&#…

Atcoder ABC341 A-D题解

比赛链接:ABC341 Problem A: 先签个到。 #include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;for(int i0;i<n;i)cout<<"10"<<endl;cout<<"1"<<endl;return 0; } Problem B: 继续签。 #i…

week04day03(爬虫 beautifulsoup4、)

一. 使用bs4解析网页 下载bs4 - pip install beautifulsoup4 使用的时候 import bs4专门用于解析网页的第三方库 在使用bs4的时候往往会依赖另一个库lxml pip install lxml 网页代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><…

【Python笔记-设计模式】对象池模式

一、说明 用于管理对象的生命周期&#xff0c;重用已经创建的对象&#xff0c;从而减少资源消耗和创建对象的开销 (一) 解决问题 主要解决频繁创建和销毁对象所带来的性能开销问题。如数据库连接、线程管理、网络连接等&#xff0c;对象的创建和销毁成本相对较高&#xff0c…

IC卡批量加密软件使用

IC卡出厂是默认的密码FFFFFFFFFFFF空白卡&#xff0c;IC卡在门禁、电梯、食堂消费、洗浴一卡通等系统上使用前是需要初始化的&#xff0c;即加密的同时写入基础数据。 为什么要用批量加密软件呢&#xff0c;以为需要加密的卡有几百张&#xff0c;几千张&#xff0c;数量比较多&…