首页 > 其他分享 >3-ocserv基于pam_access模块进行用户访问控制

3-ocserv基于pam_access模块进行用户访问控制

时间:2023-10-15 17:35:04浏览次数:38  
标签:username 用户名 access etc conf ocserv pam

ocserv基于pam_access模块进行用户访问控制

一、配置 ocserv 的 PAM 文件

  1. 打开 /etc/pam.d/ocserv

    vim /etc/pam.d/ocserv
    
  2. 在默认/etc/pam.d/ocserv配置中的@include common-auth下方插入pam_access.so 模块进行用户访问控制:

    auth required pam_access.so
    

    请确保这行在 auth 部分的适当位置,因为pam的配置从上往下执行,因此需要注意执行的先后顺序

  3. 重启ocserv服务

    systemctl restart ocserv
    

二、配置access模块

  1. 编辑前,建议备份原始文件

    cp /etc/security/access.conf /etc/security/access.conf.bak
    
  2. 编辑/etc/security/access.conf 文件来定义用户的访问控制规则:

+ : zhangsan : ALL
+ : yunwei : ALL
- : ALL : ALL
  1. access模块配置说明:

    + : 允许的用户 : 允许的服务
    - : 禁止的用户 : 禁止的服务
    
    • +:表示允许访问的规则。
    • -:表示禁止访问的规则。
    • 允许的用户:指定被允许或禁止访问的用户名。可以使用单个用户名,也可以使用用户名的通配符(例如 * 表示所有用户)。
    • 允许的服务禁止的服务:指定被允许或禁止访问的服务。使用 ALL 表示所有服务。也可以指定特定的服务,例如 sshd 表示 SSH 服务,ocserv表示 ocserv服务。

三、脚本添加允许访问所有服务的用户

  1. 基于用户添加的脚本:./script.sh ${username}

    #!/bin/bash
    
    # 检查是否提供了用户名作为参数
    if [ "$#" -ne 1 ]; then
        echo "请提供一个用户名作为参数。"
        exit 1
    fi
    
    # 获取用户名参数
    username="$1"
    
    # 检查用户名是否已经存在于access.conf文件中
    if grep -q "^+ : $username : ALL" /etc/security/access.conf; then
        echo "用户名 $username 已经存在于access.conf文件中。"
    else
        # 添加新规则到access.conf文件
        sed -i "s/- : ALL : ALL/+ : $username : ALL/" /etc/security/access.conf
        # 将默认拒绝规则重新添加到文件末尾
        echo "- : ALL : ALL" | tee -a /etc/security/access.conf > /dev/null
        echo "用户名 $username 已经添加到access.conf文件中。"
    fi
    
  2. 添加用户权限、等待指定小时数后删除用户权限的脚本 ./script.sh ${username} ${time}

    #!/bin/bash
    
    if [ "$#" -ne 2 ]; then
        echo "请提供用户名和等待时间(小时)作为参数。"
        exit 1
    fi
    
    username="$1"
    time="$2"
    
    if grep -q "^+ : $username : ALL" /etc/security/access.conf; then
        echo "用户名 $username 已经存在于access.conf文件中。"
    else
        sed -i "s/- : ALL : ALL/+ : $username : ALL/" /etc/security/access.conf
        echo "- : ALL : ALL" | tee -a /etc/security/access.conf > /dev/null
        echo "用户名 $username 已经添加到access.conf文件中。"
    fi
    
    at now + "$time" hours <<< "sed -i '/^+ : $username : ALL/d' /etc/security/access.conf"
    echo "用户权限已经添加,并将在 $time 小时后被删除。"
    
    

标签:username,用户名,access,etc,conf,ocserv,pam
From: https://www.cnblogs.com/yujiastudio/p/17765854.html

相关文章

  • ACCESS 汉字转成拼音首字母
    '拼音首字母PublicFunctionHZtoPY(ByValstrHZAsString)AsStringDimiAsInteger,intCountHZAsIntegerDimHZAsStringstrHZ=Trim(strHZ)intCountHZ=Len(strHZ)HZtoPY=""Fori=1TointCountHZHZ=M......
  • 百度资源搜索平台出现:You do not have the proper credential to access this page.怎
    ForbiddensitenotallowedYoudonothavethepropercredentialtoaccessthispage.Ifyouthinkthisisaservererror,pleasecontactthewebmaster.如果你的百度资源平台,点进去出现这个提示,说明您的网站已经被百度清退了。如果你的网站被清退了,网站可能会出现关键词,收......
  • 什么是Apache Access Log中的OPTIONS *的含义
    访问日志在Apache的AccessLog中会看到很多如下的访问日志:127.0.0.1--[05/May/2011:10:54:07+0800]"OPTIONS*HTTP/1.0"200-127.0.0.1--[05/May/2011:10:54:08+0800]"OPTIONS*HTTP/1.0"200-127.0.0.1--[05/May/2011:10:54:09+0800]"OPTIONS......
  • access
    access函数是C语言标准库中的一个函数,用于检查文件是否可以访问。函数原型intaccess(constchar*path,intmode);path:要检查的文件或目录的路径。mode:指定操作的方式,可以是以下值之一:F_OK:用于检查文件是否存在。R_OK:用于检查文件是否可读。W_OK:用于检查文件是否......
  • java中如何对特大文件做断点续传RandomAccessFile
    Java中可以使用 RandomAccessFile 类来实现特大文件的断点续传功能。importjava.io.File;importjava.io.IOException;importjava.io.RandomAccessFile;importjava.net.URL;importjava.net.HttpURLConnection;publicclassResumeDownloadExample{publicstaticvoi......
  • 手工升级ACCESS到SQLSERVER
    1、必须先安装MicrosoftOfficeAccess2003,和SQLServer2000。 2、把旧的数据库备份,备份完成后,用Access2003打开MDB数据库,在打开时会出现一个警告,不要理会它(安全警告),按打开键,打开后按工具栏——数据库实用工具——转换数据库——转换为2002-2003格式,把数据库转换成2003格式......
  • ACCESS 报表分页-指定显示固定行数
    在报表中插入三个无关联的文本框控件,取名分别为Text,Text2,Text3,他们的宽/高,上/左边距按需求自定义,可见均设置为否,如果你需要显示序号的话,text3可设置为可见text 控件来源:=1text2:控件来源: =IIf([Text]<[Text3]+1,[Text],IIf(([Text]Mod[Text3])=0,[Text3],([Text......
  • 堡垒机AccessClient插件在Mac苹果电脑闪退,已解决
    我的配置:Macmini,AppleM2,MacOS版本13.4(22F66)先来总结我的方案:1.安装Python3;2.修改main.scpt并生效;3.看指定输出的日志提示什么;4.最后需要安装MicrosoftRemoteDesktopforMac。最初的解决方案:https://www.zhihu.com/question/435060483改了日志输出位置,查看日志,找不对具......
  • 关于 Failed to bind properties under 'sky.alioss.access-key-id' to java.lang.Str
    问题描述废话不多说,上截图解决方案问题出现的原因:因为自己没有按照格式去运行程序,在yml中把他们得位置向前一个单位就解决问题了......
  • access 使用Update更新记录时,提示"操作必须使用一个可更新的查询"
    原SQL:UPDATE刀具申购明细SET刀具申购明细.关闭=-1where刀具申购明细.申购数量<=(SELECTSum(Round(Nz([入库数量],0)*1,2))AS入库合计FROM采购入库tempLEFTJOIN刀具入库明细ON采购入库temp.申购ID=刀具入库明细.采购IDGROUPBY采购入库temp.申购ID)我本......