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

java – 在大多数(如果不是全部)Linux发行版上以root权限重启jar

发布时间:2020-12-15 02:12:22 所属栏目:Java 来源:网络整理
导读:我正在开发一个 Java应用程序,它需要root / administrator权限才能正常运行.如果用户没有以这种权限启动应用程序,我想通知用户并使用这些权限重新启动程序.我已经想出如何在Windows和OS X上执行此操作,但无法在 Linux系统上找到方法.在Windows上,我找到了一
我正在开发一个 Java应用程序,它需要root / administrator权限才能正常运行.如果用户没有以这种权限启动应用程序,我想通知用户并使用这些权限重新启动程序.我已经想出如何在Windows和OS X上执行此操作,但无法在 Linux系统上找到方法.在Windows上,我找到了一个程序来提升你传递给它的任何命令,在OS X上可以通过运行一个简单的AppleScript来实现,但在Linux上,根本就没有可移植的方法.

我的计划是使用gksu,但我最近发现在大多数Linux系统上默认没有安装它,Debian也没有安装,所以我也无法安装它.是否有任何可移植的方法来重新启动具有root权限的应用程序,如果不是全部,则使用Java中的Linux发行版和版本?

编辑:我能够检查程序是否在所有平台上以管理员身份运行.

解决方法

你无法在Linux上干净利落地做这件事**因为升级特权的想法在Linux中并不存在. sudo是特权执行的事实上的答案,但所有真正做的是以root身份运行单个命令,这在概念上不同于以同一用户身份运行命令但具有升级权限.

考虑甚至基线sudo(甚至不考虑gksudo或类似)只是一个用户空间应用程序而不是Linux的核心组件.例如,Arch上的某个人如果喜欢用su做事,可能就没有安装过它.

这种理念与OS X和Windows形成鲜明对比,后者以桌面为中心,因此可以方便地模糊管理和常规使用之间的界限.因为Linux对桌面和服务器发行版使用相同的内核,所以服务器环境的高安全性要求往往会在内核级别围绕这些类型的策略占主导地位,所以你不会得到一个不具体的解决方案.某种面向桌面的发行版.

还有文化差异; Linux用户倾向于那种想要对如何运行事物进行细粒度控制的人,并且大多数人可能会查看以root权限作为一种病毒形式重新启动的东西:P

简单回答:抛出一条错误消息,说明应用程序需要root权限,退出时使用非零错误代码,每天调用它.这或多或少是Linux领域的“预期”行为.

Hack-y回答:如果您要在图形环境中运行,那么将gksudo作为依赖项与gtk(或kdesudo,如果您使用qt或其他等等)链接,然后使用它来提示升级.即使它没有默认安装,你也可以利用Linux发行版的精美软件包管理来轻松安装它,而无需你用户的任何额外工作.在非图形环境中,你只是运气不好.

**至少,对于一个应用程序而言,它的价值并不容易,特别是考虑到你的应用程序可以成为任何试图编写新rootkit的人的攻击媒介.

(编辑:李大同)

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

    推荐文章
      热点阅读