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