加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用PolicyKit为我的应用程序提供对受限文件的访问权限

发布时间:2020-12-15 21:33:23 所属栏目:百科 来源:网络整理
导读:我正在为Ubuntu编写一个 application,它允许您自定义Unity 2D桌面环境. 有些设置,我可以使用Dconf进行更改,这是特定于用户的.因此,如果一个用户更改设置,则仅适用于该用户. 但是,对于其他设置,我需要编辑位于/usr/share / unity-2d /中的普通用户无法写入的
我正在为Ubuntu编写一个 application,它允许您自定义Unity 2D桌面环境.
有些设置,我可以使用Dconf进行更改,这是特定于用户的.因此,如果一个用户更改设置,则仅适用于该用户.
但是,对于其他设置,我需要编辑位于/usr/share / unity-2d /中的普通用户无法写入的文本文件.为了解决这个问题,我认为让用户以root身份运行应用程序是一个好主意,这可以确保他们可以访问/usr/share / unity-2d /.仅当应用程序以root身份运行并且其中一个Dconf设置发生更改时,它才会在root用户的Dconf中更改,因此更改不适用于实际用户.

我需要找到解决这个问题的方法,我的第一个现实想法是使用PolicyKit.我需要确保我的应用程序以当前用户身份运行(因此并不总是以root身份运行),但它确实可以访问/usr/share / unity-2d /以及其中的文件.我正在使用Mono框架在C#中编写应用程序.我对PolicyKit没有任何经验,说实话,这是我第一次尝试制作一个严肃的Linux应用程序.

我的想法是PolicyKit,但是如果你们中的一个人有另一种(现实的)方法来实现这一点,那对我来说也没关系.如果归结为使用PolicyKit,我想了解更多有关如何执行此操作以及所有操作的信息.我知道我可以使用pkexec运行我的应用程序,但实际上我在应用程序中的一个按钮行中更多地考虑解锁需要访问该目录的功能,当时要求输入密码来获取写入权限到文件夹中的文件.通过这种方式,对运行应用程序的系统没有特殊权限的人仍然可以自定义一些基本设置.

解决方法

好吧,显而易见的解决方案是拥有两个进程,一个是带有GUI的普通用户应用程序,另一个是以root用户身份运行的文件.

例如.作为模拟“仅命令行”问题将以root身份写入文件:

sudo echo Hello World> /root/hello.txt

不起作用,因为重定向是由交互式shell完成的,并且它没有root访问权限.

经典的解决方案是使用两个过程:

echo Hello World | sudo tee /root/hello.txt

现在/ tero打开/root/hello.txt文件,以root身份(通过sudo)运行,这是允许的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读