Запустіть команду `sudo` при запуску / завантаженні на Mac OS X


2

Як запустити a sudo на командному рядку при запуску Mac?

Зокрема, я намагаюся запустити наступний рядок на Mountain Lion:

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in

Є й інші питання щодо запуску інструментів командного рядка під час запуску (наприклад, це ), але вони не займаються питанням sudo та необхідні права доступу / пароль.

Інші запитання & amp; Відповіді обговорюються launchd, але це схоже на процеси демона, які потрібно переглядати і запускати, якщо вони зазнали аварії. Навпаки, я просто намагаюся зробити одноразовий випадок, запустивши один рядок під час запуску.

Якщо з роками все змінилося, було б непогано запустити sudo під час запуску як на старіших версіях Mac OS X, як Mountain Lion, так і на новіших, як Yosemite / El Capitan.

Відповіді:


3

Хоча launchd і термін LaunchDaemon звучить як демони, це кращий спосіб автоматизувати все. яблуко говорить у своїй документації,

Сценарії входу та виходу - це застаріла технологія. У більшості випадків замість цього слід використовувати запуск launchd, як описано в розділі Створення запуску демонів і агентів

Сценарії логіна та виходу - це сценарії, які повинні запускатися один раз і потім завершуватися. вони спрацьовують за допомогою loginwindow.

Я думаю, що розміщення вашої команди в файл запуску plist є правильним способом зробити це. По-перше, ви можете виключити агенти запуску, оскільки вони будуть виконуватися завжди як користувач. тому що ви хочете, щоб скрипт виконувався як root, ви повинні розмістити його під /Library/LaunchDaemons ( /System/Library/LaunchDaemons також буде працювати, але система ....) і додати прапор RunAtLoad але не встановлюйте KeepAlive (або налаштуйте його на щось подібне див. цю хорошу документацію ).

EDIT оскільки сценарій працює як root, ви можете пропустити sudoІнший варіант - створити скрипт і включити його /etc/sudoers ( visudo ) з nopasswd прапорець і запустити його як користувача


2

Це питання має кілька хороших відповідей на apple.stackexchange.com .

cron можливо, найпростіше налаштувати; за допомогою спеціального запису @reboot /path/to/script у файлі crontab ваш cronjob працюватиме тільки при запуску. Є відповідь про те, як це зробити у питання, пов'язаному вище.

launchd тут, мабуть, правильне рішення. ти може використовуйте його для виконання одноразових команд і сценаріїв. Один з інших відповідей у вищезгаданому питанні, що стосується вищезгаданого, пишеться, як написати файл PropertyList для цього. Зауважте, що PropertyList має бути розміщено під /Library/LaunchDaemons , щоб запустити як root.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.