玩转OurBMC第十九期:BMC用户管理模块
【栏目介绍:“玩转OurBMC”是OurBMC社区开创的知识分享类栏目,主要聚焦于社区和BMC全栈技术相关基础知识的分享,全方位涵盖了从理论原理到实践操作的知识传递。OurBMC社区将通过“玩转OurBMC”栏目,帮助开发者们深入了解到社区文化、理念及特色,增进开发者对BMC全栈技术的理解。
欢迎各位关注“玩转OurBMC”栏目,共同探索OurBMC社区的精彩世界。同时,我们诚挚地邀请各位开发者向“玩转OurBMC”栏目投稿,共同学习进步,将栏目打造成为汇聚智慧、激发创意的知识园地。】
用户管理是系统中运维管理的重要组成部分,主要涉及权限的划分和资源的分配。通过为不同用户设定不同的权限级别,可以确保系统的安全性和稳定性。例如,管理员拥有最高权限,可以进行系统配置、用户管理、网络配置等操作;而普通用户则仅可以查看系统的配置状态。
在OpenBMC软件栈中,默认支持本地用户和ldap远端用户两种模式。前者将用户信息保存在BMC文件系统中,通过shadow提供的工具(如useradd、usermod等)或glibc提供的函数接口(如getspnam_r、fgetpwent_r等)进行管理;后者将用户的信息保存在ldap服务器的数据库中,由ldap统一管理,通过BMC端的ldap客户端通过网络进行访问。两种模式的认证均由linux-pam模块完成,该模块支持动态增加,如OpenBMC中,添加pam_ldap.so模块用于ldap用户的认证,添加pam_ipmicheck.so模块用于ipmi用户密码的检查。
用户管理流程
在OpenBMC中,用户管理整体框如下图所示:
下面对各模块功能进行介绍:
-
phosphor-user-manager(简称user_mgr)和phosphor-ldap-conf应用,基于dbus编程的思想,将底层操作的接口封装成方法或者属性,暴露到DBUS总线上,供其他程序调用。User_mgr主要提供用户的创建、修改、删除、查询等dbus方法或者属性,用于用户信息管理用户,phosphor-ldap-conf主要提供配置ldap服务器信息(如uri、BaseDN、BindDN等)和ldap用户分组权限的功能。
-
ipmid和bmcweb是用户管理的对外操作接口。
-
Libpam主要配置用户认证、账户信息、密码和会话的规则,包含密码的复杂度、账户的锁定时间和尝试登录次数、认证方式等;
-
shadow-utils提供基础的用户管理工具,配置文件为/etc/login.defs;
-
nslcd是轻量型的ldap客户端,用于访问ldap服务器,配置文件/etc/nslcd.conf;
-
glibc提供查询获取修改用户信息的底层接口,获取的数据源及其优先级由/etc/nsswitch.conf中指定;
下面结合实际的代码,讲述用户管理和认证的流程。
-
查询修改用户信息
ipmi/bmcweb发起请求,调用dbus的方法创建用户、查询、删除用户或修改某用户信息或者分组,openbmc中用户的权限和访问通过用户所在的分组进行控制,如"redfish"分组的用户可调用redfish接口,"priv-admin"分组的用户具有管理员权限。user_mgr暴露的可调用的dbus的接口和属性如下;
1. 收到dbus调用后,user_mgr执行对应的动作,修改用户则调用shadow提供的工具,如useradd(添加用户)、usermod(修改用户)、userdel(删除)等,查询分组和用户信息,则调用glibc库和直接遍历本地文件获得;
2. shadow工具会根据login.defs中的配置规则,创建、修改用户信息;如果符合规则,则调用glibc库函数。然后根据nsswitch中的配置用户账户信息的数据源及优先级,修改最新的用户信息到对应的数据源,下面配置表示优先为本地文件保存的用户,其次为systemd中自动创建的临时用户(如容器、服务进程的动态用户),最后为ldap用户。
3. 如果是创建用户密码或者修改密码,在创建用户完成后,会调用libpam库提供的pam_start/pam_chauthtok/pam_end更新用户的密码信息,根据pam_start打开的文件中的规则对密码进行限制,文件在路径为/etc/pam.d下,如bmcweb的配置文件为”webserver”,密码规则使用公共的密码规则;
-
用户认证
ipmi/bmweb在用户认证前,检验用户的权限和分组,然后调用libpam提供的pam_start/pam_authenticate函数接口,根据pam的规则配置,传入用户信息进行认证。
如上述bmcweb中的配置的认证和账户规则,在使用公共规则的基础上,去掉非本地用户的redfish分组校验。ipmi则是使用公共的规则。
-
pam规则配置
PAM 配置文件(通常位于 /etc/pam.d/ 目录下)由多个模块组成,每个模块属于一种类型(如 account、auth、session、password)。配置格式为:<类型><控制标志><模块路径><模块选项>,如下述密码规则的配置。
PAM中的模块选项,有些在模块名后面填写,有些在/etc/sucurity/中的文件配置(Linux-PAM 1.6更新),配置文件为模块名.conf,如pam_failock配置文件为faillock.conf。下面介绍几个BMC使用的pam模块及其选项说明
pam_faillock模块用于记录并限制用户的登录尝试次数,以防止暴力破解攻击。当用户登录失败次数超过预设阈值时,账户会被临时锁定。
pam_pwquality模块用于密码复杂度的校验,保证密码的安全性和健壮性。
pam_pwhistory模块用于限制密码重用,防止用户循环使用旧密码绕过安全策略。
欢迎大家关注OurBMC社区,了解更多BMC技术干货。
OurBMC社区官方网站:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MySQL 派生表查询导致 Crash 的根源分析与解决方案
MySQL 派生表查询导致 Crash 的根源分析与解决方案 一、问题发现 在之前的 MySQL 8.0.32 使用中,发现使用以下带有派生表的 SQL 会导致 MySQL Crash,以下的sequence_table(2)替换为任何非常量表都行: 仅 MySQL 8.0.32 版本有影响。 EXPLAIN FORMAT=TREE select trim(ref_15.c_ogj), 0<>0 as c_lrcm63eani from (select 0<>0 as c_ogj from sequence_table(2) t1 where 0<>0 order by c_ogj asc) as ref_15; Crash 的堆栈如下: Thread 55 "mysqld" received signal SIGSEGV, Segmentation fault. Item_view_ref::used_tables (this=0x7fff2418f410) at sql/item.h:6670 6670 table_map inner_map =...
- 下一篇
「金融证券行业」 如何搭建自己的研发智能管理体系?
“未来信用卡一定会脱离塑料卡片这个介质,被手机取代。”这是十五年前,时任招商银行行长马蔚华的一句话。 十五年后,大数据、区块链、人工智能等技术深刻改变了客户行为和金融服务模式: 个人金融、账户交易、结算、资金托管等业务平台逐渐转至手机银行、信用卡APP,给金融证券行业的项目管理过程带来了不小的挑战: 产品与市场脱节,容易忽视市场需求,需要更快地响应速度; 业务逻辑复杂,业务需求多变,需要更合规的需求管理; 严格的监管合规要求,高安全性要求,需要更健全的管理流程; 海量数据处理与管理困难,需要更高质量、自动化的数据分析能力…… 在此背景下,金融行业面临的普遍困境是什么?禅道又能为其提供怎样的项目管理解决方案? 备注 金融项目-5,深入了解金融项目管理,让项目提效快人一步! 一、 金融行业项目管理的“三高”特性 在提供解决方案之前,我们可以先看金融行业的项目管理有哪些特性: 1. 高合规与强监管 金融体系的产品和服务必须严格遵循《商业银行法》《金融机构合规管理办法》等系列法规。合规性审查也应贯穿产品从设计到上线的全生命周期,涉及风控、法务、合规等多方协同。 因此,项目管理的首要任务便是保障...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装