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

Медленная аутентификация на виртуальной машине Fedora из-за тайм-аута подключения / var / run / dbus / system_bus_socket

У меня есть эта виртуальная машина Fedora, которая по какой-то причине через некоторое время всегда начинает очень медленную аутентификацию "sudo" (или аутентификацию в целом, например, приложения с графическим интерфейсом, запрашивающие учетные данные). Он будет работать нормально, пока в какой-то момент (*) он не начнет ждать еще 20 секунд, прежде чем отобразить запрос пароля.

(*) Этот момент мог быть после того, как я приостановил и перезапустил виртуальную машину, но я не смог воспроизвести это надежно.

Думаю, я отследил это как-то связанное с DBus, потому что выполнение "strace" sudo дает мне следующее:

 0.000040 connect(8, {sa_family=AF_LOCAL, sun_path="/var/run/dbus/system_bus_socket"}, 33) = 0
 0.000095 fcntl(8, F_GETFL)         = 0x2 (flags O_RDWR)
 0.000035 fcntl(8, F_SETFL, O_RDWR|O_NONBLOCK) = 0
 0.000039 geteuid()                 = 0
 0.000038 getsockname(8, {sa_family=AF_LOCAL, NULL}, [2]) = 0
 0.000060 poll([{fd=8, events=POLLOUT}], 1, 0) = 1 ([{fd=8, revents=POLLOUT}])
 0.000041 sendto(8, "\0", 1, MSG_NOSIGNAL, NULL, 0) = 1
 0.000090 sendto(8, "AUTH EXTERNAL 30\r\n", 18, MSG_NOSIGNAL, NULL, 0) = 18
 0.000135 poll([{fd=8, events=POLLIN}], 1, 4294967295) = 1 ([{fd=8, revents=POLLIN}])
 0.000053 read(8, "OK 646ed40b36ee6ecf4fee737c54368"..., 2048) = 37
 0.000047 poll([{fd=8, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=8, revents=POLLOUT}])
 0.000039 sendto(8, "NEGOTIATE_UNIX_FD\r\n", 19, MSG_NOSIGNAL, NULL, 0) = 19
 0.000369 poll([{fd=8, events=POLLIN}], 1, 4294967295) = 1 ([{fd=8, revents=POLLIN}])
 0.000047 read(8, "AGREE_UNIX_FD\r\n", 2048) = 15
 0.000043 poll([{fd=8, events=POLLOUT}], 1, 4294967295) = 1 ([{fd=8, revents=POLLOUT}])
 0.000039 sendto(8, "BEGIN\r\n", 7, MSG_NOSIGNAL, NULL, 0) = 7
 0.000088 poll([{fd=8, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=8, revents=POLLOUT}])
 0.000041 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\0\0\0\0\1\0\0\0n\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 128}, {"", 0}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 128
 0.000108 clock_gettime(CLOCK_MONOTONIC, {115342, 676969855}) = 0
 0.000042 poll([{fd=8, events=POLLIN}], 1, 25000) = 1 ([{fd=8, revents=POLLIN}])
 0.000818 recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\1\v\0\0\0\1\0\0\0=\0\0\0\6\1s\0\6\0\0\0:1.196\0\0"..., 2048}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 262
 0.000062 recvmsg(8, 0x7fff421ab1a0, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
 0.000312 eventfd2(0, O_NONBLOCK|O_CLOEXEC) = 9
 0.000046 write(9, "\1\0\0\0\0\0\0\0", 8) = 8
 0.000042 fstat(8, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
 0.000039 fcntl(8, F_GETFL)         = 0x802 (flags O_RDWR|O_NONBLOCK)
 0.000038 write(9, "\1\0\0\0\0\0\0\0", 8) = 8
 0.000133 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\1\1\204\0\0\0\2\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\177\0\0\0type='signal',sender='net.re"..., 132}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 276
 0.000130 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\1\1\246\0\0\0\3\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\241\0\0\0type='signal',sender='org.fr"..., 166}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 310
 0.000126 clock_gettime(CLOCK_MONOTONIC, {115342, 678759459}) = 0
 0.000048 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\33\0\0\0\4\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\26\0\0\0net.reactivated.Fprint\0", 27}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 171
 0.000119 clock_gettime(CLOCK_MONOTONIC, {115342, 678926239}) = 0
 0.000048 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\0\0\0\0\5\0\0\0\203\0\0\0\1\1o\0\37\0\0\0/net/rea"..., 152}, {"", 0}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 152
 0.000267 clock_gettime(CLOCK_MONOTONIC, {115342, 679268460}) = 0
 0.000123 poll([{fd=8, events=POLLIN}], 1, 25000) = 1 ([{fd=8, revents=POLLIN}])
 0.000060 recvmsg(8, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\1\v\0\0\0\3\0\0\0=\0\0\0\6\1s\0\6\0\0\0:1.196\0\0"..., 2048}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 91
 0.000065 write(9, "\1\0\0\0\0\0\0\0", 8) = 8
 0.000040 recvmsg(8, 0x7fff421ab010, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
 0.000053 clock_gettime(CLOCK_MONOTONIC, {115342, 679581347}) = 0
 vvvvvvvv
 0.000042 poll([{fd=8, events=POLLIN}], 1, 25000) = 0 (Timeout)  <<<****** HERE
 ^^^^^^^^
25.025437 clock_gettime(CLOCK_MONOTONIC, {115367, 705179464}) = 0
 0.000562 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\1\1\204\0\0\0\6\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\177\0\0\0type='signal',sender='net.re"..., 132}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 276
 0.000835 sendmsg(8, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\1\1\246\0\0\0\7\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\241\0\0\0type='signal',sender='org.fr"..., 166}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 310
 0.000704 write(9, "\1\0\0\0\0\0\0\0", 8) = 8
 0.000503 close(8)                  = 0

Выполнение останавливается примерно на 20 секунд в отмеченной строке с таймаутом.

У кого-нибудь есть идеи? (И нет, это не связано с моим хост-файлом)

У меня была аналогичная проблема: sudo, su, и login все зависают около 20 секунд в ожидании на системном сокете dbus.

Иногда такая проблема возникает из-за отсутствия имени локального хоста в / etc / hosts. (например, если hostname печать команд foo можете добавить 127.0.0.1 foo в / etc / hosts).

Однако в моем случае проблема была вызвана не Бег systemd-logind или его замена elogind (который используется в Gentoo). Обычно запускается автоматически, когда libelogind используется, но в моей системе он был отключен, и недавно после обновления системы все перестало работать.

Запуск elogind исправил проблему для меня.