Linux:无需 root 权限即可从 /sys/kernel/debug 读取文件的权限

Linux:无需 root 权限即可从 /sys/kernel/debug 读取文件的权限

我想读取位于以下位置的小文本文件:/sys/kernel/debug/vgaswitcheroo/switch 没有root 权限。它包含有关显卡(专用 ATI Radeon 和集成 Intel HD3000)的信息。我编写了一个简单的脚本来显示我需要的信息,但它只在 root 权限下有效。我已经尝试更改文件和文件夹权限,但当我重新启动计算机时,问题仍然存在。是否可以永久更改该文件权限或所有者?

我为什么需要这个?要将该脚本与键盘快捷键绑定,并在按下组合键后获得以下 Ubuntu“对话框”:

图像

文件里面是什么switch?正如我之前所说,它只是简单的文本文件,包含以下内容:

0:IGD:+:功率:0000:00:02.0

1:DIS::关闭:0000:01:00.0

我的脚本status-radeon.sh

#!/bin/bash
CONTENT=`cat /sys/kernel/debug/vgaswitcheroo/switch | cut -d ':' -f 1-4 `
DISPLAY=:0 notify-send -t 4000 -i /home/Greg/Pictures/ati_radeon.png "GPU status" "$CONTENT"
echo "$CONTENT"

我的/etc/sudoers.tmp内容,没有以 # 开头的评论。它以nanoeditor 开头,但我认为它不相关。

Defaults        env_reset                                             
Defaults        mail_badpass Defaults       
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root    ALL=(ALL:ALL) ALL 
Greg    ALL=(ALL:ALL)   ALL 
Greg    ALL= NOPASSWD: /home/Greg/Scripts/status-radeon.sh

答案1

更改系统文件夹的权限并不是一个好主意。为什么不为 root 设置一个 crontab,将文件的内容复制到其他地方,然后让脚本从那里读取?

$ sudo crontab -e

添加如下一行:

 */5 * * * * cp /sys/kernel/debug/vgaswitcheroo/switch /home/YOUR_USER/switch

现在,每次您重新启动时,该文件将被复制到您的主目录(记得替换YOUR_USER为您的实际用户名),您可以在那里访问它。

答案2

你可以使用sudo允许某些用户(例如你)以 root 身份运行脚本

$ visudo

然后添加

username  ALL= NOPASSWD: /path/to/your/script

简要介绍sudohttp://www.sudo.ws/sudo/intro.html

相关内容