Назад | Перейти на главную страницу

Ubuntu выполняет скрипт python при входе в систему как root после входа пользователя в систему

Я установил MythBuntu на компьютер. MythTV не поддерживает Пульт Asus AI ИК-приемник, поэтому я искал возможные решения. Один из них был Скрипт Python который действует как мост между окном терминала и целевым приложением.

Его должен выполнять обычный пользователь Bjorn с привилегиями root (sudo) между входом пользователя в систему и загрузкой MythTV без запроса пароля. Пока я пытался поставить python Linux_Asus_AI_remote.py, sudo Linux_Asus_AI_remote.py, sudo python Linux_Asus_AI_remote.py в /etc/rc.local

Вопросы:

Он должен выполняться после входа пользователя в систему, MythTV запускается автоматически и получает фокус, получая нажатия клавиш, генерируемые из Linux_Asus_AI_remote.py

Скрипт-тест:

После входа пользователя в систему я открыл окно терминала и вошел sudo python Linux_Asus_AI_remote.py. Все работает нормально, как только я ввел правильный пароль и переключился на MythTV.

Он не должен завершать скрипт через 15 минут, и пользователю все равно необходимо ввести пароль, чтобы получить дополнительные разрешения.


Заранее спасибо.

вам, вероятно, нужно разрешить выполнение сценария, изменив разрешения на 755.

Я быстро погуглил и нашел это: http://embraceubuntu.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/

Я уверен, что принцип тот же для скрипта Python.

rc.local запускается при загрузке системы, то есть задолго до входа пользователя в систему.

У вас есть два варианта запуска сценария. Один из них - использовать visudo (8) для настройки команды, разрешающей запуск, с NOPASSWD: в записи команды, а затем просто используйте sudo для запуска команды, возможно, из / etc / profile и любых других файлов, необходимых для любых оболочек, которые люди могут использовать. Это может быть так же просто, как сбросить что-нибудь в /etc/profile.d/, если он существует. Например, если все, кто авторизуется, будут в группе video тогда когда ты бежишь visudo вам нужно такое правило:

%video  ALL=NOPASSWD: /path/to/Linux_Asus_AI_remote.py

а затем вы должны вызвать:

sudo /path/to/Linux_Asus_AI_remote.py

Другой вариант - использовать pam_exec запускать команду после входа в систему с правами root; это чище, но более опасно, потому что, если вы сделаете ошибку, вы можете пропустить свою систему и не сможете войти в систему. Если вы хотите изучить это, прочтите модули PAM и то, как работают аутентификация и авторизация, и посмотрите в /etc/pam.d/; Кроме того, хорошо подумайте, как вы ограничите это действие только для соответствующих пользователей.

Какой бы метод вы ни выбрали, вы, вероятно, захотите убедиться, что он не произойдет, если вы войдете в систему как root, чтобы уменьшить мусор, который позволяет пользователю с правами администратора войти в систему.