Назад | Перейти на главную страницу

Ubuntu: не удается установить сервер обновления apt-get, разрешение dpkg отклонено, даже если пользователь root?

Я провел общий аудит системы и обнаружил, что некоторые пакеты устаревают, например OpenSSH и связанные с ним, поэтому я перешел к обновлению apt-get, а затем обновился.

К сожалению, кажется, что он получает пакеты правильно (загрузка), но не может завершить процесс обновления. Вот точная копия моей недавней командной строки, чтобы показать эту ошибку, обратите внимание, что пакеты уже были загружены из предыдущего теста, поэтому ему нужно получить нулевые байты (обратите внимание, что я 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)

Я совершенно не уверен, что я сделал не так, это версия 10.04.2 LTS Ubuntu, и это, конечно, серверная версия, номер которой я использую на моем 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, что, по-видимому, невозможно, так как после удаления noexec из fstab и перезагрузки apt-get снова начал работать.

Это кто главный пользователь кому принадлежит / tmp? Обычно / tmp не доступен для записи во всем мире, мой установлен как:

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

У вас должна быть возможность изменить свои разрешения с помощью:

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

Это изменит владельца и группу на корень, а затем разрешите запись членам группы группа, а также другие.