Ubuntu
Ubuntu:無法 apt-get 升級伺服器,dpkg 權限被拒絕,即使是 root?
我已經對系統進行了一般審計,發現一些軟體包正在老化,例如 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
問題仍然存在。
問題很可能與位於 /tmp 中的文件無關;這些是
apt-get
創建的腳本,然後會導致一些錯誤(13 和 49 是行號)。具體來說,腳本無法執行該dpkg
命令。在您的系統上查找
dpkg
,確保它在您的系統中$PATH
(或者至少在某個apt-get
可以找到它的地方),並確保它是可執行的(chmod +x
)。
我遇到了同樣的問題。我讀過 /var 可以掛載 noexec,顯然它不能,因為從 fstab 中刪除 noexec 並重新啟動 apt-get 再次開始工作。