簡體   English   中英

有沒有辦法從docker容器運行“pkexec”?

[英]Is there any way to run “pkexec” from a docker container?

我正在嘗試使用舊版本的Firefox和舊版本的Java設置Docker鏡像(我的Dockerfile在這里可用,對不起法語自述文件: https ://framagit.org/Gwendal/firefox-icedtea-docker)運行舊的Java小程序以啟動VPN。 我的圖像確實有效,並且成功地允許我在Firefox中啟動Java applet。

不幸的是,所述applet然后嘗試在容器中運行以下命令(我只是從命令中刪除了--config部分,因為這里沒關系):

INFO: launching '/usr/bin/pkexec sh -c /usr/sbin/openvpn --config ...'

然后applet以一個錯誤靜默退出。 在調查的時候,我嘗試用pkexec運行一個帶有相同Docker鏡像的命令,它給了我這個結果:

$ 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:

FROM ubuntu:16.04

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

然后運行:

$ sudo docker build -t pkexec-test .
$ sudo docker run pkexec-test pkexec echo Hello

這導致再次:

ERROR:pkexec.c:719:main: assertion failed: (polkit_unix_process_get_start_time (POLKIT_UNIX_PROCESS (subject)) > 0)

我應該得出結論pkexec無法在pkexec容器中工作嗎? 或者有什么方法可以使這個命令工作?

旁注 :我對我嘗試運行的Java小程序無法控制,它是一個可怕的,非常過時的專有黑盒子,我應該在工作中使用,我無法訪問源代碼,而且我必須按原樣使用。

我已經通過在pkexec中用sudo替換pkexec並允許無密碼sudo解決了我自己的問題。

給定一個ubuntu docker鏡像,其中創建了一個名為developer的用戶並使用USER語句進行配置,添加以下行:

# 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包含:

developer ALL=(ALL) NOPASSWD:ALL

這取代了在容器中運行的進程中對pkexec任何調用,通過調用sudo而沒有任何密碼提示,這很好地工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM