这个 apt 错误消息(“下载是在未以 root 身份沙盒的情况下执行的...”)是什么意思?

这个 apt 错误消息(“下载是在未以 root 身份沙盒的情况下执行的...”)是什么意思?

我在 Synaptic Manager 中更新后得到了它

我最近从 16.10 全新安装了 Ubuntu 17.04。

错误信息:-

W: Download is performed unsandboxed as root as file '/var/cache/apt/archives/partial/samba-libs_2%3a4.5.8+dfsg-0ubuntu0.17.04.1_i386.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

答案1

通常 apt 使用用户_apt来下载软件包。在你的情况下,它对或现有文件_apt都没有写入权限,因此它将文件下载为。/var/cache/apt/archives/partial//var/cache/apt/archives/partial/samba-libs_2%3a4.5.8+dfsg-0ubuntu0.17.04.1_i386.debroot

确保/var/cache/apt/archives/partial/其下方的所有内容均可写入_apt,例如通过运行

sudo chown -Rv _apt:root /var/cache/apt/archives/partial/
sudo chmod -Rv 700 /var/cache/apt/archives/partial/

答案2

总结只需忽略与 apt 相关的“W: ... _apt ...”警告行。它们不是致命的,而且在大多数情况下您无法修复它,并且无论有没有警告,您都会得到相同的结果。


即使实施了 Florian Diesch 的出色回答,我仍然会收到此警告。当我尝试使用 下载源代码时apt-get source ...,即使我尝试以 root 身份下载(例如使用sudo或 )su,也会收到此警告(Debian 10.4 和 apt 1.8.2.1)。

_apt网络上充斥着关于此警告消息的问题,并提出了许多不同的解决方案。显然,自从 apt 工具被改为用于沙盒安全操作以来,大量用户在使用过程中遇到了麻烦。

似乎在_apt做出这一改变之后,一大堆问题都还没有完全解决。


我们再来分解一下这个问题:

首先,带有前缀的 apt 结果行W:警告。警告是指某些不正常的事情,但不会阻止程序继续运行。(參考文獻:Kusalananda

正如 Florian 指出的那样,“apt 使用用户_apt来下载软件包”。看来,在这种情况下,named 用户root根本无法做 named 用户_apt能做的事情。


部分解决方案(您确实不想使用的解决方案):

您必须确保您所在的文件夹(即,将放置源的位置)归 拥有_apt:root。因此,如果您$ mkdir temp; sudo chown _apt:root temp; sudo -s并且# cd temp; apt-get source ...不会出现警告。

当然,完成后,您必须对这个基本文件夹赋予更合理的所有权,因为它由 _apt:root 拥有,这很奇怪。

有没有警告信息,结果是否相同?

# -- TEST 1:  get source into folder owned by user ------------
$ mkdir temp1;
$ cd temp1; sudo apt-get source gnupg2     # gives warning message:
...
W: Download is performed unsandboxed as root as file 'gnupg2_2.2.12-1+deb10u1.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)


# -- TEST 2:  get source into folder owned by root ------------
$ cd ..; sudo -s
# mkdir temp2;
# cd temp2;      apt-get source gnupg2     # gives warning message:
...
W: Download is performed unsandboxed as root as file 'gnupg2_2.2.12-1+deb10u1.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)


# -- TEST 3:  get source into folder owned by _apt:root -------
# cd ..
# mkdir temp3; chown _apt:root temp3
# cd temp3;      apt-get source gnupg2     #    no warning message now!


# == COMPARE the results ======================================
$ cd ..
$ sudo diff -r temp1 temp2                 # no differences
$ sudo diff -r temp1 temp3                 # no differences

因此,无论有没有警告,结果都是一样的!


我不得不开玩笑地补充说,易于这里讨论的是不是指的是最可怕的事情:高级持续性威胁



我之前的回答是

...到目前为止,已经为我解决了这个问题,但是现在我发现这还不够:

修复此问题:

sudo chown -R _apt:root /var/lib/apt/lists


  • 列表目录本身(而不仅仅是其内容)需要有所有者_易于(即,这是一个重要的文件分支,其默认根所有权失败!)

  • 我可能在删除时出现了这个问题列表,然后按照其他地方的建议用 重新制作它sudo mkdir lists; apt update

  • 此外,此解决方案可能与任何其他解决方案相辅相成,因为我首先尝试了很多其他的东西。


Debian 10.2 延伸。

# apt-get --version
apt 1.8.2 (amd64)
Supported modules:
*Ver: Standard .deb
*Pkg:  Debian dpkg interface (Priority 30)
 Pkg:  Debian APT solver interface (Priority -1000)
 Pkg:  Debian APT planner interface (Priority -1000)
 S.L: 'deb' Debian binary tree
 S.L: 'deb-src' Debian source tree
 Idx: Debian Source Index
 Idx: Debian Package Index
 Idx: Debian Translation Index
 Idx: Debian dpkg status file
 Idx: Debian deb file
 Idx: Debian dsc file
 Idx: Debian control file
 Idx: EDSP scenario file
 Idx: EIPP scenario file

答案3

我在 Debian Stretch(全新安装的 Xen VM)上也遇到了这个问题,结果发现是 sudo 的问题。

无法在机器上执行任何 sudo。

更准确地说,系统的根/目录位于 700 (drwx------)。Achmod 755 /已修复它。

答案4

使文件本身可由用户读取_apt。例如:

chmod 777 ./pdfsam-visual_2.1.4_amd64.deb

看看文件本身的权限...

$ ls -l ./pdfsam-visual_2.1.4_amd64.deb 
-r-------- 1 john john 105659960 Apr  4 11:57 ./pdfsam-visual_2.1.4_amd64.deb

现在又有那条消息了……

N: Download is performed unsandboxed as root as file
 'pdfsam-visual_2.1.4_amd64.deb' couldn't be accessed 
by user '_apt'. - pkgAcquire::Run (13: Permission denied)

错误是因为用户_apt想要访问本地文件。因此您只需授予对此文件的访问权限。例如:

现在,如果您删除并安装,错误就会消失。

sudo apt remove pdfsam-visual
sudo apt install ./pdfsam-visual_2.1.4_amd64.deb

相关内容