Запретить выключение ПК при нажатии кнопки питания

9

Я строю ПК и BeagleBords ARM для публичного использования. Они работают под управлением Ubuntu 13.04 и Linux, собранных вручную, соответственно. Есть ли способ предотвратить их отключение нажатием кнопки выключения (на корпусе, а не на клавиатуре)? Конечно, я могу сделать это аппаратно. Я просто предпочитаю программные решения. Если кто-то может сказать наверняка «это невозможно», это также будет полезным ответом.

Результат: Хорошо, я понял это. Можно предотвратить отключение при нажатии, но не при длительном нажатии. Мне придется сделать аппаратный переключатель, чтобы отключить кнопку питания при необходимости.

Барафу Альбинос
источник
Вам нужно предотвратить преднамеренные или случайные нажатия клавиш? Обратите внимание, что обычно есть другие способы перезагрузки / выключения системы, включая Magic SysReq (может быть отключен) и переключение на TTY, а затем перезагрузка с помощью Ctrl-Alt-Delete.
Лекенштейн
user173876 упомянул что-то (в ответе без ответа, который мы удалили), что может заслуживать рассмотрения: я сталкивался с несколькими ситуациями (в моем случае во время операции GIMP), когда все средства запуска экрана И клавиатура перестали отвечать, включая Ctl-Alt- T, Alt-F1 ... F6, Ctl-Alt-Del, Ctl-Alt-BkSp, и ЕДИНСТВЕННЫМ выходом было использовать кнопку питания для выключения / перезапуска. Отказ от этой возможности может привести к необходимости вынимать батарею и / или тянуть шнур питания. Или разбить его молотком.
Элия ​​Каган

Ответы:

3

Вы можете использовать следующую команду в терминале :

sudo chmod -x /sbin/shutdown

Если вы хотите повторно включить, используйте +xвместо этого -xв той же команде.

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

Раду Рэдяну
источник
Вы должны использовать dpkg-statoverride для сохранения постоянных разрешений при upstartобновлении. Пример: sudo dpkg-statoverride --add root root 0644 /sbin/shutdown. Следует отметить, однако, что удаление разрешений на выполнение нарушает опцию завершения работы для всех пользователей этой программы (включая poweroffи halt).
Лекенштейн
3

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

psusi
источник
Я не уверен, что это невозможно. Программное обеспечение отвечает за инициирование выключения. Как ваш рабочий стол мог бы получить возможность показывать закрывающееся меню или корректно завершать работу программ?
Лекенштейн
@Lekensteyn, это не когда вы удерживаете кнопку в течение 4 секунд.
psusi
Пять секунд, не правда ли? Это действительно переключатель, который нельзя переопределить, но нажатие (... и немедленное отпускание) кнопки выключения обрабатывается ACPI, что означает, что его можно перехватить и проигнорировать. Вы правы, хотя, скорее всего, OP рассматривает намеренные попытки выключить систему.
Лекенштейн
2

Вам нужно изменить ...

/etc/acpi/powerbtn.sh

и закомментируйте эту строку (я уже добавил #) ...

#/sbin/shutdown -h now "Power button pressed"
  • Это влияет только на кнопку питания, а не на выключение из меню.
  • Но также обратите внимание на ошибку 1124149, которая утверждает, что из-за перехода из / usr / bin / qdbus в / usr / lib / i386-linux-gnu / qt4 / bin / qdbus это может не всегда работать (ошибка также влияет на Ubuntu).
Rinzwind
источник
Это решение не влияет на мою систему.
Раду Рэдяну
Это будет ошибка @ RaduRădeanu :) Работает 12.10 на работе; а также не на моей машине дома (которая имеет 13.04). Так что пока используйте метод Раду, но это, вероятно, также влияет на другие кнопки на клавиатуре.
Rinzwind
Это не перестанет удерживать кнопку питания в течение 4 секунд;)
psusi