Убедиться что sudo --- это sudo...
Mar. 19th, 2009 10:34 pmКоманда для смены идентификации пользователя UNIX (например, /usr/bin/sudo или /bin/su -c) []:
Говорит коммунивер, и введенное совершенно не проверяет...
Собсвенно говоря видимо нужна защита от идиота... (Я однажды непосмотрев нажал Enter и перешел к след. пункту...) потом был несколько удивлен результатом...
Так интересно как можно проверить что sudo или su -c это то что надо....
Проверить что оно запущенное без параметров выполняется и выводит что-то на STDOUT?
А если что-то незаладиться и оно начнет ждать ввода? Это ж инсталлятор тогда зависнет... :-/
Как быть,
Говорит коммунивер, и введенное совершенно не проверяет...
Собсвенно говоря видимо нужна защита от идиота... (Я однажды непосмотрев нажал Enter и перешел к след. пункту...) потом был несколько удивлен результатом...
Так интересно как можно проверить что sudo или su -c это то что надо....
Проверить что оно запущенное без параметров выполняется и выводит что-то на STDOUT?
А если что-то незаладиться и оно начнет ждать ввода? Это ж инсталлятор тогда зависнет... :-/
Как быть,
no subject
Date: 2009-03-19 07:51 pm (UTC)потом - попробуй сделать что-то безвредное, что может только рут, при помощи этой команды
no subject
Date: 2009-03-19 07:56 pm (UTC)Ты о неверно закрытом теге <b>?
потом - попробуй сделать что-то безвредное, что может только рут, при помощи этой команды
Так он сцуко пароль попросит... а этого как раз не надо...
no subject
Date: 2009-03-19 08:03 pm (UTC)не факт, что пользователь - в судуерах.
так что без проверки нормальной - не обойтись, по-хорошему
no subject
Date: 2009-03-19 08:23 pm (UTC)Меня пугает то, что запустившись криво, оно начнет ждать ввода...
Вот если бы можно было бы сделать system('sudo') и отстрелить его через секунду, то тогда можно было бы быть уверенным в том оно это или не оно... Кажется такое можно сделать форком и сигналами, только вот на полное осознание этого моей квалификации не хватает...
no subject
Date: 2009-03-19 08:25 pm (UTC)touch foo; ${SUDOCMD} chown root foo
Вот это похоже на правду.
Кстати, если ввести в качестве SUDOCMD fakeroot, то сработает.
no subject
Date: 2009-03-19 08:27 pm (UTC);-)
Date: 2009-03-19 08:34 pm (UTC)no subject
Date: 2009-03-19 08:35 pm (UTC)no subject
Date: 2009-03-19 09:53 pm (UTC)no subject
Date: 2009-03-19 10:03 pm (UTC)no subject
Date: 2009-03-20 07:29 am (UTC)no subject
Date: 2009-03-20 07:35 am (UTC)no subject
Date: 2009-03-20 09:48 am (UTC)> Так интересно как можно проверить что sudo или su -c это то что надо....
В моём представлении "что надо" - это "в результате выполнения этой
команды можно стать рутом". И если эта команда требует интерактивного
ввода, то его придётся-таки потребовать. Да, если пользователь не вписан в sudoers
или не помнит свой пароль (к примеру, ходит по ключу последние пять лет)
- то самый настоящий /usr/bin/sudo не является тем чем надо.
А ежели ослабить требования к "то что надо" до минимальных - то уж или
проверять на то что такая команда просто есть и исполняемая, или на
пачку готовых шаблонов (su / sudo / fakeroot).
Самым толковым вариантом мне вообще представляется вменяемое умолчание:
> Команда для смены идентификации пользователя [sudo]:
no subject
Date: 2009-03-21 08:47 am (UTC)aptitude install timeout — запуск с таймаутом.
Запуск в фоне (&).
А вообще же, как уже здесь говорили, правильнее — вменяемое умолчание, проверка введённых данных (например на непустоту), проверка кодов ошибок и результата (если с привилегиями нужно скопировать файл, то проверяем, что он действительно скопировался).
no subject
Date: 2009-03-21 10:03 am (UTC)Я бы проверил бы что
1. Команда без доп параметров запускается, и не уходит в бесконечный цикл в ожидании чего либо. (убеждаемся что нам не подсунули /usr/bin/mc например)
2. Комадна с доп параметром "echo aaa" либо уходит в бесконечное ожидание ввода пароля, либо выполняет указанное действие.
3. Если выполняет указанное действие то сделать что-то что может только рут.
конструкцию с форками и сигналми которая бы могла проверить все это я пока соорудить не смог... Правда уделял этому не очень много времени.
no subject
Date: 2009-03-23 04:51 am (UTC)Я бы ограничился вменяемым дефолтом и проверкой на существование и запускаемость.
Да, это не спасёт от изобретательного лжеца - но если уж изобретательный лжец решил не устанавливать софт, то он может и вовсе не запускать инсталлятор Ж-)