Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Получение root прав из PyGTK приложения.  (Прочитано 1282 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Daynin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 88
    • Просмотр профиля
    • Google+
В общем, есть приложение, которому нужно время от времени открывать для чтения/записи fstab. Как сделать так, чтобы во время этой операции предлагалось ввести пароль для sudo-сессии? Можно ли это сделать при помощи каких нибудь либ для Python, не хочется просто городить огород из отдельно запускаемых скриптов через os.system().

Есть другой вариант. Знает ли кто-нибудь как сделать в quickly так, чтобы в результате сборки .deb пакета генерировался еще и лаучер, через который бы и запускалось приложение. Тогда можно было бы сделать так, чтобы при запуске все приложение работало с правами рута.

Заранее благодарю за внимание и помощь!
Замечательный тут у вас форум! Много интересных людей.

Оффлайн MEXAHOTABOP

  • Активист
  • *
  • Сообщений: 902
    • Просмотр профиля
Re: Получение root прав из PyGTK приложения.
« Ответ #1 : 22 Июль 2012, 00:07:37 »
самый простой вариант
os.system('gksudo твой_скрипт' || 'kdesu твой_скрипт')
и так рекурсивно получать права рута
http://fonline.ru/ заходите

Оффлайн Daynin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 88
    • Просмотр профиля
    • Google+
Re: Получение root прав из PyGTK приложения.
« Ответ #2 : 22 Июль 2012, 12:05:30 »
Да, это действительно первым делом приходит в голову, но таким образом не получится сделать по ряду причин (нет как такового единого скрипта, функционал разбросан по модулям). В общем, идеальным вариантом была бы возможность получения root прав для текущего процесса прямо из кода, но пока не нашел такого способа. Возможно, придется идти на "грязные хаки" при помощи os.system.
Замечательный тут у вас форум! Много интересных людей.

Оффлайн Daynin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 88
    • Просмотр профиля
    • Google+
Re: Получение root прав из PyGTK приложения.
« Ответ #3 : 23 Июль 2012, 14:24:23 »
Что, больше совсем никаких идей нет?  :(
Замечательный тут у вас форум! Много интересных людей.

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3474
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Получение root прав из PyGTK приложения.
« Ответ #4 : 23 Июль 2012, 15:20:52 »
почему нельзя просто запускать приложение от root? или это единичная необходимость ?
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Получение root прав из PyGTK приложения.
« Ответ #5 : 23 Июль 2012, 15:39:29 »
Что, больше совсем никаких идей нет?  :(
а какие ещё идеи нужны?
права root - это область компетенции системы, а не программы ... на чём бы вы её не писали: Python, C/C++ ... или BASIC.
никаких иных способов получения root кроме системных вы не найдёте, а именно:
- запуск от root
- sudo
- SUID бит
всё!
и это замечательно! ибо именно поэтому в Linux нет головной боли с вмирусами.

P.S. а если вы ищите способ получить root "из-за угла", злонамеренно, то ищите не там (в языке, библиотеках), ищите в обсуждениях хакинг-хвастовства и проколах в безопасности ;).
 

Оффлайн Daynin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 88
    • Просмотр профиля
    • Google+
Re: Получение root прав из PyGTK приложения.
« Ответ #6 : 23 Июль 2012, 16:06:39 »
почему нельзя просто запускать приложение от root? или это единичная необходимость ?
Конечно, можно. Так оно и работает сейчас. Но не хочется, чтобы пользователь это делал "руками", запуская из терминала. А как сделать лаунчер стандартными средствами quickly не понятно. Проблема не в работе приложения как в таковой, а в usability.
Что, больше совсем никаких идей нет?  :(
а какие ещё идеи нужны?
права root - это область компетенции системы, а не программы ... на чём бы вы её не писали: Python, C/C++ ... или BASIC.
никаких иных способов получения root кроме системных вы не найдёте, а именно:
- запуск от root
- sudo
- SUID бит
всё!
и это замечательно! ибо именно поэтому в Linux нет головной боли с вмирусами.

P.S. а если вы ищите способ получить root "из-за угла", злонамеренно, то ищите не там (в языке, библиотеках), ищите в обсуждениях хакинг-хвастовства и проколах в безопасности ;).
 
Нет, я не ищу способов получить рут из-за угла, я ищу способ попросить систему дать рут права текущему процессу из приложения. Возможно есть такая библиотека (policykit не предлагать, это overhead). Получение рут прав средствами системы и так есть, но для этого приложение запускается пользователем через sudo/gksu. Хотелось бы это делать более элегантно.

Есть несколько идей, но это тоже костыли, рожденные в результате отсутствия знаний как это можно сделать с помощью стандартных средств quickly:
1. Написать скрипт, который при первом запуске создает лаунчер, через который уже и осуществляется запуск приложения с необходимыми привилегиями.
2. Написать ряд отдельных скриптов, запускаемых из кода приложения, каждый из которых осуществляет необходимое действие, предварительно попросив рут права.
3. Использовать из кода приложения при помощи os.system() стандартные средства системы для чтения и записи, например, cat и echo.
Но на мой взгляд, так делать уж совсем не правильно и криво. Вот и ищу хороший способ.
« Последнее редактирование: 23 Июль 2012, 16:14:26 от Daynin »
Замечательный тут у вас форум! Много интересных людей.

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3474
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Получение root прав из PyGTK приложения.
« Ответ #7 : 23 Июль 2012, 17:53:15 »
сделайте desktop файл который и будет запускать приложение от root перед запуском будет спрошен пароль и всего та....
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн Daynin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 88
    • Просмотр профиля
    • Google+
Re: Получение root прав из PyGTK приложения.
« Ответ #8 : 23 Июль 2012, 18:07:45 »
сделайте desktop файл который и будет запускать приложение от root перед запуском будет спрошен пароль и всего та....
Да, это очень хороший вариант. Вы знаете как можно сделать это работая с quickly так, чтобы собранный пакет устанавливал такой лаунчер?
Замечательный тут у вас форум! Много интересных людей.

 

Страница сгенерирована за 0.083 секунд. Запросов: 24.