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授权对话框的博文,结合自身实践阐述给出细节的实现过程。
4785 0
|
2月前
|
负载均衡 Serverless API
函数计算操作报错合集之如何解决上传二进制包时报错: "Permission denied (os error 13)"
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
3月前
|
分布式计算 Hadoop 网络安全
|
Java Android开发
Android10.0(Q) 网络自动校时bug修改
Android10.0(Q) 网络自动校时bug修改
135 0
|
12月前
|
小程序
uniapp小程序定位 配置permission失败问题
uniapp小程序定位 配置permission失败问题
|
监控 Shell
项目采坑日志——zabbix agent执行脚本,提示 Permission denied
项目采坑日志——zabbix agent执行脚本,提示 Permission denied
727 0
|
Android开发
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(三)
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(三)
136 0
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(三)
|
Android开发
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(二)
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(二)
318 0
【Android 逆向】Android 权限 ( 查看内存信息 | 查看 CPU 信息 | 查看电池信息 | 查看账户信息 | 查看 Activity 信息 | 查看 Package 信息 )(二)
|
Android开发
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )
375 0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )
|
开发工具 Android开发
Android应用权限检查
现在应用市场的要求越来越高了,而且随着Android版本的升级,官方对于权限这部分的管控越来越严格,因此我们秉着最少可用原则,绝不向用户申请额外的权限,但由于团队规模越来越大,很难保证某个模块没有新增权限,所以我们需要一个工具可以简单的给出每个版本应用的权限变化信息。
666 0