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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Курсовой, root-режим  (Прочитано 2406 раз)

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

Оффлайн bdq

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Курсовой, root-режим
« : 25 Февраля 2010, 13:27:05 »
     Здравствуйте, хочу в первую очередь поблагодарить за прекрасный ресурс! Читаю давно, а зарегистрировавлся только вчера - всё что хотел узнать здесь есть, поэтому новые темы не создавал, а сейчас передо мной встала интересная задача :)
     Решил писать курсач под Linux, в выборе среды остановился на QT Creator, всё нравится, удобно, но не могу решить проблемку: Как сделать так, чтобы прога при запуске требовала привелегии суперпользователя, что прописать?

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #1 : 25 Февраля 2010, 14:14:05 »
Запускать через sudo, если в текстовом режиме, через gksudo, если из под гнома или kdesudo, если из под кед.

Оффлайн bdq

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #2 : 25 Февраля 2010, 14:16:27 »
Мне нужно запускать её со значка на рабочем столе :) Так бы я и сам справился :) Т.е. кликаю по значку (или в меню) прога запускается и вываливает форму ввода пароля (стандартную) как сделать?

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #3 : 25 Февраля 2010, 14:19:03 »
Либо через скрипт стартовый, либо через рекурсивный запуск программы но уже через *sudo.

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #4 : 25 Февраля 2010, 15:38:16 »
Есть функции setuid и setgid, но для того, чтобы они заработали, у исполняемого файла должен быть атрибут setuid.
Но попроще вариант - прописывание в команде значка
gksudo ваш_файл
gksudo сама нарисует красивое окошко, спросит пароль и программу запустит с нужными правами
« Последнее редактирование: 25 Февраля 2010, 15:41:14 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #5 : 25 Февраля 2010, 17:47:12 »
Мне любопытно какая такая задача требующая привелегий суперпользователя решается в курсовом проекте.
Может стоит сделать так чтобы приложение не требовало root'овых прав?

Оффлайн bdq

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #6 : 25 Февраля 2010, 18:20:53 »
Препод предложил следующее:

Запускаемся с лайв cd, на десктопе должна быть прога, кликаем, указываем путь к каталогу с пакетами, прога получает их список с чекбоксиками рядом, выбираем что нужно, жмем инсталл - они инсталятся :) В общем - то в лайф сд пароль вводить не нужно будет, но хочу сделать правильно, тем более тестить я буду не только на лайф сд. Пароль нужен собсно чтоб system("sudo dpkg -i .....") выполнить в итоге :) Спасибо, буду пробовать!

Препод любит Linux, но все одногрупники его уговорили разрешить писать под windows на .NET, а я решил не ударить в грязь лицом и писать под Linux, тем более, что QT мне интересен - давно попробовать хотел.  Препод видно, что рад был :)
« Последнее редактирование: 25 Февраля 2010, 18:26:00 от bdq »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #7 : 25 Февраля 2010, 18:24:48 »
system("sudo dpkg -i .....")
system("gksudo dpkg -i .....") если гном
system("kdesudo dpkg -i .....") если кеды
вот и всё решение.

Оффлайн bdq

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #8 : 25 Февраля 2010, 18:32:11 »
Спасибо всем за помощь, работает!

Пользователь решил продолжить мысль 25 Февраля 2010, 17:12:15:
А не подскажите ли как мне сейчас направить вывод консоли в какой-нибудь textEdit, т.е. я запустил допустим и хочу иметь возможность смотреть за процессом установки?

Пользователь решил продолжить мысль 26 Февраля 2010, 13:45:07:
Неужели никто не знает?
« Последнее редактирование: 26 Февраля 2010, 13:45:07 от bdq »

Оффлайн yaromir

  • Активист
  • *
  • Сообщений: 670
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #9 : 26 Февраля 2010, 23:53:01 »
Можно попробовать через system() использовать перенаправление потоков bash
system(gksudo dpkg -i *.deb 2>&1>out.txt; nano out.txt);А лучше посмотрите код adept'а. ;)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #10 : 27 Февраля 2010, 00:09:00 »
Обрати внимание на функции popen() / pclose()

Оффлайн bdq

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #11 : 27 Февраля 2010, 13:32:16 »
Что-то ничего у меня не получается  :-[
посмотрел исходники Синаптика, но я там точно не разберусь....
Хочу сделать так:

Оффлайн bdq

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #12 : 03 Марта 2010, 20:31:24 »
Люди, может кто сможет чего посоветовать?

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #13 : 04 Марта 2010, 11:24:00 »
Это GTK-шное окошко, в него встроен терминал.
Можно поискать по этим словам (я нашел питоний модуль vte), а можно сымитировать - нарисовать какой-нибудь textEdit или textBox, запускать процесс, отлавливать его stdout и stderr и писать их в окно.
Тут уже было упоминание про функцию popen - это она.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Курсовой, root-режим
« Ответ #14 : 04 Марта 2010, 11:41:37 »
а можно сымитировать - нарисовать какой-нибудь textEdit или textBox, запускать процесс, отлавливать его stdout и stderr и писать их в окно.
Если используются спец последовательности терминала, то их затрахаешься эмулировать. Проще взять готовое решение.

 

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