Запрашивать у пользователя пароль в диалоговом окне при использовании sudo - PullRequest
1 голос
/ 15 августа 2011

Мне нужно выполнить команду с sudo и хочу отобразить диалоговое окно, чтобы пользователь мог ввести свои учетные данные. Попытки настроить приглашение с помощью Applescript были не чем иным, как мучительными, а использование встроенного «сценария do shell с правами администратора» не позволяет настроить окно, чтобы пользователь знал, откуда поступает запрос.

Конечно, есть способ отобразить окно, попросить ли пользователя ввести свои учетные данные и отправить значения обратно в sudo для выполнения команды? cocoasudo выглядит многообещающе, но в окне подсказки также написано "cocoasudo", которое мне нужно заменить именем моего приложения. Кто-нибудь нашел решение для реализации такого рода функциональности?

Ответы [ 3 ]

4 голосов
/ 15 августа 2011

Создание пользовательских окон выходит за рамки основного яблочного сценария. Вам нужно будет расширить свои навыки программирования, если вы этого хотите. Вам нужно будет научиться использовать инструменты, которые Apple предоставляет для создания окон и тому подобное. Суть в том, что вам нужно изучить API-интерфейсы AppleScriptObjC или Objective-C / Cocoa и узнать, как их использовать в Xcode.

С учетом сказанного, если вы не хотите изучать новые вещи, используйте инструменты, которые у вас есть. Примерно так будет работать. Вы можете настроить значок, кнопки, текст и т. Д. У вас даже может быть скрытый ответ, чтобы защитить пользователя при вводе паролей. Есть много вещей, которые вы можете сделать с Applescript без дальнейшего изучения ...

display dialog "OSAScript will need an Admin User name and password in order to make your changes." & return & return & "Please enter an admin username." default answer "" with icon 2
set username to text returned of result

display dialog "OSAScript will need an Admin User name and password in order to make your changes." & return & return & "Please enter an admin password." default answer "" with icon 2 with hidden answer
set pssword to text returned of result

do shell script "osascript -e \"return 1\"" user name username password pssword with administrator privileges
1 голос
/ 15 августа 2011

Кроме того, учтите, что после аутентификации с помощью sudo вам не нужно вводить пароль снова в течение следующих пяти минут.Это не решит вашу проблему напрямую, но даст вам больше возможностей для взаимодействия с пользователем.Параметр -n для sudo не позволяет запрашивать пароль (команда запускается или sudo завершается с ошибкой).

Вы можете использовать -n в сочетании с параметром -A, что приводит к запуску sudoотдельная программа, единственной задачей которой является сбор и вывод пароля.Позволит ли это вам использовать AppleScript, чтобы лучше делать то, что вы хотите?

0 голосов
/ 24 октября 2016

Если вы знакомы с Javascript, вы можете использовать модуль sudo-prompt для Node, чтобы запустить вашу команду с помощью sudo и при необходимости вызвать диалоговое окно.Диалоговое окно - это встроенное приглашение операционной системы, поэтому пароль пользователя никогда не будет доступен вашему приложению.Вы также можете указать название и значок вашего приложения в macOS.Модуль также работает в Windows и Linux.

...