Russian Qt Forum

Qt => Общие вопросы => Тема начата: dangreen от Август 10, 2011, 14:16



Название: Авторизация пользователя в Mac OS X [решено]
Отправлено: dangreen от Август 10, 2011, 14:16
Дорогие форумчане, а в частности программисты под OS X, как в Qt авторизовать пользователя чтобы, допустим, в QProcess можно было исполнить "sudo rm /..."?


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: LisandreL от Август 10, 2011, 15:14
А в чём проблема?
У пользователя нет прав на sudo?
Или хотите без интерактивного ввода пароля?


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 15:25
А в чём проблема?
У пользователя нет прав на sudo?
Или хотите без интерактивного ввода пароля?

где взять то интерактивный ввод пароля?
QProcess::start("sudo su");  не выводит запрашивание пароля

если писать QProcess::start("sudo su"); QProcess::waitForReadAll();QProcess::start(pass); -  то пахать не будит


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: Пантер от Август 10, 2011, 15:26
В Линухе есть всякие kdesu. Может и в Маке есть.


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 15:33
В Линухе есть всякие kdesu. Может и в Маке есть.

 найтит такого не могу  :-[


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: kambala от Август 10, 2011, 15:51
http://developer.apple.com/library/mac/#documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 15:56
http://developer.apple.com/library/mac/#documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html

круто конечно, но это для Xcode


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: wolfut от Август 10, 2011, 16:01
Можно попробовать установить suid бит приложению:

sudo chown -R root:wheel /Applications/<appname>.app/Contents/MacOS/<appname> 

sudo chmod 4755 /Applications/<appname>r.app/Contents/MacOS/<appname>


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 16:03
Можно попробовать установить suid бит приложению:

sudo chown -R root:wheel /Applications/<appname>.app/Contents/MacOS/<appname> 

sudo chmod 4755 /Applications/<appname>r.app/Contents/MacOS/<appname>

 ну сделаю я так, перенесу прогу на другой комп, suid слетит


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: wolfut от Август 10, 2011, 16:05
В инсталлере выполнение это скрипта пропишешь, и всё.


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 16:06
В инсталлере выполнение это скрипта пропишешь, и всё.

 а интсаллера не будит )


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: Пантер от Август 10, 2011, 16:07
Вирус пишешь? Если нет, то делай инсталлер. Если да, то копай сам.


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 16:09
Вирус пишешь? Если нет, то делай инсталлер. Если да, то копай сам.

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

полюбому  в Qt должны быть средства для авторизации юзера


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: Пантер от Август 10, 2011, 16:10
полюбому  в Qt должны быть средства для авторизации юзера
С чего вдруг?


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 16:11
полюбому  в Qt должны быть средства для авторизации юзера
С чего вдруг?

иначе Qt - кака


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: lit-uriy от Август 10, 2011, 16:14
dangree, чё куришь?
Qt изначально - библиотека визуальных кроссплатформенных компонентов. Причём здесь авторизация?


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: LisandreL от Август 10, 2011, 16:15
$echo <password> | sudo -S <command>
$echo <password> | sudo -u <username> -S <command>
Так не будет работать?


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: kambala от Август 10, 2011, 16:17
http://developer.apple.com/library/mac/#documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html

круто конечно, но это для Xcode
что за бред? Xcode - это среда разработки, а там приводится код для Mac OS X - его и надо использовать в приложении.


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 16:32
http://developer.apple.com/library/mac/#documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html

круто конечно, но это для Xcode
что за бред? Xcode - это среда разработки, а там приводится код для Mac OS X - его и надо использовать в приложении.
тогда подскажи пожалусто что нужно инклудить чтобы заработал класс AuthorizationRef


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 10, 2011, 16:39
$echo <password> | sudo -S <command>
$echo <password> | sudo -u <username> -S <command>
Так не будет работать?

а за вот это огромное тебе спасибо!)

осталось сваять диологовое окно похожее на нативное )


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: kambala от Август 10, 2011, 16:43
http://developer.apple.com/library/mac/#documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html

круто конечно, но это для Xcode
что за бред? Xcode - это среда разработки, а там приводится код для Mac OS X - его и надо использовать в приложении.
тогда подскажи пожалусто что нужно инклудить чтобы заработал класс AuthorizationRef
мне надо читать документацию точно так же как и тебе - я не работал с авторизацией, а ссылку нашел нехитрым гуглением. но подозреваю, что нужно подключить Security.framework


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: GreatSnake от Август 10, 2011, 18:37
$echo <password> | sudo -S <command>
$echo <password> | sudo -u <username> -S <command>
Так не будет работать?

а за вот это огромное тебе спасибо!)

осталось сваять диологовое окно похожее на нативное )
Рано радуешься. Не будет это работать. Для ввода пароля в sudo требуется настоящий или псевдо терминал.

Судя по форуму многим это требуется. Всё никак руки не доходят написать виджет(
Вот здесь (http://www.linux.org.ru/forum/development/2947563#comment-2949698) можно посмотреть на реализацию запуска ssh через QProcess.


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: Igors от Август 10, 2011, 19:06
программа слишком коротко юзабельна чтобы делать для нее инсталлер, да и сама по себе является почти инсталлером,и с каких пор для прог под макось делают инсталлеры?
С очень давних. Частенько (в большинстве случаев) все что инсталлятор делает - предлагает скопировать приложение в Applications фолдер. Запрос на авторизацию от посторонней/малоизвестной программы пугает. Mac пользователей. Стандартный набор линукс файлов (config, install и др) также дискредетирует приложение в его глазах. Учить командую строку здесь не хотят и не любят, линукс пасется на заднем дворе. Так что может лучше "никак"


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: ieroglif от Август 10, 2011, 19:42
иначе Qt - кака
если С++ не умеет варить кофе - зачем он нужен ???
отличный вывод  ;D


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: GreatSnake от Август 10, 2011, 19:47
иначе Qt - кака
если С++ не умеет варить кофе - зачем он нужен ???
отличный вывод  ;D
На самом деле может dangreen и прав. В QProcess явно не хватает поддержки под unix псевдо-терминалов.


Название: Re: Авторизация пользователя в Mac OS X
Отправлено: dangreen от Август 11, 2011, 10:56
сделал класс диалога, который спрашивает и узнает верен ли пароль

http://puu.sh/4egi

реализовано через (Ж) конечно... но пашет

и так, спасибо LisandreL за подсказку,
Код:
$echo <password> | sudo -S <command>
если пихать это в QProcess то процесс тупо следует тому что мы у него попросили, и он печатает "<password> | sudo -S <command>"
поэтому я решил создавать скрипт который буду запускать из QProcess,  но создаваемый файл не имел прав для комманды sudo
это решилось простой коммандой "chmod +x" которую я применял из кода в QProcess, комманда лечит права и при этом не требует рут права


Название: Re: Авторизация пользователя в Mac OS X [решено]
Отправлено: GreatSnake от Август 11, 2011, 11:37
если пихать это в QProcess то процесс тупо следует тому что мы у него попросили, и он печатает "<password> | sudo -S <command>"
Скорми QProcess вот это:
Код
Bash
sh -c 'echo <password> | sudo -S <command>'
и не нужно никаких файлов.

Насчёт sudo...
А как быть, если у юзера нет прав на пользование sudo или разрешен запуск строго определенных команд?
Имхо, для универсальности нужно использовать 'su -'. Но вот для этого без псевдо-терминала уже никак (


Название: Re: Авторизация пользователя в Mac OS X [решено]
Отправлено: dangreen от Август 11, 2011, 11:54
если пихать это в QProcess то процесс тупо следует тому что мы у него попросили, и он печатает "<password> | sudo -S <command>"
Скорми QProcess вот это:
Код
Bash
sh -c 'echo <password> | sudo -S <command>'
и не нужно никаких файлов.

Насчёт sudo...
А как быть, если у юзера нет прав на пользование sudo или разрешен запуск строго определенных команд?
Имхо, для универсальности нужно использовать 'su -'. Но вот для этого без псевдо-терминала уже никак (

под макосью не встречал ограничений


Название: Re: Авторизация пользователя в Mac OS X [решено]
Отправлено: kambala от Август 11, 2011, 12:16
и все же я никак не могу понять почему бы просто не воспользоваться стандартной задокументированой технологией авторизации и не изобретать велосипед


Название: Re: Авторизация пользователя в Mac OS X [решено]
Отправлено: dangreen от Август 11, 2011, 12:26
и все же я никак не могу понять почему бы просто не воспользоваться стандартной задокументированой технологией авторизации и не изобретать велосипед

 я конечно тока за, буду пытаться разобраться, но документация на английском языке меня убивает


Название: Re: Авторизация пользователя в Mac OS X [решено]
Отправлено: kambala от Август 11, 2011, 12:31
но документация на английском языке меня убивает
жжоте товарищ


Название: Re: Авторизация пользователя в Mac OS X [решено]
Отправлено: dangreen от Август 11, 2011, 12:33
но документация на английском языке меня убивает
жжоте товарищ

надеюсь этот недуг вскоре вылечить)

там реально ниче не понять, понаписана всего, фиг знает что конкретно нужно  :-[