我想写入位于/dev/usb/lp0
的设备文件(打印机的文件)。该文件由lp
用户和组拥有。每当我将打印机设备连接到系统时,就会创建此文件。
我试着加入lp
组。但是,当打印机连接时,lp0
文件不会出现。将自己从小组中移出解决了这个问题。
一个获得写许可的解决方案是-
sudo chmod 0666 /dev/usb/lp0
的shell脚本这使我找到了https://unix.stackexchange.com/a/28711的答案。
外壳脚本被成功触发,但它没有运行sudo command
*,因为外壳脚本不是从终端执行的。我尝试过使用sudo
和gksudo
,两者都未能提示我输入密码,也就是说,我无法通过后台shell脚本提升权限。
setuid
来自Unix & Linux @ StackExchange,但这似乎是个非常糟糕的主意。echo 'my_insecure_password' | sudo -S command
,这不管用*。我没有尝试Polkit
,这是在其他答案中提出的,因为它的复杂程度。但我愿意按照正确的方向去做。
发布于 2016-07-09 23:44:49
将自己添加到lp
组可能是这里最好的解决方案。这不会导致lp0
文件不出现。(理论上,您的系统可能被配置为如果您在lp0
组中就不会出现lp
,而是1.必须是本地配置,而不是发行版中的默认设置;2.我不明白为什么有人会设置这个设置。)
以下内容仅是为了学术利益。在你的场景中,你不需要这个。
如果您需要更改设备文件的权限,那么如何在USB设备插件上运行自定义脚本?并不完全是您所需要的--对于需要脚本的更复杂的情况,这是这样做的。若要更改Unix权限或设备文件的所有权,请在udev规则中直接使用OWNER
、GROUP
和MODE
分配。也就是说,在/etc/udev/rules.d
下创建一个文件,但是该文件中的行应该有类似于GROUP="mygroup"
而不是RUN="/path/to/script"
的内容。
如果希望执行更复杂的操作,例如设置访问控制列表,则需要运行脚本。您不需要提升该脚本中的权限:它已经作为root运行了!只需调用需要以root方式运行的程序,例如setfacl
。
发布于 2016-07-09 21:18:13
对于这个问题,我不推荐这个解决办法。
您可以编辑/etc/sudoers
以配置sudo以允许在没有密码的情况下执行脚本。
https://unix.stackexchange.com/questions/294888
复制相似问题