Задать вопрос
@Drovosek01

Как перезапустить shell-скрипт с стандартным окном системы запроса пароля и правами администратора в macOS?

Есть shell-скрипт с определенной логикой и в начале идет функция проверки необходимости запуска с правами администратора.

Я хочу, чтобы пароль администратора запрашивался в стандартном окне для ввода пароля (как например при установке .pkg-файлов) в macOS. Потому что скрипт будут выполнять разные пользователи, в том числе и те, кто увидят окно терминала первый раз в жизни и многие не понимают "как вводить пароль в терминале". Поэтому стандартное диалоговое окно удобнее.

В macOS можно вызвать диалоговое окно ввода пароля с помощью AppleScript и я написал вот такой скрипт для примера и проверки, запустится ли скрипт с правами админа:

#!/bin/bash

SCRIPT_DIR="$(dirname "$0")"
SCRIPT_NAME="$0"
SCRIPT_PATH="$(realpath "$0")"

function relaunchWithAdminRequest() {
    CURRENT_USER=$(whoami)

    echo "CURRENT_USER $CURRENT_USER"

    if [ "$CURRENT_USER" != "root" ]; then
        temp_script=$(mktemp "/tmp/temp.XXXXXX" 2>/dev/null)
        cp "$SCRIPT_PATH" "$temp_script"
cat <<EOF > /tmp/testapplescript
tell application "Terminal" to do script "sh $temp_script"
EOF

osascript <<EOF
set scriptPath to POSIX path of "$temp_script"

do shell script "osascript /tmp/testapplescript" with administrator privileges
EOF
    fi
}

relaunchWithAdminRequest


Терминал запускается предварительно запросив пароль администратора в стандартном диалоговом окне, но все равно у меня нет прав администратора в новом запущенном скрипте.

Вопрос:
Как в macOS из текущего shell-скрипта запустить другой shell-скрипт с правами администратора, получив эти права с помощью стандартного диалогового окна ввода пароля?
  • Вопрос задан
  • 58 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы