关于Linux PAM模块下的pam_listfile
讲《Linux下禁止root远程登录访问》故事的时候,说好会另开一篇讲讲pam_listfile。我们先看看pam_listfile的man文档怎么介绍的。
下面这些就好比人物的简介,甚是恼人;让人看得不明就里,反正“他大舅他二舅都是他舅”。可以直接跳到下面的示例环节,看如何使用的,直接参考就行了。
名称
pam_listfile - 基于任意文件允许或拒绝服务
概要
pam_listfile.so item=[tty|user|rhost|ruser|group|shell] sense=[allow|deny] file=/path/filename onerr=[succeed|fail] [apply=[user|@group]] [quiet]
描述
pam_listfile
是一个 PAM(可插拔认证模块)模块,它提供了一种基于任意文件来允许或拒绝服务的方法。
该模块会根据指定的类型获取项目:
user
:指定用户名,对应 PAM_USER;tty
:指定请求所经过的终端名称,对应 PAM_TTY;rhost
:指定发起请求的远程主机名称(如果有),对应 PAM_RHOST;ruser
:指定发起请求的远程用户名(如果可用),对应 PAM_RUSER;group
:指定用户所属的组;shell
:指定用户的登录 shell。
然后在 file=filename
中查找该项目。filename
文件中每行列出一个项目。如果找到了该项目,则根据 sense
参数决定操作:
- 如果
sense=allow
,则返回PAM_SUCCESS
,使授权请求成功; - 如果
sense=deny
,则返回PAM_AUTH_ERR
,使授权请求失败。
如果遇到错误(例如,文件不存在或参数构造不良),则根据 onerr
参数决定处理方式:
- 如果
onerr=succeed
,则返回PAM_SUCCESS
; - 如果
onerr=fail
,则返回PAM_AUTH_ERR
或PAM_SERVICE_ERR
(视情况而定)。
额外的参数 apply=
可以用来限制上述规则的应用范围,仅对特定用户 (apply=username
) 或特定组 (apply=@groupname
) 生效。此限制仅在使用 tty
、rhost
和 shell
项目时有意义。
除了最后一个参数外,所有参数都应该是明确指定的;不要依赖任何默认行为。
此模块不会授予任何凭据。
选项
-
item=[tty|user|rhost|ruser|group|shell]
要在文件中列出并检查的项目。 -
sense=[allow|deny]
如果在文件中找到项目时应采取的操作;如果未找到项目,则执行相反的操作。 -
file=/path/filename
包含每个项目一行的文件。文件需要是普通文件,并且不能是世界可写的。 -
onerr=[succeed|fail]
如果发生异常情况(如无法打开文件)时应采取的操作。 -
apply=[user|@group]
限制应用规则的用户类别。对于item=[user|ruser|group]
,这没有意义,但对于item=[tty|rhost|shell]
,它有意义。 -
quiet
不将服务拒绝或缺少列表文件视为需要记录的错误。
提供的模块类型
提供所有模块类型(auth, account, password 和 session)。
返回值
-
PAM_AUTH_ERR
认证失败。 -
PAM_BUF_ERR
内存缓冲区错误。 -
PAM_IGNORE
规则不适用于apply
选项。 -
PAM_SERVICE_ERR
服务模块中的错误。 -
PAM_SUCCESS
成功。
示例-vsftpd黑名单:禁止某些用户访问ftp服务
# 拒绝 /etc/ftpusers 文件中列出的用户访问 ftp 服务
auth required pam_listfile.so \onerr=succeed item=user sense=deny file=/etc/vsftpd/ftpusers
注意,/etc/vsftpd/ftpusers
文件中列出的用户不允许访问 vsftp 服务。
示例-login白名单:只允许某些用户可以console登录用户
在 /etc/pam.d/login
中使用如下条目:
# 允许 /etc/loginusers 文件中列出的用户登录
auth required pam_listfile.so \onerr=fail item=user sense=allow file=/etc/loginusers
在这个例子中,所有被允许使用登录服务的用户都应该列在 /etc/loginusers
文件中。除非你明确尝试锁定 root 用户,否则确保将 root 列入 /etc/loginusers
文件,或者列出能够切换到 root 账户的用户。
示例-sshd黑名单:不允许某些用户通过ssh登录
前提:当前sshd配置了UsePAM yes。
在 /etc/pam.d/sshd
中使用如下条目:
#%PAM-1.0
auth required pam_sepermit.soauth required pam_listfile.so item=user sense=deny file=/etc/ssh/sshd.deny onerr=succeed
auth include password-auth
该文件禁止访问ssh的黑名单列表:/etc/ssh/sshd.deny
在/var/log/secure日志文件中会记录相关日志(如下是在auth和session模块分别实验的日志记录,都有效!):
pam_listfile(sshd_bak:session): Refused user user1 for service sshd
pam_listfile(sshd_bak:auth): Refused user user1 for service sshd
示例-su目标用户白名单:只允许su到某些用户
在 /etc/pam.d/sshd
中使用如下条目:
auth required pam_wheel.so use_uid group=groupa
auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-groupa-access
该文件允许su切的白名单列表:/etc/security/su-groupa-access
如果文件中添加root,则只允许su切到root,如果su切到其他用户(包含本用户)也是不被允许的。
相关文章:
关于Linux PAM模块下的pam_listfile
讲《Linux下禁止root远程登录访问》故事的时候,说好会另开一篇讲讲pam_listfile。我们先看看pam_listfile的man文档怎么介绍的。 下面这些就好比人物的简介,甚是恼人;让人看得不明就里,反正“他大舅他二舅都是他舅”。可以直接跳…...
根据中文名称首字母进行分组
很多项目中,需要用到中文名称到首字母进行分组,例如:城市、游戏等等。。。 /*** 将集合数据按照汉字首字母分组排序** param list* return*/public Map<String, Object> screenManufacturer(List<Game> list) {Set<String>…...
springboot 集成 etcd
springboot 集成 etcd 往期内容 ETCD 简介docker部署ETCD 前言 好久不见各位小伙伴们,上两期内容中,我们对于分布式kv存储中间件有了简单的认识,完成了docker-compose 部署etcd集群以及可视化工具 etcd Keeper,既然有了认识&a…...
人工智能-数据分析及特征提取思路
1、概况 基于学生行为数据预测是否涉黄、涉黑等。 2.数据分析 数据分析的意义包括得到数据得直觉、发掘潜在的结构、提取重要的变量、删除异常值、检验潜在的假设和建立初步的模型。 2.1数据质量分析 2.1.1数据值分析 查看数据类型: 首先明确各字段的数据类型…...
设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析
状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态改变时改变其行为,使得对象看起来好像修改了它的类。这种设计模式的核心思想是将对象的状态和行为封装成不同的状态类,通过状态对象的行为改变来避免…...
Android 系统签名 keytool-importkeypair
要在 Android 项目中使用系统签名并将 APK 打包时与项目一起打包,可以按照以下步骤操作: 步骤 1:准备系统签名文件 从 Android 系统源码中获取系统签名文件,通常位于 build/target/product/security 目录下,包括 pla…...
ubuntu22.04 gcc,g++从10.5切换到低版本9.5
一、安装gcc-9.5 mkdir gcc cd gcc sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends gcc-9 | grep -v i386 | grep "^\w") sudo dpkg -i *.deb sudo…...
Microsoft 已经弃用了 <experimental/filesystem> 头文件
#define _CRT_SECURE_NO_WARNINGS 1 #define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING 1 //Microsoft 已经弃用了 <experimental / filesystem> 头文件,并计划在将来移除它。取而代之的是 C17 标准引入的 //<filesystem> 头文件…...
git 提交命令记录
1.已有本地和远程仓库 查看仓库远程地址: git remote -v 大量提交 git add . git commit -m "提交说明" git push 之后输入用户名密码 删除文件 git rm 文件名 替代git add 后面一样 2.全新提交 新建远程仓库 git init touch README.md git add . …...
Unity + Firebase + GoogleSignIn 导入问题
我目前使用 Unity版本:2021.3.33f1 JDK版本为:1.8 Gradle 版本为:6.1.1 Firebase 版本: 9.6.0 Google Sign In 版本为: 1.0.1 问题1 :手机点击登录报错 apk转化成zip,解压,看到/lib/armeabi-v…...
深度学习的加速器:Horovod,让分布式训练更简单高效!
什么是 Horovod? Horovod 是 Uber 开发的一个专注于深度学习分布式训练的开源框架,旨在简化和加速多 GPU、多节点环境下的训练过程。它以轻量级、易用、高性能著称,特别适合需要快速部署分布式训练的场景。Horovod 的名字来源于俄罗斯传统舞…...
AI刷题-异或编码、拼凑单词 chi
目录 一、异或编码 问题描述 测试样例 解题思路: 问题理解 解题思路 数据结构选择 算法步骤 最终代码: 运行结果: 二、拼凑单词 chi 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步骤 最终代码&a…...
xml简介
目录 基本语法特点及应用场景一个简单示例 xml(全称eXtensible Markup Language)是一种用于存储和传输数据的标记语言,跨平台并且跨语言,xml内容较多,这篇文章会介绍一些基础的内容。 基本语法 xml文档通常以xml声明开…...
MYSQL------MySQL 复制MySQL Cluster 架构
MySQL 复制 安装配置 主服务器配置 首先,在主服务器的配置文件(my.cnf 或 my.ini)中添加以下基本配置: [mysqld] server-id 1 log-bin /var/log/mysql/mysql-bin.logserver-id:为服务器分配唯一的标识࿰…...
【人工智能】 用Python构建图像分类模型:从TensorFlow到PyTorch的全面指南
随着深度学习在计算机视觉领域的迅猛发展,图像分类作为其核心任务之一,受到了广泛的关注。本文旨在详细介绍如何使用Python构建图像分类模型,从TensorFlow到PyTorch两个主流深度学习框架进行全面对比与实践。文章首先回顾了图像分类的基本概念…...
计算机网络 笔记 数据链路层 2
1,信道划分: (1)时分复用TDM 将时间等分为“TDM帧”,每个TDM帧内部等分为m个时隙,m个用户对应m个时隙 缺点:每个节点只分到了总带宽的1/m,如果有部分的1节点不发出数据,那么就会在这个时间信道被闲置,利用…...
2024年度漏洞态势分析报告,需要访问自取即可!(PDF版本)
2024年度漏洞态势分析报告,需要访问自取即可!(PDF版本),大家有什么好的也可以发一下看看...
Apache Hop从入门到精通 第一课 揭开Apache Hop神秘面纱
一、Apache Hop是什么? 1、Apache Hop,简称Hop,全称为Hop Orchestration Platform,即Hop 工作编排平台,是一个数据编排和数据工程平台,旨在促进数据和元数据编排的所有方面。Hop让你专注于你想要解决的问题…...
Unity 人体切片三维可视化,可任意裁切切割。查看不同断层的图像。
Unity 人体切片三维可视化,真彩色,可任意裁切切割。查看不同断层的图像。 点击查看效果: 视频效果...
ModuleNotFoundError: No module named ‘podm.metrics‘报错等解决方法
ModuleNotFoundError: No module named podm.metrics’报错等解决方法 podm.metrics 在运行时报错: ModuleNotFoundError: No module named ‘podm.metrics’ 安装了podm后还是报错 解决方法: 查看安装位置 查看podm的安装位置,并打开到该…...
Java虚拟机运行时数据区域(内存模型)
程序计数器(线程私有内存) What:程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。 程序控制流的指示器, 分支,循环,跳转,异常处理,线程…...
trf 4.10安装与使用-生信工具42
01 背景 DNA 中的串联重复(Tandem Repeat)指的是两个或多个相邻且近似的核苷酸模式的拷贝。Tandem Repeats Finder (TRF) 是一个程序,用于定位并显示 DNA 序列中的串联重复。用户只需提交一个以 FASTA 格式编写的序列,无需指定重…...
rom定制系列------小米max3安卓12 miui14批量线刷 默认开启usb功能选项 插电自启等
小米Max3是小米公司于2018年7月19日发布的机型。此机型后在没有max新型号。采用全金属一体机身设计,配备6.9英寸全面屏.八核处理器骁龙636,后置双摄像头1200万500万像素,前置800万像素.机型代码 :nitrogen.官方最终版为稳定版12.5…...
PySide6-UI界面设计
导论: PySide6和PyQt都是Python对Qt框架的绑定,允许开发者使用Qt创建平台的GUI应用程序。如果你正在开发商业项目,或者需要使用最新的QT6特性,PySide6是一个更好的选择。如果你更倾向于一个成熟的社区和丰富的资源,Py…...
Java创建线程的方式有哪些?
创建线程的方式 1. 继承 Thread 类 在 Java 中,当你启动一个线程时,实际上是调用了 Thread 类的 start() 方法。这个方法会执行以下几个步骤: 线程的状态转变:调用 start() 方法后,线程的状态从 NEW 转变为 RUNNABL…...
Ubuntu | PostgreSQL | 解决 ERROR: `xmllint` is missing on your system.
解决 sudo apt install apt-file sudo apt-file updatesudo apt-file search xmllint sudo apt install libxml2-utils执行 # postgres源码安装包解压文件夹中 make install make install问题 make -C src install make[2]: Entering directory /home/postgres/postgresql-1…...
Jenkins pipeline 发送邮件及包含附件
Jenkins pipeline 发送邮件及包含附件 设置邮箱开启SMTP服务 此处适用163 邮箱 开启POP3/SMTP服务通过短信获取TOKEN (保存TOKEN, 后面Jenkins会用到) Jenkins 邮箱设置 安装 Build Timestamp插件 设置全局凭证 Dashboard -> Manage Jenkins …...
基于深度学习的视觉检测小项目(十) 通过样式表改变界面的外观
一、创建色卡模板文件 在PS中打开之前创建的色卡文件,用吸管拾色器吸取各个色卡的色彩值: 并保存为JSON文件,color_card.json,文件保存在项目的/settings目录下: {"colors": {"RED": "#dc1…...
【Java基础】Stream流、文件File相关操作,IO的含义与运用
1. Java 流(Stream)、文件(File)和IO Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。 一个流可以理解为一个数据的序列。 输入流表…...
Java-日志-Slf4j-Log4j-logback
文章目录 SLF4J基础概念使用输出形式日志绑定桥接旧的框架实战 logback基础概念配置文件 Log4j概述 SLF4J 参考: https://www.cnblogs.com/shenStudy/p/15806951.html https://slf4j.org/ 基础概念 是什么?SLF4J(Simple Logging Facade fo…...
探索式测试
探索式测试是一种软件测试风格,它强调独立测试人员的个人自由和职责,为了持续优化其工作的价值,将测试学习、测试设计、测试执行和测试结果分析作为相互支持的活动,在整个项目实现过程中并行地执行。 选择合适的探索式测试方法我…...
LeetCode LCP17速算机器人
速算机器人:探索字符指令下的数字变换 在编程的奇妙世界里,我们常常会遇到各种有趣的算法问题,这些问题不仅考验我们的逻辑思维,还能让我们感受到编程解决实际问题的魅力。今天,就让我们一同探讨一个关于速算机器人的…...
Taro+Vue实现图片裁剪组件
cropper-image-taro-vue3 组件库 介绍 cropper-image-taro-vue3 是一个基于 Vue 3 和 Taro 开发的裁剪工具组件,支持图片裁剪、裁剪框拖动、缩放和输出裁剪后的图片。该组件适用于 Vue 3 和 Taro 环境,可以在网页、小程序等平台中使用。 源码 https:…...
ISP各模块功能介绍
--------声明,本文为转载整理------- ISP各个模块功能介绍: 各模块前后效果对比: 黑电平补偿(BLC) 在理想情况下,没有光照射的像素点其响应值应为0。但是,由于杂质、受热等其它原因的影响&…...
SQL-leetcode-584. 寻找用户推荐人
584. 寻找用户推荐人 表: Customer -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | | referee_id | int | -------------------- 在 SQL 中,id 是该表的主键列。 该表的每一行表示一个客户的 id、姓名以及推…...
新冠肺炎服务预约微信小程序的设计与实现ssm+论文源码调试讲解
第4章 系统设计 4.1 系统设计的原则 在系统设计过程中,也需要遵循相应的设计原则,这些设计原则可以帮助设计者在短时间内设计出符合设计规范的设计方案。设计原则主要有可靠性,安全性,可定制化,可扩展性,可…...
多模态人工智能在零售业的未来:通过GPT-4 Vision和MongoDB实现智能产品发现
多模态人工智能在零售业的未来:通过GPT-4 Vision和MongoDB实现智能产品发现 引言 想象一下,顾客在购物时只需上传一张他们所期望的服装或产品的照片,几分钟内便能收到来自他们最喜欢的商店的个性化推荐。这就是多模态人工智能在零售领域所带…...
3D目标检测数据集——kitti数据集
KITTI官网网址:The KITTI Vision Benchmark Suite 下载数据集:The KITTI Vision Benchmark Suite KITTI数据集论文:CMSY9 github可视化代码:GitHub - kuixu/kitti_object_vis: KITTI Object Visualization (Birdview, Volumetric LiDar point cloud )...
从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)
引言: 随着CentOS项目宣布停止维护CentOS 8并转向CentOS Stream,许多企业和组织面临着寻找可靠替代方案的挑战。在这个背景下,龙蜥操作系统(OpenAnolis)作为一个稳定、高性能且完全兼容的企业级Linux发行版࿰…...
Cocos二维Slider
1、可拖动区域计算 根据UI的世界坐标了宽高信息计算出handle的坐标范围 this.posMin new Vec2(this.node.worldPosition.x - this.uiSelf.contentSize.width * 0.5, this.node.worldPosition.y - this.uiSelf.contentSize.height * 0.5); this.posMax new Vec2(this.node.w…...
kubeneters-循序渐进Cilium网络(二)
文章目录 概要IP 地址配置接口配置解析结论 概要 接续前一章节,我们还是以这张图继续深入Cilium网络世界 IP 地址配置 通过检查 Kubernetes 集群的当前环境,可以获取实际的 IP 地址和配置信息。这些信息将被补充到之前的网络示意图中,以使…...
【再谈设计模式】模板方法模式 - 算法骨架的构建者
一、引言 在软件工程、软件开发过程中,我们经常会遇到一些算法或者业务逻辑具有固定的流程步骤,但其中个别步骤的实现可能会因具体情况而有所不同的情况。模板方法设计模式(Template Method Design Pattern)就为解决这类问题提供了…...
[开源]自动化定位建图系统(视频)
系统状态机: 效果展示: 1、 机器人建图定位系统-基础重定位,定位功能演示 2、 机器人建图定位系统-增量地图构建,手动回环检测演示 3、… 开源链接: https://gitee.com/li-wenhao-lwh/lifelong-backend Qt人机交互…...
Kali系统(Debian 10.3) 遇到的问题
目录 问题一:非问题 kali 基础官网与安装 问题二: 问题三: Kali系统 MySQL问题Cant connect to local MySQL server through socket /run/mysqld/mysqld.sock (2) 问题四:重新安装MySQL 也就是MariaDB(MariaDB 含 MySQL相关…...
P2249 【深基13.例1】查找
题目描述 输入 n 个不超过 109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a1,a2,…,an,然后进行 m 次询问。对于每次询问,给出一个整数 q,要求输出这个数字在序列中第一次出现的编号,如…...
【时时三省】(C语言基础)常见的动态内存错误3
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 对同一块动态内存多次释放 示例: 解决方法就是释放完把p等于空指针就好了 动态开辟的空间忘记释放 示例: 只有p能找到这块空间 只有p知道这块动态开辟的空间起始地…...
Three.js 性能优化:打造流畅高效的3D应用
文章目录 前言一、减少几何体复杂度(Reduce Geometry Complexity)二、合并几何体(Merge Geometries)三、使用缓冲区几何体(Use BufferGeometries)四、纹理压缩与管理(Texture Compression and M…...
CancerGPT :基于大语言模型的罕见癌症药物对协同作用少样本预测研究
今天我们一起来剖析一篇发表于《npj Digital Medicine》的论文——《CancerGPT for few shot drug pair synergy prediction using large pretrained language models》。该研究聚焦于一个极具挑战性的前沿领域:如何利用大语言模型(LLMs)在数…...
Clisoft SOS与CAD系统集成
Clisoft SOS与CAD系统集成 以下内容大部分来自官方文档,目前只用到与Cadence Virtuoso集成,其他还未用到,如有问题或相关建议,可以留言。 与Keysight ADS集成 更新SOS客户端配置文件sos.cfg,以包含支持ADS的模板&am…...
基于 GEE 下载逐年 MODIS 地表温度 LST 数据
目录 1 地表温度(LST) 2 数据准备 3 代码实现 3.1 加载研究区与数据集 3.2 数据预处理与标准化 3.3 逐年批量导出 3.4 可视化结果 4 运行结果 5 完整代码 1 地表温度(LST) 在遥感领域,地表温度(L…...