Bug 22470 - kvpnc меняет права на /dev/null
Summary: kvpnc меняет права на /dev/null
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: kvpnc (show other bugs)
Version: unstable
Hardware: all Linux
: P3 blocker
Assignee: Sergey V Turchin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-12-07 18:27 MSK by Denis Nazarov
Modified: 2009-12-14 16:25 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Denis Nazarov 2009-12-07 18:27:21 MSK
kvpnc при первом коннекте к серверу меняет права на /dev/null на 664, в результате чего банальный ssh сразу выпадает с ошибкой 
Couldn't open /dev/null: Permission denied

Приходится вручную менять права.

Воспроизводится 100%. Тест
1. Запуск kvpnc
2. Запуск vpn сессии (при этом меняются права)
3. Восстанавливаю права
4. Отключаю-подключаю сессии - права остаются прежними
5. Закрываю kvpnc - права остаются прежними

kvpnc-0.9.2-alt1
2.6.30-std-def-alt14
Comment 1 Michael Shigorin 2009-12-08 15:37:29 MSK
Это блокер, согласно http://www.altlinux.org/BugSeverityPolicy; чинить осмысленно в Sisyphus, а в M51 скопировать.
Comment 2 Denis Nazarov 2009-12-09 08:50:56 MSK
Подумал было, что виноват pptp, проверил так - на машине с 4.1/бранч поставил pptp-client-1.7.2-alt1 из 5.1 - не воспроизводится. На эту же машину поставить kvpnc-0.9.2 (стоит 0.9.0) не получилось, потому что попросил kde4libs не ниже 4.3.0, а это уже половина бранча 5.1. Покопался в исходниках - честно говоря, не нашел, где такое может происходить
Comment 3 Sergey V Turchin 2009-12-09 14:08:00 MSK
Попробуйте 0.9.3, когда доберется.

А вообще, есть вероятность, что меняет не он, а тот, кого запускает.
Comment 4 Denis Nazarov 2009-12-10 20:05:24 MSK
не утерпел, вытянул 0.9.3 из git`a, то же самое.
Comment 5 Denis Nazarov 2009-12-10 22:41:25 MSK
В общем, копание в исходном коде локализовало примерную область, где это происходит. Блок между строками 4622-4632 в kvpnc.cpp - проверка возможностей pppd. На днях продолжу изыскания
Comment 6 Sergey V Turchin 2009-12-11 14:55:18 MSK
(В ответ на комментарий №5)
> Блок между строками 4622-4632 в kvpnc.cpp
там есть Utils::checkPppdCapabilities(), в которой есть строки
args.append("/dev/null")

Возможно, запускают как-то не так или сам pppd хулиганит
Comment 7 Sergey V Turchin 2009-12-11 14:59:33 MSK
Там запускается
pppd /dev/null require-mppe
, после чего слетают права
Comment 8 Sergey V Turchin 2009-12-11 15:03:44 MSK
Как-минимум, pppd должен восстановить права обратно
Comment 9 Michael Shigorin 2009-12-11 17:59:53 MSK
(In reply to comment #7)
> Там запускается pppd /dev/null require-mppe
Зачем там /dev/null?! (и не для желаемого ли часом есть опция notty?)

> после чего слетают права
Да, pppd что-то делал с правами на ttyS.  См. тж. ppp-2.4.1-pidfile-owner.patch для этого куска.

Тем не менее мне _пока_ кажется, что подсовывать /dev/null в качестве tty противоестественно.  То есть исправление ppp для учёта таких случаев склонен считать работой над повышением дуракоустойчивости.

Если будет необходимо, могу помочь с текстом письма для доведения этого соображения до апстрима kvpnc.
Comment 10 Denis Nazarov 2009-12-12 22:32:13 MSK
> > Там запускается pppd /dev/null require-mppe
> Зачем там /dev/null?! (и не для желаемого ли часом есть опция notty?)
точно. Заменил в исходниках /dev/null на notty, пересобрал - проблема исчезла. Единственное, что заметил - в логе в момент запуска вываливается набор символов, как если бы в консоли ввести pppd notty require-mppe, но имхо, это не страшно.
Потом пришла мысль, что автор хотел сделать pppd require-mppe > /dev/null. 
Заменил в utils.cpp (строки 648-649)

args.append("/dev/null")
args.append("require-mppe")

на 

args.append("require-mppe")
args.append(" > /dev/null")

И этот вариант тоже сработал. В таком виде в логе ничего не появляется (видимо, это и было задумкой), права не слетают (с чего бы вдруг?), тест на mmpe проходит нормально, судя по тому, что в логе обнаружена строка "отладка: /usr/sbin/pppd имеет поддержку MPPE.". Исходная бага проявлялась только при первом коннекте после запуска kvpnc, последующие коннекты не меняли права на /dev/null и, судя по логам так и происходит, потому что проверка mppe проходит только при первом коннекте.

> Если будет необходимо, могу помочь с текстом письма для доведения этого
> соображения до апстрима kvpnc.
думаю, было бы неплохо
Comment 11 Sergey V Turchin 2009-12-14 14:07:09 MSK
(В ответ на комментарий №10)
> но имхо, это не страшно.
теплое вместо зеленого не прокатит.

> > соображения до апстрима kvpnc.
> думаю, было бы неплохо
да, было бы здорово
Comment 12 Sergey V Turchin 2009-12-14 14:39:57 MSK
(В ответ на комментарий №10)
> args.append("require-mppe")
> args.append(" > /dev/null")
Не дочитал сразу. Да. Это можно.
Comment 13 Sergey V Turchin 2009-12-14 16:25:03 MSK
kvpnc-0.9.3-alt2