Я много раз пробовал на различных машинах Ubuntu: dhcpd
исполняемый файл (установленный в /usr/sbin/dhcpd
через пакет isc-dhcp-server
) в контейнере LXC по-видимому единственная вещь, которую это делает при выполнении из командной строки состоит в том, чтобы выйти с кодом выхода 1.
Я хочу выполнить программу вручную для получения интерактивных сообщений об ошибках и проблем отладки в конфигурации.
Например, при выполнении $ dhcpd --version
Я ожидал бы иметь, по крайней мере, версию как на хосте
$ dhcpd --version
isc-dhcpd-4.3.5
$
В контейнере LXC (но не в VirtualBox) dhcpd
всегда ничего не производит к stdout, независимо от параметров командной строки.
править:
Я сравнил вывод выполнения strace dhcpd --version
и на контейнере LXC и на хосте. Существует только одно различие в самом конце вывода. На госте LXC:
connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0
write(2, "isc-dhcpd-", 10) = -1 EACCES (Permission denied)
write(2, "4.3.5", 5) = -1 EACCES (Permission denied)
write(2, "\n", 1) = -1 EACCES (Permission denied)
futex(0x7f2637e2882c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
exit_group(0) = ?
+++ exited with 0 +++
В то время как на хосте аналогичные чтения части:
connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0
write(2, "isc-dhcpd-", 10isc-dhcpd-) = 10
write(2, "4.3.5", 54.3.5) = 5
write(2, "\n", 1
) = 1
futex(0x7f95cadac82c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
exit_group(0) = ?
+++ exited with 0 +++
Я заполнил проблему против LXD об этой проблеме, см. https://github.com/lxc/lxd/issues/5378
Попытайтесь работать "strace dhcpd - версия", чтобы видеть, дает ли это больше информации.
Править:
write(2, "isc-dhcpd-", 10) = -1 EACCES (Permission denied)
Это означает, что процесс не может записать в STDERR (дескриптор файла 2).
Поздравления, Вы на самом деле поразили ошибку Ubuntu 1 641 236 или 1 667 016 Заключений в кавычки от lxc выпуска 2930
Вы действительно имеете несколько обходных решений в наличии хотя: Используя ssh вместо "lxc должностное лицо" должен хорошо работать (поскольку ssh выделит свою собственную pts пару) Используя "lxc должностное лицо", и затем выполнение сессии "сценария" должно иметь тот же эффект как ssh, можно выключить tcpdump apparmor профиль symlinking, профиль к/etc/apparmor.d/disable/затем перезагружает apparmor в контейнере (или перезагружает его).
Последнее обходное решение, кажется, работает на обе ошибки
ln -s /etc/apparmor.d/usr.sbin.dhcpd /etc/apparmor.d/disable/