相关疑难解决方法(0)

以编程方式写入具有 root 权限的文件的最安全方法是什么?

一个巨大的应用程序需要在某个特定时间对需要 root 权限的文件执行少量写入。它不是真正的文件,而是作为文件暴露给 Linux 的硬件接口。

为了避免为整个应用程序授予 root 权限,我编写了一个 bash 脚本来执行关键任务。例如,以下脚本将启用硬件接口的端口 17 作为输出:

echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
Run Code Online (Sandbox Code Playgroud)

但是,由于suid我系统上的 bash 脚本被禁用,我想知道实现这一目标的最佳方法是什么。

  1. 使用此处介绍的一些解决方法

  2. sudo从主应用程序调用脚本,并相应地编辑 sudoers 列表,以避免在调用脚本时需要密码。授予 sudo 权限让我有点不舒服echo

  3. 只需编写一个 C 程序,使用fprintf,并将其设置为 suid root。对字符串和文件名进行硬编码,并确保只有 root 可以编辑它。或者从文本文件中读取字符串,同样确保没有人可以编辑该文件。

  4. 我没有想到的其他一些解决方案比上面介绍的更安全或更简单?

setuid privileges

35
推荐指数
4
解决办法
4006
查看次数

如何使用 `udev` 更改 /sys 中的权限以更改 LED/灯的状态?

我有一个 Thinkpad,想使用 ThinkLight(屏幕上方的白色闪光灯,用于点亮键盘)来接收有关传入 Jabber 消息的通知。

很容易实现,只需将其更改/sys/class/leds/tpacpi::thinklight/brightness为 255。我将使用一个简单的 Bash 脚本来实现,该脚本将让灯闪烁 3 次。

但是为了能够做到这一点,我需要更改权限,不仅 root 可以更改此文件。
而且我不想sudo chmod o+w /sys/class/leds/tpacpi::thinklight/brightness每次开机后都这样。

我认为,最好的解决方案是udev为此使用。但是,我以前从未使用udev过,并且对我在网上找到的教程感到很困惑。

我试过这个udev规则:

KERNEL=="tpacpi::thinklight", MODE="0666"
Run Code Online (Sandbox Code Playgroud)

KERNEL="thinklight", MODE="0666"
Run Code Online (Sandbox Code Playgroud)

但它不起作用。虽然我在运行时没有收到错误udevadm test /class/leds

感谢您的帮助和点击。或者也许是其他解决方案。

linux permissions udev thinkpad

13
推荐指数
2
解决办法
4669
查看次数

尽管 /sys/class/gpio/gpio18/value 具有文件权限,但仍无法写入 GPIO 引脚

这是在树莓派上。

这是 sudo ls -lL /sys/class/gpio/gpio18 的输出:

-rwxrwx--- 1 root     gpio     4096 Mar  8 10:50 active_low
-rwxrwx--- 1 root     gpio     4096 Mar  8 10:52 direction
-rwxrwx--- 1 cameron  cameron  4096 Mar  8 10:50 edge
drwxrwx--- 2 root     gpio        0 Mar  8 10:50 power
drwxrwx--- 2 root     gpio        0 Mar  8 10:50 subsystem
-rwxrwx--- 1 root     gpio     4096 Mar  8 10:50 uevent
-rwxrwx--- 1 cameron  cameron  4096 Mar  8 10:50 value
Run Code Online (Sandbox Code Playgroud)

所以看起来我现在应该可以使用价值了,太好了。然而:

cameron@raspberrypi~ $ echo 1 > /sys/class/gpio/gpio18/value
-bash: /sys/class/gpio/gpio18/value: Permission …
Run Code Online (Sandbox Code Playgroud)

permissions sysfs gpio

8
推荐指数
2
解决办法
3万
查看次数

标签 统计

permissions ×2

gpio ×1

linux ×1

privileges ×1

setuid ×1

sysfs ×1

thinkpad ×1

udev ×1