LINUX.ORG.RU

Права суперпользователя

 ,


0

1

Требуется написать небольшую оболочку для утилиты на Qt. Утилита работает с данными только с правами суперпользователя. То есть оболочка должна при запуске спрашивать пароль (без всяких скриптов, программно), что-то вроде kdesu, только не зависящее от DE. Известно только, что Linux и Qt.

Пока нарыл только polkit-qt. Есть другие способы? Если нету, то есть ли простые примеры использования polkit? На сайте KDE гордо висит надписть, что polkit-qt устарел и надо использовать чисто KDE-шную штуку.



Последнее исправление: Tribunal (всего исправлений: 1)

Требуется написать небольшую оболочку для утилиты на Qt. Утилита работает с данными только с правами суперпользователя.

Твоя утилита — ненужно.

anonymous
()

пишется:

1. демон обработки, работающий от root:root

2. клиент на Qt

3. общение по dbus

/thread

x0r ★★★★★
()
Ответ на: комментарий от x0r

1. демон обработки, работающий от root:root

2. клиент на Qt

3. общение по dbus

Это проще, чем polkit? Чего-то сомневаюсь. Я вообще разработчик под оффтопик, просто Qt знаю немного. Сейчас вот глазею в исходники похожей оболочки на PyQt. Но совсем Python не знаю.

Tribunal
() автор топика

Утилита работает с данными только с правами суперпользователя.

Это точно? Что за утилита такая? Может вдруг окажется, что можно работать без рута и зря только промучаешься.

gavlig ★★★
()
Ответ на: комментарий от gavlig

Враппер над утилитой panda (велосипед для настройки видеокарты). Устанавливать дрова для видеокарты может только рут, тут без вариантов. Враппер самописный на C++, сейчас наследник от KCModule, надо выдрать из KDE, убрав все kde-шные штучки, оставив только Qt и системные вызовы. Выдирается легко, но права рута нужны для работы.

Tribunal
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Спасибо, поищу. Пока что polkit без вариантов. Оболочка на питоне его использует как раз. Буду рыть в этом направлении.

Tribunal
() автор топика
Ответ на: комментарий от frozenix

Спасибо, я это читаю. Настораживает надпись, что все это мол устарело, используйте другое (KAuth). Буду пробовать. После программирования исключительно под оффтопик придется многое доучивать.

Tribunal
() автор топика
Ответ на: комментарий от Tribunal

KDE - УГ тоже, а Qt работает везде (не обязательно под KDE)

vonenij
()

Это всё дистроспецифично, имхо без обёртки-запускалки (которая будет запускать gksudo или что то ещё что доступно, или просто создавать окошко и говорить «требуются права суперпользователя») не обойтись.

jeuta ★★★★
()
Ответ на: комментарий от Tribunal

PackageKit? Вроде даже имеется что-то для Qt в нём.

unC0Rr ★★★★★
()

Требуется написать небольшую оболочку для утилиты на Qt. Утилита работает с данными только с правами суперпользователя.

вирус пишешь?

emulek
()
Ответ на: комментарий от Tribunal

Враппер над утилитой panda (велосипед для настройки видеокарты). Устанавливать дрова для видеокарты может только рут, тут без вариантов.

за кой ляд программе настройки ставить дрова? Сделай зависимость своей программы от драйвера.

права рута нужны для работы.

не нужны. Простой демон сделай, как выше сказано.

emulek
()

Systemd наверное теперь в моде.

hibou ★★★★★
()

Утилита работает с данными только с правами суперпользователя

как утилита запускается?

Если через QProcess то юзай там вызов kdesu или чего подобного.

повышение привелегий процесса задача системы а не программиста.

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

как утилита запускается?

Если через QProcess то юзай там вызов kdesu или чего подобного.

повышение привелегий процесса задача системы а не программиста.

Сейчас через KProcess, используется KDE-шный KAuth. KProcess - наследник от QProcess, так что здесь проблем не будет. Вопрос только с авторизацией через KAuth, ибо DE у меня заранее не известно, будет ли там работать KAuth тоже.

Tribunal
() автор топика
Ответ на: комментарий от jeuta

Это всё дистроспецифично, имхо без обёртки-запускалки (которая будет запускать gksudo или что то ещё что доступно, или просто создавать окошко и говорить «требуются права суперпользователя») не обойтись.

Никаких gtksudo и тому подобного. Как очень корявый вариант - уже есть монстроподобный скрипт, который в зависимости от окружения запускает то gtksudo, то kdesu, то <куча их>. Окошко должно выскакивать у меня само. Другой вопрос - будет ли это окошко мне от DE или я его сам создам (дело не хитрое), но тогда мне надо, имея на вооружении пароль рута, запустить дальше процесс с правами рута.

Tribunal
() автор топика

позовите в тред того, кто ставит вам такие задачи - чтобы ему популярно объяснили в чём он не прав.

MKuznetsov ★★★★★
()
Ответ на: комментарий от Tribunal

но тогда мне надо, имея на вооружении пароль рута, запустить дальше процесс с правами рута.

БЛДЖАТ, как всё запущенно..во первых софт самостоятельно запрашивающий пароль даже текущего юзера идёт на@#$й;

абстрагируясь - кто вам сказал что root идентифицируется по паролю? а если в конкретном муравейнике принята однократная авторизация?? А если по физическому токену???

строя своё диалоговое окно, как вы сообщите системе что запрашиваете у физического лица приватные данные и надо отсечь все побочные источники и обеспечить максимальную защиту?

зы. Юзер работает под своими полномочиями. Если его полномочий точно нехватает для вашей программы - он не должен иметь прав её запускать. Если полномочий нехватает для каких-то операций - значит конкретные операции запрещены этому юзеру. Никаких запросов паролей, просьб повысить полномочия и так далее.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

позовите в тред того, кто ставит вам такие задачи - чтобы ему популярно объяснили в чём он не прав.

Постановщик задачи в треде - это я сам. Объясняю начальные условия. Есть компонент, засунутый в system-settings KDE, он у нас единственный на C++, потому за него я взялся, хотя под Linux программировать не умею. Этот компонент (как и некоторые другие) запрашивают пароль (еще настройка загрузчика у нас там, еще есть). Задача и проста и сложна одновременно. Надо выдрать компонент из system-settings и сделать самостоятельной утилитой. Запускать а-ля xdg-su -c «util-name» только вот это xdg-su должно быть спрятано в ней самой. Запуск одного процесса из другого.

Tribunal
() автор топика
Ответ на: комментарий от MKuznetsov

И sudo тебе не надо? И под рутом ты сидишь?

anonymous
()

Утилита работает с данными только с правами суперпользователя

Это уже ложь, ибо данным всё равно из-под какого пользователя они обрабатываются. Возможно рут нужен чтобы получить эти данные (скажем, из устройства), но это тоже ложь потому что это решается правами на устройство, в крайнем случае - маленькой suid программой которая _только_ получает данные. Обрабатываться они должны из-под пользователя и никак иначе.

slovazap ★★★★★
()
Ответ на: комментарий от anonymous

Да ничем. Просто у нас уже есть ряд утилит, которые сами пароль просят и работают через polkit. Просто они все на питоне и используют единую систему управления. А эта на с++. Я эту систему использовать не могу.

Tribunal
() автор топика
bash~> ./you_app
Эй! Я не буду работать без прав, запусти меня от рута!

Такое решение проблемы рассматривалось?

Deleted
()
Ответ на: комментарий от Deleted

Такое решение проблемы рассматривалось?

Как временное. У нас по сути что-то вроде Yast или Draktools, только из него выкинуто все лишнее, сам он разбит на 5-6 утилит + пакетный менеджер. Все на PyQt и Python, используют единую систему управления, каждая при необходимости умеет запрашивать пароль (скажем, просмотреть список пользователей можно без прав суперпользователя, а вот редактировать - только с ними). Эта - единственная на С++, была встроена в KDE.

Tribunal
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.