Ubuntu 16.04. После проигрывания с чем-то новым (napp-это, ZFS gui), у меня есть проблема, где sudo зависает после подсказки пароля. Соответствующий strace для sudo следует...
open("/dev/null", O_WRONLY|O_CREAT|O_APPEND, 0666) = 8
lseek(8, 0, SEEK_END) = 0
umask(022) = 077
fcntl(8, F_SETLKW, {l_type=F_WRLCK, l_whence=SEEK_CUR, l_start=0, l_len=0}
Если я, комната/dev/null и воссоздает его (правильно с mknod и затем верными полномочиями) sudo, хорошо работаю. Однако тот единственные хранения до перезагрузки, в которой время sudo зависает снова.
Править... Я должен добавить, что сразу на перезагрузке полномочия на/dev/null кажутся корректными. ls-l/dev/null приводит к следующему (то же как после удаления и воссоздания его)
crw-rw-rw- 1 root root 1, 3 Feb 8 20:58 /dev/null
Вывод sudo-l указал, что вход sudo направлялся к/dev/null.
исследование/etc/sudoers показало следующие строки.
## supress Console messages from sudo
Defaults logfile=/dev/null
Defaults !syslog
##
Не уверенный то, когда (или почему) они были добавлены к sudoers файлу, но комментированию их, решило проблему.
Я пишу обработчик системных журналов и уничтожаю типичного демона системного журнала. По-видимому, по крайней мере, на основе этого strace, мое предположение является функциями glibc syslog()
, кажется, зависает на sendto()
системный вызов.
я просто всегда ошеломляюсь, когда что-то это ядро к работе над системой делает что-то вроде этого. Возможно, это дизайном? Просто походит на плохую идею.
read(9, "", 4096) = 0
close(9) = 0
munmap(0x7f461335d000, 4096) = 0
read(8, "", 4096) = 0
close(8) = 0
munmap(0x7f461335e000, 4096) = 0
socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 8
connect(8, {sa_family=AF_LOCAL, sun_path="/dev/log"}, 110) = 0
sendto(8, "<85>Sep 11 16:53:56 sudo: ro"..., 92, MSG_NOSIGNAL, NULL, 0
Так - если у Вас есть эта проблема, проверьте своего демона системного журнала и посмотрите, работает ли она, и /dev/log
существует.