Запускать команду автоматически как root после входа в систему

Запускать команду автоматически как root после входа в систему

Я использую evrouter для имитации нажатий клавиш с дополнительных кнопок моей мыши. Он отлично работает, но мне нужно запустить команду с sudo, чтобы он заработал, поэтому я не могу просто использовать DE для обработки автозапуска.

Я рассматривал init.d, но, насколько я слышал, он работает только на разных этапах загрузки, а мне нужно, чтобы он запускался от имени root.послеавторизоваться.

$ cat .evrouterrc 
"Logitech G500" "/dev/input/event4" any key/277 "XKey/0"
"Logitech G500" "/dev/input/event4" any key/280 "XKey/9"
"Logitech G500" "/dev/input/event4" any key/281 "XKey/8"
$ sudo evrouter /dev/input/event4

Редактировать:Хорошо, похоже, я могу использовать session-setup-scriptопцию lightdm.conf для запуска скрипта как root. Скрипт у меня ниже, но, как и ожидалось, при запуске от root он id -uбольше не равен 1000, а оператор if никогда не выполняется. Есть ли аргумент или переменная, которую я могу использовать для получения имени пользователя или идентификатора?

решение1

После загрузки компьютера Linux запускает все, что находится в файле crontab вашей системы. Cron — это программа, которая планирует запуск команд, программ или скриптов в строго определенное время дня. У каждого пользователя есть crontab, но в этой ситуации для такой работы подходит crontab системы.

Вы можете настроить cron для выполнения команд или программ при загрузке системы. Так что, я думаю, это то, что вы имеете в виду.

Чтобы отредактировать его соответствующим образом, вам нужно будет открыть файл crontab вашей системы, выполнив команду. sudo vim /etc/crontabМожете смело заменить ``vim" на ваш любимый текстовый редактор cli.

Добавьте строку (заменив соответствующие вещи именно тем, что вам нужно, например, команды и т. д.) ниже всех остальных @reboot evrouterПримечание: лучшей идеей может быть создание скрипта, размещение в нем команд и запуск скрипта с помощью crontab. Это действительно ваш выбор.

В зависимости от вашего дистрибутива вам может потребоваться или не потребоваться указать, кто должен выполнять команду после @rebootВ большинстве случаев файл crontab будет иметь некоторые комментарии в верхней части файла, чтобы дать вам указания. Конечно, просмотр других записей в этом файле, вероятно, будет наиболее полезным для вас.

решение2

Используя lightdm.confзначение , session-setup-scriptя смог выполнить команду от имени пользователя root, как и ожидалось.

session-setup-script=/opt/hacks/lightdm-startup

Тем временем в другой папке:

#!/bin/bash
if [ "$USER" = "j" ]
then
evrouter /dev/input/event4
fi

Я до сих пор не уверен, почему ==не сработало в операторе if, а =сработало... Bash временами ведет себя непредсказуемо.

Связанный контент