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

В разрешении сценария profile.d отказано

Я пытаюсь отключить пробуждение ACPI по usb в Ubuntu 20.04, поэтому я создал скрипт в /etc/profile.d

-rwxr-xr-x 1 root root 110 18 мая 00:23 disable-usb-wake.sh

#!/bin/sh -e
if cat /proc/acpi/wakeup | egrep 'XHC.*enabled'; then
    echo "XHC" > /proc/acpi/wakeup
fi

Когда я запускаю свою машину, он говорит, что в разрешении отказано. Зачем?

Как упоминалось в комментариях, /etc/profile.d запускается при входе пользователя в систему, поэтому не будет иметь достаточных разрешений для изменения конфигурации системы. Вы можете добавить sudo там, но это будет означать, что вам нужно будет снова ввести свой пароль при входе в систему - это будет раздражать и не будет работать, если входящий в систему пользователь не является системным администратором. Кроме того, он не будет выполнять свою работу, если после загрузки никто не войдет в систему.

Есть несколько вариантов, включая добавление /etc/rc.local как вы упомянули, это был один из распространенных способов выполнения такого рода пользовательских заданий «при загрузке» до того, как SystemD полностью /etc/rc* вещь неактуальная.

Но - если у вас уже есть /etc/rc.local настроенный с помощью вашего скрипта, вы можете просто включить его в SystemD:

  1. Удостовериться /etc/rc.local исполняемый. Например, запустив chmod a+x /etc/rc.local. В противном случае режим совместимости с SystemD работать не будет.
  2. Разрешите включить режим совместимости SystemD, создав файл /etc/systemd/system/rc-local.service.d/enable.conf с содержанием ниже.
  3. Включите совместимость SystemD, запустив sudo systemctl enable rc-local

/etc/systemd/system/rc-local.service.d/enable.conf :

[Install]
WantedBy=multi-user.target

При следующей загрузке вашей системы SystemD запустит ваш пользовательский /etc/rc.local.

Альтернативы SystemD

  1. Использовать Система управления SystemD tmpfiles, чтобы она писала то, что вам нужно, во время загрузки. Это мое рекомендуемое решение.
  2. Посмотри это Задайте вопрос Ubuntu для некоторых людей, создающих службы SystemD, чтобы делать то же самое.
  3. Я считаю, что вы можете написать правило udev, которое отключает "power/wakeup"когда он видит, что такое XHC (я думаю, это встроенный USB-концентратор XHCI?), как описано здесь: https://www.kernel.org/doc/html/v4.13/driver-api/usb/power-management.html