Рейтинг:0

команду su в /usr/bin

флаг pt

у меня есть удев правило, которое запускает команду как корень. У меня есть две разные машины, работающие на Ubuntu, и су команды в этих машинах расположены в разных местах. В одном компьютере находится в /бен/ (ubuntu 20.04.2), а в другом находится в /USR/бен/ (убунту 20.10). Правило работает только на той машине, где су находится в /USR/бен/, даже если я соответствующим образом изменю путь. Как я могу установить су в /USR/бен/ в убунту 20.04.2?

Правило udev:

ДЕЙСТВИЕ=="добавить"\ 
, ПОДСИСТЕМА=="Bluetooth"\ 
, ATTR{idVendor}=="hci0"\ 
, АТТР{idProduct}=="3585"\ 
, RUN+="/usr/bin/su root -c 'ratbagctl M720\ Триатлон, кнопка 7, набор действий, кнопка 3'"
флаг hr
Если бы обе системы были установлены с нуля, они обе должны были бы иметь символическую ссылку `/bin` на `/usr/bin`, и обе использовали бы `su` из `util-linux`, я думаю. OTOH, если какой-либо из них был обновлен (например, с 18.04), возможно, он использует реализацию `su` из пакета `login`.
флаг pt
да Ubuntu 20.04.2 была обновлена ​​с 18.04. Я не уверен, как/почему в Ubuntu 20.10 есть `su` в /usr/bin.
флаг hr
Похоже, это может быть проблема XY - почему вы вообще используете `su root` здесь, поскольку правила UDEV предположительно запускаются от имени root в любом случае (а если бы они этого не делали, `su` нужно было бы запускать в интерактивном режиме, чтобы получить права root? пароль)
флаг pt
см. комментарий от nrayamajhee здесь https://github.com/libratbag/libratbag/issues/596
флаг hr
Я подозреваю, что это решение "радуйся, Мария", автор не очень понимает, почему оно работает - вместо того, чтобы пытаться выяснить правильный абсолютный путь к `su` в надежде, что команда `ratbagctl` находится в корневой оболочке ` PATH`, я бы предложил указать абсолютный путь к `ratbagctl` напрямую, то есть что-то вроде `RUN+=/usr/local/bin/ratbagctl Logitech\ MX\ Anywhere\ 2S dpi set 2400`
флаг pt
это не работает так `ACTION=="add", SUBSYSTEM=="bluetooth", ATTR{idVendor}=="hci0", ATTR{idProduct}=="3585", RUN+="/usr/bin/ratbagctl M720 \ Triathlon button 7 action set button 3"`Помню, что в прошлый раз мне потребовалось некоторое время, чтобы правило udev заработало (и последнее сработавшее правило - это то, что я написал выше).
флаг pt
по какой-то причине правило udev не срабатывает. Так что на данный момент проблема не обязательно в команде запуска (я заменил команду запуска на другую, которая записывает отметку времени, и она тоже не работает)
флаг hr
ОК, поэтому убедитесь, что вы также указали полный путь к любой команде, записывающей отметку времени - как указано в `man udev` *Если не указан абсолютный путь, ожидается, что программа будет жить в /lib/udev; в противном случае необходимо указать абсолютный путь.*. Извините за опущение кавычек выше, вы правы, это должно быть `RUN+="/path/to/command args"`. Проверьте, где на самом деле находится `ratbagctl`, с помощью `what ratbagctl` и/или `type -a ratbagctl`.

Ответить или комментировать

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