Smartctl 打开设备遇到 Permission denied 问题排查过程记录

简介: 今天使用 Zabbix 监控系统对磁盘监控的时候发现一个问题,smartctl 命令不能用普通用户去执行。




今天使用 Zabbix 监控系统对磁盘监控的时候发现一个问题,smartctl 命令不能用普通用户去执行。


smartcl 是磁盘管理工具 Smart 提供的命令,使用这个命令来获取磁盘的一些状态信息,比如下面这样:



[root@Erdong-TEST ~]# smartctl -A /dev/nvme0n1
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF SMART DATA SECTION ===
SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        29 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    80 [40.9 MB]
Data Units Written:                 0
Host Read Commands:                 1,897
Host Write Commands:                10
Controller Busy Time:               0
Power Cycles:                       10
Power On Hours:                     923
Unsafe Shutdowns:                   7
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
[root@Erdong-TEST ~]#



Smart 工具的 smartctl 命令只能用 root 去执行,是不能用普通用户执行的。


但是当 Zabbix 监控系统使用这个命令监控的时候,缺省是使用 zabbix 这个系统里创建的用户来执行的,这个时候只能使用 root 权限来执行,比如添加 sudo 权限给 zabbix 用户来执行这个命令。



给 zabbix 用户root 权限以后继续执行这个命令,这个时候就会报错:


[zabbix@Erdong-TEST ~]$ smartctl -A /dev/nvme0n1
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
Smartctl open device: /dev/nvme0n1 failed: Permission denied



这里又提到了一个没权限,这个没有权限是 /dev/nvme0n1 这个块设备没有权限。查看块设备发现它的数组是 disk ,这个组有读写权限,那么给 zabbix 用户添加到 disk 组中,那么就可以解决上边的问题。


[root@Erdong-TEST ~]# ll -h /dev/nvme0n1
brw-rw---- 1 root disk 259, 0 5月  31 10:43 /dev/nvme0n1
[root@Erdong-TEST ~]#




添加到组可以使用这个命令:


usermod -a -G disk zabbix



如果到这里你的问题解决了的话,那么恭喜。


我接着遇到了新的问题:


[zabbix@Erdong-TEST ~]$ smartctl -A /dev/nvme0n1
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
Read NVMe Identify Controller failed: NVME_IOCTL_ADMIN_CMD: Permission denied





NVME_IOCTL_ADMIN_CMD 是 NVME 的一个函数,这我不知道要怎么给函数授权了。


所以我用了一个终极大招,我修改了 Zabbix Agent 的启动用户,修改成了 root ,现在一下就解决问题了。



对于 Zabbix 遇到权限问题,Zabbix 官方的建议是在 sudo 命令的文件 /etc/sudoers 文件中对命令进行授权,并且最好遵循最小授权的原则。我这次在执行过程中,到最后进入到了函数的权限管理,是没什么办法了,只能使用 root 用户来解决了。


如果你们有其他的方法,欢迎交流讨论。



相关文章
|
Java Android开发
android app在系统重启绕过USB授权对话框,自动获取USB权限
最近由于项目需要参考了很多关于不修改android源码情况下实现屏蔽USB授权对话框的博文,结合自身实践阐述给出细节的实现过程。
4978 0
|
2月前
|
网络安全
winSCP上传报错无权访问。 错误码:3 服务器返回的错误消息:Permission denied
【10月更文挑战第3天】winSCP上传报错无权访问。 错误码:3 服务器返回的错误消息:Permission denied
560 1
|
2月前
|
网络协议 网络架构
winSCP从本地上传到服务器提示错误码:3,服务器返回的错误消息:Permission denied
【10月更文挑战第3天】从本地上传到服务器提示错误码:3,服务器返回的错误消息:Permission denied
62 1
|
5月前
|
负载均衡 Serverless API
函数计算操作报错合集之如何解决上传二进制包时报错: "Permission denied (os error 13)"
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
6月前
|
分布式计算 Hadoop 网络安全
uniapp小程序定位 配置permission失败问题
uniapp小程序定位 配置permission失败问题
|
监控 Shell
项目采坑日志——zabbix agent执行脚本,提示 Permission denied
项目采坑日志——zabbix agent执行脚本,提示 Permission denied
876 0
|
Shell Linux
Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
1319 0
Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
|
小程序 IDE 开发工具
排查指南 | 当 mPaaS 小程序真机扫码时提示 "应用更新错误(50002)"
APP 扫码 mPaas 小程序弹出 toast 信息:应用更新错误(50002)
3425 0
排查指南 | 当 mPaaS 小程序真机扫码时提示 "应用更新错误(50002)"
|
小程序 安全 专有云
排查指南 | mPaaS 小程序提示“网络不给力”时该如何排查?
从此,Android 应用打开 mPaaS 小程序,告别“网络不给力”
3247 0
排查指南 | mPaaS 小程序提示“网络不给力”时该如何排查?