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授权对话框的博文,结合自身实践阐述给出细节的实现过程。
4762 0
|
22天前
|
负载均衡 Serverless API
函数计算操作报错合集之如何解决上传二进制包时报错: "Permission denied (os error 13)"
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
2月前
|
分布式计算 Hadoop 网络安全
|
11月前
|
小程序
uniapp小程序定位 配置permission失败问题
uniapp小程序定位 配置permission失败问题
|
监控 Shell
项目采坑日志——zabbix agent执行脚本,提示 Permission denied
项目采坑日志——zabbix agent执行脚本,提示 Permission denied
679 0
|
数据安全/隐私保护 iOS开发
iOS逆向小技能:解锁无密码的设备、判断设备是否锁定、锁定设备、打开某个程序
介绍lua 函数: runApp、closeApp、getScreenSize、getDeviceID、lua_exit、isFrontApp。
227 0
|
运维 Java 大数据
关于Windows无权修改Host解决方案-极简方案
关于Windows无权修改Host解决方案-极简方案
关于Windows无权修改Host解决方案-极简方案
Linux_异常_02_WinSCP上传文件时显示Permission denied
异常现象如下:         二、解决方案 1.设置对应目录权限全开,就可以上传文件到这个目录了 sudo chmod 777 /devloper
1923 0
|
Android开发
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )
365 0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )