linux权限细化管理的三种方法:polkit sudoer doas做权限管理

news/2025/9/22 15:40:25/文章来源:https://www.cnblogs.com/zhg1016/p/19105390

场景 1:允许普通用户挂载外部USB驱动器

这个场景完美体现了从“命令控制”到“动作控制”的范式转变。

1. 使用 sudo / doas 实现(传统方式)

思路: 找到挂载命令(mountudisksctl),授权用户执行它。

  • sudo 配置 (visudo):

    bash
    # 授权用户 alice 执行 mount 命令来挂载 /dev/sdb1 这个特定设备(不灵活)
    alice ALL=(root) /usr/bin/mount /dev/sdb1 /mnt/usb# 或者,更危险地:授权 alice 挂载任何设备(极度不安全!)
    alice ALL=(root) /usr/bin/mount# 更现代的做法:授权使用 udisksctl 命令(桌面环境实际在后台使用的)
    alice ALL=(root) /usr/bin/udisksctl mount -b /dev/sdb1

    缺点: 非常不灵活。设备名(/dev/sdb1)会变,且授权整个 mount 命令风险极高。

  • doas 配置 (/etc/doas.conf):

    bash
    # 和 sudo 类似,语法更简洁
    permit alice as root cmd /usr/bin/udisksctl mount -b /dev/sdb1

    缺点: 同样存在灵活性和安全性的问题。

2. 使用 polkit 实现(现代方式)

思路: 定义“允许普通用户挂载可移动存储设备”这个动作。

  • Polkit 规则文件 (/etc/polkit-1/rules.d/10-allow-mount.rules):

    javascript
    polkit.addRule(function(action, subject) {if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" &&subject.isInGroup("users")) {return polkit.Result.YES;}
    });

    或者,更简单的方法: 大多数发行版已经自带了默认规则,通常位于 /usr/share/polkit-1/rules.d/,你只需要确认或轻微修改即可。

-------------------

场景 2:允许普通用户重启系统

这是一个经典需求,对比非常明显。

1. 使用 sudo / doas 实现

思路: 授权 reboot 或 systemctl reboot 命令。

  • sudo 配置:

    bash
    # 授权 wheel 组用户执行重启命令
    %wheel ALL=(root) /usr/bin/systemctl reboot
  • doas 配置:

    bash
    # 授权 wheel 组用户执行重启命令
    permit :wheel as root cmd /usr/bin/systemctl reboot

用户体验: 在终端中需要输入 sudo systemctl reboot 或 doas systemctl reboot,然后输入自己的密码。

2. 使用 polkit 实现

思路: 定义“允许控制台本地用户或某些组用户重启系统”这个动作。

  • Polkit 规则文件 (/etc/polkit-1/rules.d/10-allow-reboot.rules):

    javascript
    polkit.addRule(function(action, subject) {if (action.id == "org.freedesktop.login1.reboot" ||action.id == "org.freedesktop.login1.reboot-multiple-sessions") {if (subject.isInGroup("wheel")) {return polkit.Result.YES;}// 或者更精细:允许本地活动会话用户无需密码// if (subject.active && subject.local) {//   return polkit.Result.YES;// }}
    });

用户体验:

  1. 图形界面 (GUI): 在GNOME/KDE的菜单中点击“重启”,不会弹出密码框,直接执行。体验无缝。

  2. 命令行 (CLI): 用户可以直接使用 systemctl reboot,同样不会提示密码。或者使用 pkexec systemctl reboot,这会弹出一个图形化的认证对话框。

对比分析:

  • sudo/doas: 只能在命令行使用,且体验一致:需要输入密码。

  • polkit: 提供了统一的后端策略,同时服务于图形前端和命令行后端,并能根据上下文(用户组、会话位置)提供不同的认证体验。

  • --------------------场景 3:允许开发用户绑定到特权端口(如80端口)

  • Web开发常见需求,需要绑定1024以下的端口。

    1. 使用 sudo / doas 实现(危险!)

    思路: 授权用户以 root 权限运行 Node.js、Python 等服务器程序。

    • sudo 配置:

      bash
      # 授权用户 devuser 以 root 身份运行 /usr/bin/node
      devuser ALL=(root) /usr/bin/node /path/to/app.js

      巨大风险: 这意味着这个脚本拥有了完全的 root 权限,可以执行任何操作,极度危险。

    2. 使用 setcap 实现(更安全的方式,但仍属 sudo/doas 范畴)

    思路: 给特定的二进制文件授予特定权限,而不是给用户。

    • 命令行:

      bash
      # 授予 node 二进制文件绑定到特权端口的能力
      sudo setcap 'cap_net_bind_service=+ep' /usr/bin/node

      优点: 比直接以 root 运行整个程序安全得多。
      缺点: 权限被授予了整个二进制文件。任何用户都可以用 /usr/bin/node 来绑定特权端口。

    3. 使用 polkit 实现(不适用)

    结论: 对于这种“给程序文件本身赋予能力”的场景,不是 Polkit 的设计目标。Polkit 管理的是用户动作的授权。

    本场景最佳实践: 使用 setcap 是一种改进,但最好的方式是使用反向代理(如 Nginx)或将服务配置为通过 systemd socket 激活,从而完全避免让用户进程直接处理特权端口。

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

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

相关文章

国产化Excel开发组件Spire.XLS教程:Python 写入 Excel 文件,数据写入自动化实用指南

Excel 是最常用的数据整理、分析和展示工具之一。在本文中,我们将介绍如何借助Spire.XLS使用 Python 将数据写入 Excel 文件,内容涵盖结构化数据插入、格式设置以及数据导出。文中示例所用库支持在代码中直接创建并自…

Ansible的安装和使用

一、安装 #安装源 # 1.安装 yum install epel-release -y yum install ansible -y# 2.生成公钥 [root@vm01 ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/…

运城做网站推广网站的文案

今天安装软件,突然遇到了文件已损坏,扔到废纸篓的情况,于是搜索了下解决办法,跟大家分享下,希望对你有所帮助 一、检查安全性设置 打开【设置】-【隐私与安全】,下拉找到安全性,将安全性更改为…

晋城客运东站网站开发什么nas可以做网站服务器

提供侧边栏可以显示和隐藏的侧边栏容器,通过子组件定义侧边栏和内容区,第一个子组件表示侧边栏,第二个子组件表示内容区。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起…

网站建设培训哪里好网站建设与搜索引擎营销的关系

通常各种编程语言里,都有对应的各种线性代数库,我们可以利用现成的代数库来快速的求解我们想要的结果,也就是说,通过代数库,会让我们可以用更少的代码,更高的效率实现需求,这就是向量化的作用 …

政协机关网站建设wordpress在php什么版本号

BeanPostProcessor 接口是 Spring 框架中的一个扩展接口,用于在 Spring 容器实例化、配置和初始化 bean 的过程中提供自定义的扩展点。通过实现这个接口,您可以在 bean 实例创建的不同生命周期阶段插入自己的逻辑,从而实现对 bean 行为的定制…

网站建设中需求分析说明书国内平面设计公司

纠错码和压缩算法是同一枚硬币的两面。 两者都来自于对冗余的想法。 纠错码被视为向消息或文件中添加冗余的原则性方法。而压缩算法正好相反,他们会从消息或文件中移除冗余。 压缩和纠错并不是彼此抵消的,相反,好的压缩算法会移除抵消冗余&am…

wordpress网站被拒登郑州app拉新项目

能控性定义: 若给定系统的一个初始状态x(t0)(t0可为0),若在t1>t0的有限时间区间[t0,t1]内,存在容许控制u(t)使得x(t1)0,则称系统状态在t0时刻是能控的。 若系统对任意一个初始状态都能控,则…

北京网站设计公司哪家公司好广告营销包括哪些方面

服务器同时连接数突然变高的原因 在服务器运行过程中,我们有时会发现服务器的同时连接数突然变高。这种情况可能会引发一系列问题,如性能下降、资源耗尽等。那么,导致服务器同时连接数突然变高的原因有哪些呢?本文将对此进行探讨…

做设计参考的网站抖音代运营协议

设计模式 创建者模式 前言原来代码使用设计模式总结Builder模式在源码中的应用:其他代码 前言 “对象创建”模式——绕开new 工厂模式 抽象工厂 原型模式 构建器 动机与背景 目前需要建造一个房子,建造房子需要一系列特定的步骤,但是房子的类…

数显LED驱动芯片恒流数码管驱动IC内置显示RAM为816位 VK16D33

VK16D33是一种恒流数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、LED恒流驱动模块等电路。可以通过寄存器配置,调节扫描的位数,从而获得更大的单点驱动电流。数据通过I2C通讯接口与MCU通信。SEG脚接LED阳…

详细介绍:【TEC045-KIT】基于复旦微 FMQL45T900 的全国产化 ARM 开发套件

详细介绍:【TEC045-KIT】基于复旦微 FMQL45T900 的全国产化 ARM 开发套件pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

【IEEE出版】2025年智慧物联与电子信息工程国际学术会议(IoTEIE 2025)

2025年智慧物联与电子信息工程国际学术会议(IoTEIE 2025)将于2025年10月17-19日在中国青岛举行。【EI/Scopus双检索:IEEE独立出版,检索非常稳定】 【征稿主题范围广,录用率高,2篇可享团队优惠,学生友好】 2025年智…

9.22 机房练习

9.22 机房练习 一、 引子 向 myk 大佬学习,养成写练习笔记的好习惯。 还有大约三十多天就复赛了,我的安排是保持每天一两道首银的题目 + 紫书上的题单,前面的是练习有一定难度的题目冲击高分,后面的是系统复习保持…

完整教程:stm32f103c8t6 led闪灯实验

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做jsp网站用哪些软件下载农副产品交易平台

苹果自带的“safari浏览器”正在悄悄“追踪”你的信息,这样做可以有效避免你的隐私信息不被泄露。说起苹果设备自带的APP,毫无疑问safari浏览器是其中的代表之一,很多朋友由于习惯的原因,大多在使用苹果设备的时候选择下载一些第三…

cms网站搭建顺德做网站公司哪家好

import os#判断文件夹是否存在 dir os.path.exists(C:\\Users\\Desktop) print(dir:, dir)#判断文件是否存在 file os.path.exists(C:\\Users\\Desktop\\雍正王朝.txt) print(file:, file)运行结果 显示该文件及文件夹都存在

网易云音乐wordpress插件aso安卓优化

目录 1. 前言 2. 用法回顾 2.1 使用方式 2.2 过滤器的定义 2.3 串联过滤器 3. 小结 1. 前言 过滤器在我们日常开发中应该算是一个非常常用的功能了,它经常会被用来格式化模板中的文本。过滤器可以单个使用,也可以多个串联一起使用,还可…

建站空间哪个好棋牌软件开发定制软件

以下是关于DDR4、DDR5、固态硬盘(SSD)和机械硬盘(HDD)在连续读/写、随机读/写性能的对比分析,结合技术特性与应用场景的总结: 一、性能对比表格 存储类型连续读(MB/s)连续写&#x…

无锡网站建设推荐手机分销网站公司

目录HOG是什么?HOG vs SIFTHOG步骤HOG在检测行人中的方式Opencv实现HOGDescriptor的构造函数:行人检测HOGSVM步骤简化版的HOG计算HOG是什么? 方向梯度直方图( Histogram of Oriented Gradient, HOG )特征是一种在计算机视觉和图像处理中用来进…