首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过后台shell脚本提升权限

通过后台shell脚本提升权限
EN

Unix & Linux用户
提问于 2016-07-09 21:03:30
回答 2查看 355关注 0票数 1

我想写入位于/dev/usb/lp0的设备文件(打印机的文件)。该文件由lp用户和组拥有。每当我将打印机设备连接到系统时,就会创建此文件。

我试着加入lp组。但是,当打印机连接时,lp0文件不会出现。将自己从小组中移出解决了这个问题。

一个获得写许可的解决方案是-

  1. 在设备连接时进行检测
  2. 触发运行sudo chmod 0666 /dev/usb/lp0的shell脚本

这使我找到了https://unix.stackexchange.com/a/28711的答案。

外壳脚本被成功触发,但它没有运行sudo command*,因为外壳脚本不是从终端执行的。我尝试过使用sudogksudo,两者都未能提示我输入密码,也就是说,我无法通过后台shell脚本提升权限。

我试过什么?

  1. setuid来自Unix & Linux @ StackExchange,但这似乎是个非常糟糕的主意。
  2. echo 'my_insecure_password' | sudo -S command,这不管用*。

我没有尝试Polkit,这是在其他答案中提出的,因为它的复杂程度。但我愿意按照正确的方向去做。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-07-09 23:44:49

将自己添加到lp组可能是这里最好的解决方案。这不会导致lp0文件不出现。(理论上,您的系统可能被配置为如果您在lp0组中就不会出现lp,而是1.必须是本地配置,而不是发行版中的默认设置;2.我不明白为什么有人会设置这个设置。)

以下内容仅是为了学术利益。在你的场景中,你不需要这个。

如果您需要更改设备文件的权限,那么如何在USB设备插件上运行自定义脚本?并不完全是您所需要的--对于需要脚本的更复杂的情况,这是这样做的。若要更改Unix权限或设备文件的所有权,请在udev规则中直接使用OWNERGROUPMODE分配。也就是说,在/etc/udev/rules.d下创建一个文件,但是该文件中的行应该有类似于GROUP="mygroup"而不是RUN="/path/to/script"的内容。

如果希望执行更复杂的操作,例如设置访问控制列表,则需要运行脚本。您不需要提升该脚本中的权限:它已经作为root运行了!只需调用需要以root方式运行的程序,例如setfacl

票数 6
EN

Unix & Linux用户

发布于 2016-07-09 21:18:13

对于这个问题,我不推荐这个解决办法。

您可以编辑/etc/sudoers以配置sudo以允许在没有密码的情况下执行脚本。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/294888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档