snmp概率性认证失败问题分析
更新时间: 2026/06/02
在Gitcode上查看源码

问题背景

- 单板类型:NA;
- 软件版本:openUBMC 25.09;
- 涉及功能:白牌包导入ssl证书;
- 触发条件:按照社区白牌包制作流程,制作的白牌包在web页面进行升级,升级完成后app.log查看日志。
- 业务表现:预期SNMP 命令应成功执行并返回对应 MIB 节点信息;实际命令返回 Authentication failure 错误,即使凭据正确也无法通过认证。

问题复现步骤

  1. 重启 BMC 系统;

  2. 立即或稍后执行 SNMPv3 的 snmpwalk 命令;

    text
    snmpwalk -v3 -l priv -a SHA256 -x AES -u Administrator -A [模糊字符] -X [糊字符] 1.[模糊数字].6.1.2.1.4.20  
    snmpwalk: Authentication failure (incorrect password, community or key)
  3. 概率性出现认证失败错误;

关键日志信息

查看app.log日志,确认报错如下:

text
pam_tally_ext.c(78): open faillog file failed.
user_login_lock.c(152): open tally file error
[user login lock] call get_pam_tally failed, ret: -1

定位过程

  1. 日志中反复出现以下关键错误信息:

    text
    pam_tally_ext.c(78): open faillog file failed.
    user_login_lock.c(152): open tally file error
    [user login lock] call get_pam_tally failed, ret: -1
  2. 进一步排查发现 /dev/shm/tallylog 目录权限异常:

    text
    # 原始状态(错误)
    drwxrwxrwt 19 secoxx root 640 ... /dev/shm/tallylog/
    # snmpd 进程运行身份
    ps aux | grep snmpd
    snmpd_u+ 50469 ... -g snmpd_user -u snmpd_user

    说明:

    • snmpd 守护进程以用户 snmpd_user 和组 snmpd_user 运行;
    • /dev/shm/tallylog 的属组为 root,而非 snmpd_user,导致进程无权访问该目录下的认证状态记录文件。

问题原因

有组件比account先以sec_box用户去创建了/dev/shm/tallylog目录。

  • 正常情况下/dev/shm/tallylog目录用户组是snmpd_user,异常情况是sec_box,导致snmp命令打开文件失败,改成snmpd_user之后就发送成功了。

解决方案

修改 /dev/shm/tallylog 目录的属组为 snmpd_user:

text
# 修改目录属组
chown -R :snmpd_user /dev/shm/tallylog
# 或指定用户和组
chown secoxx:snmpd_user /dev/shm/tallylog

PR链接

修复snmp概率性认证失败的问题