【总结】Linux访问控制汇总

news2024/12/15 13:03:03

【总结】Linux访问控制汇总

  • 备注
  • 一、基本概念
  • 二、文件权限
    • 1.用户和组
    • 2.文件:
    • 3.目录:
    • 4.特殊权限
  • 三、SELinux
  • 四、其他访问控制
    • 1.ACL
    • 2.Capabilities
    • 3.AppArmor
    • 4.Seccomp

备注

2024/06/05 星期三
使用Linux的人经常要用到用户、权限和SELinux,这里简单记录一下,在权限方面大部分文档都侧重在了文件的权限上而忽略了目录的权限,导致很多人都不了解目录的权限本文也会单独分析一下目录的权限,并且简单介绍一下Linux下的各自访问控制机制

一、基本概念

Linux作为多用户通用操作系统并且采用一切皆文件的理念进行设计,文件的访问控制权限也就具有举足轻重的地位,同时也让访问控制权限的管理变得非常复杂。
访问控制是信息安全中重要的概念,访问是主体(Subject)和客体(Object)之间的一种关系,控制是为了让所有的访问都是合法的,由于这个概念过于理论,这里简单来说就是要让不同身份的角色能够使用不同的资源
访问控制可以分为两类:自主访问控制(DAC)和强制访问控制(MAC),Linux最经典的为文件的ugo用户设置rwx权限的文件权限模式就属于自主访问控制,而通过编写安全策略严格限制进程访问资源的SELinux就属于强制访问控制,两种访问控制管理各有优劣。

二、文件权限

1.用户和组

Linux是多用户的操作系统,因此有用户和用户组的概念
用户: 每个用户有唯一的用户名和用户ID(UID)
用户组: 每个用户组也有唯一的组名和组ID(GID),一个用户可以属于一个或多个用户组
root: root是Linux中的超级管理员用户,游离于文件权限的管控之外,并且可以任意修改所有文件的权限

2.文件:

当用户与文件结合时,Linux的文件权限为文件设置了三种角色:拥有者(user)、所属组(group)和其他人(other),分别简写为u、g和o
文件只有唯一的拥有者,一般只能属于一个所属组,不是拥有者也不在所属用户组中的用户是其他人
对于文件来说最基本的操作有读、写、执行三种,分别简写为r、w、x
每个文件的ugo三个角色各自拥有rwx三个权限,即为9个权限位,每个角色具有的权限可以作为一组权限,用数字进行对应,4代表具有r、2代表具有w、1代表具有x,如果没有某个权限则为0,将实际具有的rwx数字相加得到1个0-7之间的数字就是这个角色的权限,按照ugo的顺序计算出三个角色各自的数字,就可以用3个0-7之间的数字简记一个文件的文件权限了

3.目录:

目录也是一种特殊的文件,但是目录具有管理文件的作用,因此在权限的表现方式上与文件有所不同:

权限操作
仅拥有执行权限(x)可以cd进入目录,也可以对目录下的文件进行读写执行操作(需要文件本身具有对应权限),但是不能ls、不能在目录下创建和删除目录、文件、软链接等
仅拥有写权限(w)什么都不能做
同时拥有执行和写权限(wx)可以创建和删除目录、文件、软链接等、也可以进入目录进行操作,但是不能使用ls
仅拥有读权限(r)可以ls,其他什么都不能做
同时拥有读和执行权限(rx)可以ls,也可以cd进入目录,可以使用文件
同时拥有读和写权限(rw)可以ls,其他什么都不能做
同时拥有读写执行权限(rwx)可以cd进入目录,可以使用文件,可以创建和删除文件,可以ls

即可简化为目录同样具有三种操作:列出文件:r、进入使用:x、创建删除:xw
使用以下脚本观察结果可以进行验证:

#!/bin/bash

mkdir test
for dir in 100 200 300 400 500 600 700; do
  mkdir test/$dir
  for file in 100 200 300 400 500 600 700; do
    echo '#!/usr/bin/env python' > test/$dir/$file.py
    echo "print('$dir$file')" >> test/$dir/$file.py
    chmod $file test/$dir/$file.py
  done
  chmod $dir test/$dir
done

for dir in 100 200 300 400 500 600 700; do
  echo $dir' ls:'
  ls test/$dir/
  echo $dir' touch file:'
  touch test/$dir/file$dir
  echo $dir'mkdir dir:'
  mkdir test/$dir/dir$dir
  echo $dir' ln:'
  ln -s . test/$dir/ln$dir
  echo ''
  for file in 100 200 300 400 500 600 700; do
    echo $dir$file' cat:'
    cat test/$dir/$file.py
    echo $dir$file' execute:'
    ./test/$dir/$file.py
    echo $dir$file' modify:'
    echo "print('modify')" >>test/$dir/$file.py
    echo $dir$file' remove:'
    rm -f test/$dir/$file.py
    echo ''
  done
done

4.特殊权限

除了上述rwx权限外,文件权限中还为文件和目录提供了setuid、setgid权限,目录提供sticky权限
setuid: 只能作用在拥有者的执行位上,当非拥有者的用户执行文件时,进程会以拥有者的身份运行,如果文件具有setuid权限,u的x会变成小写s;如果文件具有setuid权限但u不具有x权限,u的x会变成大写S用于提示缺少x权限;如果是目录设置了setuid权限,则任意用户在目录下创建的文件的拥有者都是该目录的拥有者
setgid: 只能作用在所属组的执行位上,当非所属组的用户执行文件时,进程会以所属组的身份运行,如果文件具有setgid权限,g的x会变成小写s;如果文件具有setgid权限但g不具有x权限,g的x会变成大写S用于提示缺少x权限;如果是目录设置了setgid权限,则任意用户在目录下创建的文件的所属组都是该目录的所属组
sticky: 用户只能删除和修改拥有者为自己的文件(对于o=wx的目录,即任何人都可以创建和删除文件的目录,每个人都可以在目录下随意删除其他用户拥有的文件,这显然是不对的,sticky用于解决这个问题),如果目录具有sticky权限,o的x会变成小写t,如果目录具有sticky权限但o不具有x权限,o的x会变成大写T用于提示缺少x权限
setuid、setgid和sticky也分别对应数字4、2和1,作为第四个数字,但是在使用时会放到ugo数字之前

三、SELinux

ACL: 根据以上用户和文件权限进行检查的方式被称为ACL访问控制列表
SEL: SELinux是在这个基础上进行的强制访问控制MAC,通过配置安全策略规则,对程序进程、用户文件、网络资源等系统资源进行管控,从而减少潜在的安全漏洞

四、其他访问控制

早期为了弥补Linux文件权限的不足,Linux还诞生了很多访问控制机制的实现

1.ACL

2.Capabilities

3.AppArmor

4.Seccomp

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

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

相关文章

海康萤石摄像机接入EasyNVR流程:开启RTSP-》萤石视频添加到EasyNVR-》未来支持海康SDK协议添加到EasyNVR

EasyNVR目前支持GB28181、RTSP、ONVIF、RTMP(推流)这几种协议接入,目前正在增加海康HIKSDK、大华DHSDK等几种SDK的接入,我们今天就介绍一下萤石摄像机怎么通过RTSP接入到EasyNVR。 第一步:萤石摄像机开启 萤石设备默…

Qt编写的文件传输工具

使用QT编写的文件传输工具 文件传输工具通过发送udp广播消息将IP广播给其他开启该程序的局域网机器 文件传输工具 通过发送udp广播消息将IP广播给其他开启该程序的局域网机器 收到的广播消息可以显示在IP地址列表中,点击IP地址可以自动填充到IP地址栏内 选择文件…

【潜意识Java】深入理解 Java 面向对象编程(OOP)

目录 什么是面向对象编程(OOP)? 1. 封装(Encapsulation) Java 中的封装 2. 继承(Inheritance) Java 中的继承 3. 多态(Polymorphism) Java 中的多态 4. 抽象&…

PWM调节DCDC参数计算原理

1、动态电压频率调整DVFS SOC芯片的核电压、GPU电压、NPU电压、GPU电压等,都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS(Dynamic Voltage and Frequency scaling),优化性能和功耗。 比如某SOC在…

OpenCV相关函数

一、二值化函数(threshold) 功能:将灰度图像转换为二值图像,通常用于图像分割。通过设置阈值,把图像中低于阈值的像素设为0,高于阈值的像素设为1。 参数: src:输入图像。 thresh&a…

bean后处理器的作用

这是beanFactory中常见的一些后处理器: 其中这俩个属于bean后处理器: internalAutowiredAnnotationProcessor解析Autowired、Value internalCommonAnnotationProcessor解析Resource、PostConstruct、PreDestroy Bean后处理器的作用:为Bean…

YOLOv11融合[CVPR2024]Starnet中的star block取模块

YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总 《Rewrite the Stars》 一、 模块介绍 论文链接:https://arxiv.org/abs/2403.19967 代码链接:https://github.com/ma-xu/Rewri…

日常灵感:听劝是一种天赋

希望这段分享能给你提供一些新的角度,让你在自己的工作和生活中更好地利用这份“听劝”的天赋! 父与子的救赎:听劝的天赋 学霸爸爸李先生是一个典型的"别人家的父母"。 他从小就是学霸,凭借过硬的学习能力从重点高中一…

The Rise and Potential of Large Language ModelBased Agents:A Survey---讨论

讨论 论法学硕士研究与Agent研究的互利性 近年来,随着激光诱导金属化技术的发展,激光诱导金属化与化学剂交叉领域的研究取得了长足的进步,促进了这两个领域的发展。在此,我们期待着LLM研究和Agent研究相互提供的一些益处和发展机…

React 第十六节 useCallback 使用详解注意事项

useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook,返回一个函数的 memoized的值; 2、如果多次传入的依赖项不变,那么多次定义的时候,返回的值是相同的,防止频繁触发更新; 3、多应用在 父组件为函…

Transformer: Attention Is All You Need (2017) 翻译

论文:Attention Is All You Need 下载地址如下: download: Transformer Attention Is All you need Attention Is All You Need 中文 《Attention Is All You Need》是《Transformer》模型的开创性论文,提出了一种全新的基于注意力机制的架构&#xf…

Git-分支(branch)常用命令

分支 我们在做项目开发的时候,无论是软件项目还是其他机械工程项目,我们为了提高效率以及合理的节省时间等等原因,现在都不再是线性进行,而是将一个项目抽离出诸进行线,每一条线在git中我们就叫做分支,bran…

【AIGC进阶-ChatGPT提示词副业解析】反向心理学在沟通中的运用:激将法的艺术

引言 在日常沟通和管理中,直接的表达方式并不总能达到预期效果。反向心理学,特别是其中的激将法,作为一种独特的沟通技巧,往往能在看似消极的表达中激发出积极的反应。本文将深入探讨反向心理学中激将法的运用技巧、实施策略及其…

360智脑张向征:共建可信可控AI生态 应对大模型安全挑战

发布 | 大力财经 人工智能的加速发展,有力推动了社会的数智化转型;与此同时,带来的相关安全风险也日益凸显。近日,在北京市举办的通明湖人工智能开发与应用大会上,360智脑总裁张向征以“大模型安全研究与实践”为主题&…

lc46全排列——回溯

46. 全排列 - 力扣(LeetCode) 法1:暴力枚举 总共n!种全排列,一一列举出来放入list就行,关键是怎么去枚举呢?那就每次随机取一个,然后删去这个,再从剩下的数组中继续去随机选一个&a…

在线设计平台:Axure新手的在线设计助手

Axure是一款在产品设计、用户体验和交互设计领域广泛使用的强大原型设计工具。它使设计师和产品经理能够迅速构建高保真原型,验证设计和功能,并进行用户测试。结合在线设计平台的协作特性,团队可以更高效地创建、分享和优化原型,加…

Burp与小程序梦中情缘

前言 在日常渗透工作中,有时需要对微信小程序进行抓包渗透,通过抓包,我们可以捕获小程序与服务器之间的通信数据,分析这些数据可以帮助我们发现潜在的安全漏洞,本文通过讲述三个方法在PC端来对小程序抓包渗透 文章目…

gpu硬件架构

1.简介 NVIDIA在视觉计算和人工智能(AI)领域处于领先地位;其旗舰GPU已成为解决包括高性能计算和人工智能在内的各个领域复杂计算挑战所不可或缺的。虽然它们的规格经常被讨论,但很难掌握各种组件的清晰完整的图景。 这些GPU的高性…

SpringCloud集成sleuth和zipkin实现微服务链路追踪

文章目录 前言技术积累spring cloud sleuth介绍zipkin介绍Zipkin与Sleuth的协作 SpringCloud多模块搭建Zipkin Server部署docker pull 镜像启动zipkin server SpringCloud 接入 Sleuth 与 Zipkinpom引入依赖 (springboot2.6)appilication.yml配置修改增加测试链路代码 调用微服…

OBS + SRS:打造专业级直播环境的入门指南

OBS SRS:打造专业级直播环境的入门指南 1. OBS简介2. OBS核心功能详解2.1 场景(Scenes)管理2.2 源(Sources)控制2.3 混音器功能2.4 滤镜与特效2.5 直播控制面板 3. OBS推流到SRS服务器配置指南3.1 环境准备3.2 OBS推流…