Запустите скрипт как root сразу после входа в GUI

По какой-то причине мои жесткие диски раскручиваются после того, как я войду в свой аккаунт.

В rc.local есть hdparm -y /dev/sda (sda - мой Data Raid, который никогда не монтируется в Linux, используется только для вырезания видео в Windows), который раскручивает мои жесткие диски непосредственно во время загрузки.

проблема: как только я вхожу, они снова раскручиваются; поэтому я хочу снова запустить эту команду (для этого нужны права root) сразу после входа в Unity. (Ubuntu 15.10)

1 ответ

Решение

Во-первых, вам нужно убедиться, что вы можете запустить эту команду с sudo без необходимости пароля. Таким образом, вы можете сделать это в sudoers файл:

sudo visudo

В этом файле вы должны увидеть строку, которая выглядит следующим образом:

YOURUSERNAME ALL = (ALL) ALL

Если нет, то ничего страшного, не беспокойся об этом. Вы в sudoers группа в групповом правиле тоже там. Для того, чтобы выполнить hdparm без пароля вам просто нужно добавить правило для него:

YOURUSERNAME ALL = (root) NOPASSWD: /sbin/hdparm

Если это правило в самом конце, вы можете запустить эту программу без пароля. Ура!

Затем просто добавьте пользовательское приложение запуска в меню "Startup Applications":

sudo hdparm -y /dev/sda

Поскольку вам не нужен пароль для него, он будет работать нормально каждый раз, когда вы входите в систему.

Если вы хотите запустить этот скрипт автоматически при выходе из режима ожидания / сна, вам нужно создать для него другой скрипт:

sudo YOURTEXTEDITOR HERE /lib/systemd/system-sleep/hdparm-resume.sh

И используйте следующее содержимое:

#!/bin/sh
case $1/$2 in
  pre/*)
    exit 0
    ;;
  post/*)
    sudo hdparm -y /dev/sda
    exit 0
    ;;
esac

Наконец, чтобы убедиться, что это может быть выполнено:

sudo chmod a+x /lib/systemd/system-sleep/hdparm-resume.sh
Другие вопросы по тегам