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 用户来解决了。


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



相关文章
|
Linux Windows
Linux中/dev/null和/dev/zero的作用
Linux中/dev/null和/dev/zero的作用
380 2
|
消息中间件 存储 负载均衡
深入了解Kafka中Topic的神奇之处
深入了解Kafka中Topic的神奇之处
798 0
|
存储 缓存 Linux
【Shell 命令集合 磁盘维护 】Linux 设置和查看硬盘驱动器参数 hdparm命令使用教程
【Shell 命令集合 磁盘维护 】Linux 设置和查看硬盘驱动器参数 hdparm命令使用教程
538 0
|
前端开发 程序员
Mac电脑:安装cnpm(补充步骤)
在前端开发初期,对于新入行的新手来说,掌握和使用cnpm是必不可少的过程,安装cnpm可以加快安装软件的速度,想要使用cnpm,首先要知道安装步骤,以及解决安装使用的时候遇到的一些问题。本篇博文对之前的npm安装步骤流程做一个补充,大牛可以忽略此篇文章,分享给有需要的人,具体的内容如下所示。
2667 0
Mac电脑:安装cnpm(补充步骤)
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
261156 0
|
存储 安全 测试技术
【超实用却暗藏杀机】sshpass:一键免密SSH登录的神器,为何生产环境却要敬而远之?探秘背后的安全隐患与替代方案!
【8月更文挑战第16天】sshpass 是一款便捷工具,可实现自动化SSH登录,简化脚本中的远程连接流程。通过后台自动处理密码输入,便于执行远程操作,如 `sshpass -p 'yourpassword' ssh user@remotehost`。也可结合更多SSH选项使用,例如指定私钥文件。然而,因需明文传递密码,存在较大安全隐患,不适于生产环境;推荐使用公钥认证以增强安全性。
1092 4
|
存储 Linux
挂在mount报错can't read superblock修复过程
`can't read superblock`错误表明存在文件系统或硬件问题,解决这类问题需要先从软件层面尝试修复,无效时再考虑硬件替换。值得注意的是,数据备份对于防范这类突发故障至关重要,应定期进行数据备份,以最大限度减少数据丢失风险。
7474 3
|
关系型数据库 API C#
C#调用执行命令行窗口cmd,及需要交互执行的处理
C#执行外部程序用到的是Process进程类,打开一个进程,可以指定进程的启动信息StartInfo(启动的程序名、输入输出是否重定向、是否显示UI界面、一些必要参数等)...
4115 0
C#调用执行命令行窗口cmd,及需要交互执行的处理
|
人工智能 网络协议 Shell
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
内网穿透实现公网访问自己搭建的Ollma架构的AI服务器
626 2
|
Ubuntu 安全 网络协议