Ubuntu:无法 apt-get 升级服务器,即使是 root 身份,dpkg 权限也会被拒绝?

Ubuntu:无法 apt-get 升级服务器,即使是 root 身份,dpkg 权限也会被拒绝?

我对系统进行了全面审核,发现一些软件包已经老化,例如 OpenSSH 和相关软件包,所以我去 apt-get update 然后升级。

不幸的是,它似乎正确地获取了软件包(下载),但无法完成升级过程。这是我最近的命令行的精确副本,用于显示此错误,请注意,软件包已从之前的测试中下载,因此需要检索零字节(注意我是 root:)

root@foobar:~# apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  apt apt-utils at bind9-host binutils bsdutils curl dhcp3-client dhcp3-common
  dnsutils dpkg-dev ifupdown initscripts krb5-multidev language-pack-en
  language-pack-en-base libapache2-mod-php5 libapr1 libapr1-dev
  libavahi-client3 libavahi-common-data libavahi-common3 libbind9-60 libblkid1
  libc-bin libc-dev-bin libc6 libc6-dev libcurl3 libcurl3-gnutls libdbus-1-3
  libdns64 libgssapi-krb5-2 libgssrpc4 libisc60 libisccc60 libisccfg60
  libk5crypto3 libkadm5clnt-mit7 libkadm5srv-mit7 libkdb5-4 libkrb5-3
  libkrb5-dev libkrb5support0 liblcms1 libldap-2.4-2 libldap2-dev liblwres60
  libmysqlclient-dev libmysqlclient16 libnss3-1d libpam-runtime libpam0g
  libpango1.0-0 libpango1.0-common libplymouth2 libpq-dev libpq5 libssl-dev
  libssl0.9.8 libtiff4 libudev0 libuuid1 libxml2 libxml2-dev linux-libc-dev
  login logrotate mount mysql-client mysql-client-5.1 mysql-client-core-5.1
  mysql-common mysql-server mysql-server-5.1 mysql-server-core-5.1 nginx ntp
  ntpdate openjdk-6-jre-headless openjdk-6-jre-lib openssh-client
  openssh-server openssl opera passwd perl perl-base perl-modules php-pear
  php5 php5-cli php5-common php5-dev php5-gd php5-mysql plymouth postfix rsync
  rsyslog sudo sysv-rc sysvinit-utils tzdata tzdata-java udev update-inetd
  upstart util-linux uuid-dev vsftpd xkb-data
112 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0B/124MB of archives.
After this operation, 3,506kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Extracting templates from packages: 100%
Preconfiguring packages ...
/tmp/ifupdown.config.188089: 13: dpkg: Permission denied
/tmp/openssh-server.config.188701: 49: dpkg: Permission denied
Could not exec dpkg!
E: Sub-process /usr/bin/dpkg returned an error code (100)

我完全不确定我做错了什么,这个版本是 Ubuntu 10.04.2 LTS,当然这是我在 VPS 上使用的服务器版本,它会强制我先进行一些 dist-upgrade 或其他操作吗?这只是一些简单的权限问题吗?

在此之前我最近做过一件事,我按照审计指南的建议在 /tmp 中设置了粘滞位,这样我就不允许其他用户修改该文件夹中的其他用户文件(它只是一个文件夹),我想知道是不是这样,或者我需要以不同的方式运行它..

肯。

根据以下评论的要求,

ls -la 输出:

root@foobar:~# ls -la /tmp
total 20
drwxr-xr-t  5 mainuser mainuser 4096 2011-07-06 03:17 .
drwxr-xr-x 23 root   root   4096 2011-07-05 04:39 ..
drwxr-xr-x  2 root   root   4096 2011-06-17 03:30 hsperfdata_root
drwxrwxrwt  2 root   root   4096 2011-06-15 03:47 .ICE-unix
-rw-------  1 root   root      0 2011-07-05 04:13 lsat1.lsat
drwxrwxrwt  2 root   root   4096 2011-06-15 03:47 .X11-unix

更新:现在是建议修复权限之后的情况:

total 20
drwxrwxrwt  5 root root 4096 2011-07-06 03:50 .
drwxr-xr-x 23 root root 4096 2011-07-05 04:39 ..
drwxr-xr-x  2 root root 4096 2011-06-17 03:30 hsperfdata_root
drwxrwxrwt  2 root root 4096 2011-06-15 03:47 .ICE-unix
-rw-------  1 root root    0 2011-07-05 04:13 lsat1.lsat
drwxrwxrwt  2 root root 4096 2011-06-15 03:47 .X11-unix

但问题仍然存在。

答案1

问题很可能不是出在 /tmp 中的文件上;而是apt-get创建脚本,然后导致一些错误(13 和 49 是行号)。具体来说,脚本无法执行命令dpkg

在您的系统上查找dpkg,确保它在您的系统中$PATH(或者至少在某处apt-get可以找到它),并确保它是可执行的(chmod +x)。

答案2

我也遇到了同样的问题。我读到过 /var 可以 noexec 挂载,但显然它不能,因为从 fstab 中删除 noexec 并重新启动后,apt-get 又开始工作了。

答案3

这是谁主要用户谁拥有 /tmp?/tmp 通常不是所有人都可写的吗?我的设置如下:

drwxrwxrwt  17 root root 4.0K 2011-07-06 11:43 tmp

您应该能够使用以下命令修改您的许可:

chown root:root /tmp
chmod g+w,o+w /tmp

这会将所有者和组更改为,然后允许成员写入权限团体,并且其他的

相关内容