首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法从码头集装箱上运行"pkexec“?

有没有办法从码头集装箱上运行"pkexec“?
EN

Stack Overflow用户
提问于 2019-06-24 11:38:33
回答 1查看 1.2K关注 0票数 1

我正在尝试设置一个Docker映像(我的Dockerfile在这里可用,很抱歉,法语自述文件:https://framagit.org/Gwendal/firefox-icedtea-docker),它使用旧版本的火狐和旧版本的Java运行旧的Java来启动VPN。我的映像确实有效,并且成功地允许我在Firefox中启动Java。

不幸的是,上述applet随后尝试在容器中运行以下命令(我只是从命令中删除了--config部件,因为这里并不重要):

代码语言:javascript
复制
INFO: launching '/usr/bin/pkexec sh -c /usr/sbin/openvpn --config ...'

然后applet以错误的方式悄然退出。在研究过程中,我尝试使用具有相同Docker映像的pkexec运行一个命令,结果如下:

代码语言:javascript
复制
$ sudo docker-compose run firefox pkexec /firefox/firefox-sdk/bin/firefox-bin -new-instance
**
ERROR:pkexec.c:719:main: assertion failed: (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) > 0)

但是我一点也不了解polkit,也无法理解这个错误。

编辑:重现问题的一种更小的方法是使用这个Dockerfile:

代码语言:javascript
复制
FROM ubuntu:16.04

RUN apt-get update \
    && apt-get install -y policykit-1

然后跑:

代码语言:javascript
复制
$ sudo docker build -t pkexec-test .
$ sudo docker run pkexec-test pkexec echo Hello

这再次导致:

代码语言:javascript
复制
ERROR:pkexec.c:719:main: assertion failed: (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) > 0)

我是否应该得出结论:pkexec 不能在码头容器中工作?或者有什么方法可以让这个命令工作吗?

Sidenote:我对我试图运行的Java applet没有任何控制,它是一个可怕且过时的专有黑匣子,我应该在工作中使用它,我无法访问源代码,而且我必须按原样使用它。

EN

回答 1

Stack Overflow用户

发布于 2019-06-26 12:09:43

我已经解决了我自己的问题,在码头映像中用pkexec代替sudo,并允许无密码的sudo。

给定一个名为developer的用户创建并配置了USER语句的ubuntu映像,添加以下几行:

代码语言:javascript
复制
# Install sudo and make 'developer' a passwordless sudoer
RUN apt-get install sudo
ADD ./developersudo /etc/sudoers.d/developersudo

# Replacing pkexec by sudo
RUN rm /usr/bin/pkexec
RUN ln -s /usr/bin/sudo /usr/bin/pkexec

文件developersudo包含:

代码语言:javascript
复制
developer ALL=(ALL) NOPASSWD:ALL

这将替换在容器中运行的进程中对pkexec的任何调用,而是调用没有任何密码提示的sudo,这样可以很好地工作。

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

https://stackoverflow.com/questions/56735745

复制
相关文章

相似问题

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