Я запускаю applscript, который запускает шеллскрипт через Терминал.
Я хочу иметь возможность использовать «do shell script с правами администратора», но Терминал запускает мой скрипт как root, а не как обычныйпользователь (который является администратором).
Причина, по которой я хочу работать не как root (за исключением очевидных причин), заключается в том, что я использую знак ~, чтобы любой пользователь мог войти в систему и запустить скрипт локально (например,Я записываю файл журнала прямо на рабочий стол пользователя).
Другая причина, по которой я хочу работать не от имени пользователя root, заключается в том, что я использую установщик ViseX во время выполнения сценария оболочки, который не работает как root.
Это яблочный скрипт, который я использую (спасибо regulus6633 за яблочный пирог):
set theFile to "myscriptname.sh"
-- launch the application with admin privileges and get the pid of it
set thePID to (do shell script "/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal > /dev/null 2>&1 & echo $!" with administrator privileges) as integer
-- get the bundle identifier of that pid so we can do something with the application
delay 0.2
tell application "System Events"
set theProcess to first process whose unix id is thePID
set bi to bundle identifier of theProcess
end tell
-- runs the Terminal with the shellscript
set theFileAlias to (POSIX file theFile) as alias
tell application id bi
activate
open theFileAlias
end tell