Linux 权限管理实践:精确控制用户对 systemctl 和 journalctl 命令的使用

前言

在 Linux 系统管理中,精确控制用户对特定命令的访问权限是一项关键的安全实践。使用 systemctljournalctl 命令时,不当的权限设置可能会导致不必要的风险。本篇博客将详细讨论如何通过 sudoers 文件和 Polkit 策略为不同用户配置 systemctljournalctl 的访问权限。

权限管理场景

groupadd zhangpeng1
useradd -d /app/zhangpeng1 -m zhangpeng1 -g zhangpeng1
chmod -R 755 /app/zhangpeng1
passwd zhangpeng1

groupadd zhangpeng2
useradd -d /app/zhangpeng2 -m zhangpeng2 -g zhangpeng2
chmod -R 755 /app/zhangpeng2
passwd zhangpeng2

以nginx服务为例:

场景一:为普通用户授予 systemctl 使用权限

考虑到实际应用场景的需求,如普通用户 zhangpeng1 需要管理服务但没有 sudo 权限,我们可以采取以下措施:以nginx服务为例:

方法1:修改 sudoers 文件

使用 vi 编辑器来安全地修改 sudoers 文件,避免权限配置错误:
visudo

添加以下内容来为 zhangpeng1 用户添加无密码执行 systemctl 命令的权限:

zhangpeng1 ALL=(ALL) NOPASSWD: /bin/systemctl

查看当前nginx状态

sudo systemctl status nginx

尝试使用zhangpeng1用户关闭启动nginx测试

sudo systemctl stop nginx
sudo systemctl status nginx
sudo systemctl start nginx
sudo systemctl status nginx

方法2:配置 Polkit 策略

另外一种方式:主要是我不想每次都输入sudo和用户名密码,以zhangpeng2用户为例:

创建 Polkit 规则文件 /etc/polkit-1/rules.d/50-systemctl-manage.rules 来授予相应的权限:

polkit.addRule(function(action, subject) {if ((action.id == "org.freedesktop.systemd1.manage-units") &&subject.user == "zhangpeng2") {return polkit.Result.YES;}
});


systemctl status nginx
systemctl stop nginx
systemctl status nginx
systemctl start nginx
systemctl status nginx

场景二:限制用户仅使用 systemctl 的 status 参数

下面我需要更精确颗粒级的权限管理:我需要对zhangpeng1用户,我们需要限制其使用到 systemctlstatus 参数。使该用户只能查看服务的状态,而不能启动或者关闭服务通过详细设置 sudoers 文件,我们可以实现这一需求:

方法1:修改 sudoers 文件

visudo

zhangpeng1 ALL=(ALL) NOPASSWD: /bin/systemctl status *

仍然以nginx服务为例:

在更新visudo文件之前关闭了nginx服务:

sudo systemctl status nginx
sudo systemctl stop nginx

继续获取nginx服务,可以获取nginx服务状态status,但是执行starty已经提示:对不起,用户 zhangpeng1 无权以 root 的身份在 zhangpeng.kylin-one.net 上执行 /usr/bin/systemctl start nginx。服务操作预期:

sudo systemctl status nginx
sudo systemctl start nginx

方法2:配置 Polkit 策略

场景三:授权用户查看日志

journalctl 是查看系统日志的重要工具,我们可以通过以下方式为 zhangpeng2 授予查看日志的权限:

修改 sudoers 文件

visudo

zhangpeng2 ALL=(ALL) NOPASSWD: /bin/journalctl

执行sudo journalctl -f 命令:

配置 Polkit 策略

创建 Polkit 规则 /etc/polkit-1/rules.d/50-journalctl-view.rules

polkit.addRule(function(action, subject) {if (action.id == "org.freedesktop.systemd1.manage-units" &&subject.user == "zhangpeng2") {return polkit.Result.YES;}
});

使用root用户 将zhangpeng2用户加入 systemd-journaly用户组:

usermod -a -G systemd-journal zhangpeng2

退出 zhangpeng2登录控制台并重新登录,执行journalctl命令

场景四:特定服务的权限管理

我们需要确保用户 zhangpeng1 仅能重启 nginx 服务,通过精确的 sudoers 文件配置可以实现这一要求:

zhangpeng1 ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx.service

使用 Polkit 策略进一步细化控制:

polkit.addRule(function(action, subject) {if (action.id == "org.freedesktop.systemd1.manage-units" &&action.lookup("unit") == "nginx.service" &&action.lookup("verb") == "restart" &&subject.user == "zhangpeng1") {return polkit.Result.YES;}
});

结论

通过以上方法,我们可以有效地为不同用户在 Linux 系统中配置精确的权限,确保系统的安全性和操作的可控性。这些配置可以根据实际需求灵活调整,提供高度定制的权限管理方案。

通过深入理解和合理应用 sudoers 和 Polkit 策略,Linux 系统管理员可以在日常管理工作中更好地控制用户权限,从而维护系统的稳定和安全。

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

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

相关文章

【Unity3D】报错libil2cpp.so找不到问题

mainTemplate.gradle文件末尾添加: **IL_CPP_BUILD_SETUP** 此报错发生在低版本的Unity升级到高版本后,例如Unity2019升级到Unity2021,而Unity2019默认创建的mainTemplate.gradle文件是不包含**IL_CPP_BUILD_SETUP** 因此会导致libil2cpp.so…

如何在繁忙的生活中找到自己的节奏?

目录 一、理解生活节奏的重要性 二、分析当前生活节奏 1. 时间分配 2. 心理状态 3. 身体状况 4. 生活习惯 1. 快慢适中 2. 张弛结合 3. 与目标相符 三、掌握调整生活节奏的策略 1. 设定优先级 2. 合理规划时间 3. 学会拒绝与取舍 4. 保持健康的生活方式 5. 留出…

1.metagpt中的软件公司智能体 (PrepareDocuments Action)

1. PrepareDocuments Action 定义了一个 PrepareDocuments 类,它继承自 Action 类,并实现了一个用于准备项目文档的功能。具体来说,它的主要作用是初始化项目文件夹,设置 Git 环境,并将新增的需求写入 docs/requireme…

PHPstudy中的数据库启动不了

法一 netstat -ano |findstr "3306" 查看占用该端口的进程号 taskkill /f /pid 6720 杀死进程 法二 sc delete mysql

数据可视化:提升年度报表分析效率的新路径

在当今复杂多变的商业环境中,企业年度报表不仅是反映企业过去一年经营成果的重要文件,更是指导未来战略规划的基石。它如同一面镜子,既映照出企业的辉煌成就,也不避讳地揭示了存在的问题与挑战。本文将从企业年度报表的编制原则、…

计算机网络-传输层 UDP协议

学习一个网络协议,主要就是学习“数据格式/报文格式” UDP的特点 UDP传输的过程类似于寄信. ⽆连接: 知道对端的IP和端⼝号就直接进⾏传输, 不需要建⽴连接; 不可靠: 没有确认机制, 没有重传机制; 如果因为⽹络故障该段⽆法发到对⽅, UDP协议层也不会给应 ⽤层返回任…

【Android开发】安装Android Studio(2023.1.1)

下载安装包 Android Studio2023.1.1百度云盘下载,提取码:6666https://pan.baidu.com/s/1vNJezi7aDOP0poPADcBZZg?pwd6666 安装Android Studio 2023.1.1 双击下载好的安装包 弹出界面点击下一步 继续点击【Next】 更改安装路径后继续点击【Next】 点…

web网页前后端交互方式

参考该文&#xff0c; 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单&#xff0c;设置method属性定义发送表单数据的方式是get还是post。 如使用get方式&#xff0c;则提交的数据会在url中显示&#xff1b;如使用post方式&#xff0c;提交…

多线程(JAVA笔记第三十九期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 进程和线程的概念并发与并行多线程的实现方式继承Thread类的方式进行实现使用Runnable接口的方式进行实现使用Callable接口和Future接口方式进行实现 多线程常用的成员方法同步代码…

牛客网刷题 | BC125 序列中整数去重

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 输入n个整数的序列…

【一文概述】常见的几种内外网数据交换方案介绍

一、内外网数据交换的核心需求 内外网数据交换的需求核心在于“安全、效率、合规”&#xff0c;而应用场景的多样性使得不同企业需要定制化的解决方案。通过结合业务特性和安全等级要求&#xff0c;企业能够选择适合的技术方案来实现高效、安全的内外网数据交换。 1、数据安全…

记:排查设备web时慢时快问题,速度提升100%

问题描述 问题1&#xff1a; 发现web登录界面刷新和登录功能都比较卡&#xff0c;开浏览器控制台看了下&#xff0c;让我很惊讶&#xff0c;居然能这么慢&#xff1a; 公司2个局域网内的表现不同&#xff0c;局域网A中的都比较卡&#xff0c;局域网B中的又不存在该现象。 问…

简单的Java小项目

学生选课系统 在控制台输入输出信息&#xff1a; 在eclipse上面的超级简单文件结构&#xff1a; Main.java package experiment_4;import java.util.*; import java.io.*;public class Main {public static List<Course> courseList new ArrayList<>();publi…

环境和工程搭建

1.案例介绍 1.1 需求 实现⼀个电商平台 该如何实现呢? 如果把这些功能全部写在⼀个服务⾥, 这个服务将是巨⼤的. 巨多的会员, 巨⼤的流量, 微服务架构是最好的选择. 微服务应⽤开发的第⼀步, 就是服务拆分. 拆分后才能进⾏"各⾃开发" 1.2 服务拆分 拆分原则 …

港科夜闻 | 香港科大与荷兰代尔夫特理工大学(TU Delft)建立合作伙伴关系,推动艺术科技教育与研究...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与荷兰代尔夫特理工大学(TU Delft)建立合作伙伴关系&#xff0c;推动艺术科技教育与研究。2024年12月6日&#xff0c;合作伙伴计划正式启动&#xff0c;双方期望透过合作加强艺术科技知识交流&#xff0c;借此推…

电脑游戏运行时问题解析:《Geometry Dash》DLL文件损坏的原因与解决方案

电脑游戏运行时问题解析&#xff1a;《Geometry Dash》DLL文件损坏的原因与解决方案 在探索《Geometry Dash》这款节奏明快、充满挑战的几何世界冒险游戏时&#xff0c;我们或许会遇到一些令人头疼的技术问题&#xff0c;其中之一便是DLL文件损坏。DLL&#xff08;动态链接库&…

爬虫逆向学习(十四):分享一下某数通用破解服务开发经验

阅前须知 这篇博客不是教大家怎么实现的&#xff0c;而且告知大家有这个东西&#xff0c;或者说一种趋势&#xff0c;借此分享自己大致的实现经验。具体的实现我也不好整理&#xff0c;毕竟是在别人的基础上缝缝补补。 前言 使用补环境方式破解过某数的同学都知道&#xff0…

Maven 的下载

目录 1、Maven 官方地址2、下载3、解压4、配置本地仓库 1、Maven 官方地址 https://maven.apache.org/ 2、下载 3、解压 将下载的压缩包解压到任意位置 4、配置本地仓库 在 Maven 的安装目录下新建文件夹&#xff0c;用来当作 Maven 的本地仓库 进入 conf 目录下&#xff…

【HarmonyOS】鸿蒙应用实现手机摇一摇功能

【HarmonyOS】鸿蒙应用实现手机摇一摇功能 一、前言 手机摇一摇功能&#xff0c;是通过获取手机设备&#xff0c;加速度传感器接口&#xff0c;获取其中的数值&#xff0c;进行逻辑判断实现的功能。 在鸿蒙中手机设备传感器ohos.sensor (传感器)的系统API监听有以下&#xf…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(三)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(三) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…