Jak otworzyć skrypt powłoki w nowym oknie terminala i uruchomić go z uprawnieniami administratora

3

Muszę programowo otworzyć skrypt powłoki w oknie terminala i uruchomić go z uprawnieniami administratora. Używam os Javascript, ponieważ wyświetla wygodny monit o login / hasło administratora.

Obecnie używam tego:

osascript -e 'do shell script "open -a Terminal \"'"$appDir"'\"" with administrator privileges'

Problem polega na tym, że nawet po wprowadzeniu poświadczeń w wierszu poleceń OS X nowo otwarty skrypt będzie błagał o hasło przy pierwszym poleceniu sudo.

Jak przekazać dane logowania administratora do otwartego skryptu?

DavidD
źródło
Czy nie możesz uruchomić skryptu wymagającego bezpośrednio uprawnień administratora (zamiast używać Terminalu jako pośrednika)?
nohillside
Nie, ponieważ uruchomienie skryptu bezpośrednio wykonuje go w tle. Potrzebuję okna Terminal do interakcji z użytkownikiem.
DavidD

Odpowiedzi:

2

Próbowałbym napisać prosty skrypt:

#!/bin/bash
sudo /usr/bin/id

zapisz to jako something.command, zmień jego uprawnienia na wykonywalne za pomocą chmod +x, a następnie uruchom to z AppleScript za pomocą

osascript -e 'do shell script "open -a Terminal ./something.command"'

Zamiast /usr/bin/id możesz wywołać dowolny skrypt, który musisz uruchomić z uprawnieniami administratora.

EDYTOWAĆ:

To zadziała:

osascript -e 'do shell script "sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal" with administrator privileges'
Brethil
źródło
Dzięki, ale jest to podobne do obecnego stanu: coś.polecenie monituje o hasło, którego staram się unikać. Chciałbym mieć okno zachęty do OS X, które pozwala na wejście na przykład innego użytkownika z uprawnieniami administratora. Osascript oferuje taką funkcjonalność z „uprawnieniami administratora”.
DavidD
1
Ostatnia edycja zawiera rozwiązanie
Brethil
Dziękuję Brethil, twoja edycja załatwiła sprawę. Skończyło się na tej linii: osascript -e 'do shell script "sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal \"'"$appDir"'\"" with administrator privileges'. Uprawnienia administratora zadane przez okno dialogowe OS X zostały pomyślnie przekazane do wykonanego skryptu.
DavidD