普通用户如何访问/dev/sda文件

普通用户如何访问/dev/sda文件

我的操作系统是 Debian9,我需要smartctl在脚本中使用命令来获取一些硬盘信息。但由于普通用户有一些特殊的环境变量,我无法通过 执行此脚本sudo。所以我执行命令ls -l /dev/ | grep sd,发现 的组/dev/sdbdisk。所以我编辑/etc/group将普通用户添加到该disk组。然后运行脚本,它仍然显示Smartctl open device: /dev/sda failed: Permission denied。我该如何解决这个问题?谢谢大家!

答案1

好吧,我找到办法了。

sudo chmod u+s /usr/sbin/smartctl
sudo ln /usr/sbin/smartctl /usr/bin/smartctl

这样我终于可以在不使用 sudo 的情况下执行命令了。

答案2

不要通过 sudo 运行整个脚本;将其更改为仅通过 sudo 运行 smartctl。

或者,使用 /etc/sudoers 选项env_keep来保留环境变量:

Defaults env_keep += "EDITOR VISUAL PAGER"

Defaults!someuser env_keep += "API_CLIENT_ID API_CLIENT_SECRET"

授予系统磁盘的完全读/写访问权限会产生巨大的安全问题 - 用户现在可以读取/写入属于任何用户的所有文件;例如,他们甚至可以恢复已删除的数据,或覆盖 /etc/sudoers 并授予自己无限制的 root 访问权限。

除此之外,使用 SG_IO 的 SCSI 命令需要比普通设备写入更多的权限 - 通常它们需要进程能力例如 CAP_SYS_ADMIN 或 CAP_SYS_RAWIO。分配这些权限本质上使用户除了名字之外,什么都做不了。

相关内容