Не вдалося знайти спосіб виконання сценарію для гостьового акаунта під час входу в систему, який виконується щохвилини. Вони кажуть, що використання демона cron застаріле, тому, схоже, я буду використовувати запускати файли .plist.
Сценарій: Я маю загальнодоступний iMac. Я хочу дозволити широкій публіці використовувати гостьовий обліковий запис і примушувати його виходити кожні півгодини. Я написав рубіновий сценарій, щоб перевірити час входу та з’ясувати час, що залишився. Я можу його відображати сповіщення про банер кожні 10 хвилин за допомогою osascript, а потім змусити його вийти з мого облікового запису. Проблема полягає в тому, що я намагаюся реалізувати його для гостьового акаунта, він не працює.
Проблема полягає в тому, що я розміщую .plist файл всередині / Library / LaunchDaemons, оскільки він працює після входу в систему, а також працює як root. Запуск як root є важливим, оскільки я можу мати привілей вимикати процеси, коли закінчується час. Мені потрібно це виконувати раз на хвилину. Це поточний файл плісту, який працює, коли я ввійшов як власне ім'я користувача "власник", але не як гість. Використання org.user.plist
Мій оригінальний файл .plist виглядав приблизно так
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.user</string>
<key>Program</key>
<string>/usr/local/bin/notify-custom</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Оновлення 1 (ще не рішення) .plist файл, який працює кожні 10 секунд як для гостя, так і для мого імені користувача
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.user</string>
<key>ProgramArguments</key>
<string>/usr/local/bin/notify-custom</string>
<key>WatchPaths</key>
<array>
<string>/Users/Guest/Library</string>
<string>/Users/owner/Library</string>
<array>
</integer>
</dict>
</plist>
Як тест, щоб переконатися, що спливає банер повідомлень oascript, у мене цей код всередині / usr / local / bin / notify-custom
#/bin/bash
#Using whoami would have shown me logged in as root under LaunchDaemon .plist
loggedinUser=`finger | awk 'NR==3{print $1}'`
#I need to manually run terminal and type sudo as guest for nextline to work
sudo -u $loggedinUser /usr/bin/osascript -e 'display notification "Test" with title "Banner Notification"'
Рішення нижче.
notify-custom
і чи це двійковий чи сценарій, і якщо останній є вмістом сценарію?
root
в wheel
групі з 0644
дозволами на /Library/LaunchAgents
і він побіг , коли увійшов як Гість. За винятком рядка для програмного ключа, решта файлу була однаковою. Це спрацювало як очікувалося. Я також дивлюся на інші програми LaunchAgents у тому самому місці та перевіряю в "Моніторі активності", чи вони також почалися. Тож, не знаючи, що notify-custom
це таке та його зміст, я не можу запропонувати наразі інше, як сказати .plist файли, що /Library/LaunchAgents
працюють в обліковому записі гостей.