Puncte:0

comanda su în /usr/bin

drapel pt

am un udev regula care rulează o comandă ca rădăcină. Am două mașini diferite care rulează pe ubuntu și su comandă în aceste mașini sunt situate în locații diferite. Într-un computer este situat în /cos/ (ubuntu 20.04.2), în timp ce în celălalt este situat în /usr/bin/ (ubuntu 20.10). Regula funcționează doar pe mașina unde su este situata in /usr/bin/, chiar dacă modific calea în mod corespunzător. Cum pot instala su în /usr/bin/ în ubuntu 20.04.2?

Regula udev este:

ACTION=="adăugați"\ 
, SUBSYSTEM=="bluetooth"\ 
, ATTR{idVendor}=="hci0"\ 
, ATTR{idProduct}=="3585"\ 
, RUN+="/usr/bin/su root -c 'ratbagctl M720\ Triathlon button 7 action set button 3'"
drapel hr
Dacă ambele sisteme au fost instalate de la zero, ambele ar trebui să aibă `/bin` legat de simbolul `/usr/bin` și ambele folosesc `su` din `util-linux` cred. OTOH dacă oricare a fost actualizat (de la 18.04 de exemplu) este posibil să folosească implementarea lui `su` din pachetul `login`.
drapel pt
da ubuntu 20.04.2 a fost actualizat de la 18.04. Nu sunt sigur cum/de ce ubuntu 20.10 are `su` în /usr/bin.
drapel hr
Se pare că ar putea fi o problemă XY - de ce folosiți `su root` aici, deoarece regulile UDEV probabil rulează ca root oricum (și dacă nu ar fi, `su` ar trebui să ruleze interactiv, pentru a obține root-ul? parola)
drapel pt
vezi comentariul de la nrayamajhee aici https://github.com/libratbag/libratbag/issues/596
drapel hr
Bănuiesc că este o soluție „bună mare” pe care autorul nu prea înțelege de ce funcționează - în loc să încerce să descopere calea absolută corectă către `su` cu speranța că comanda `ratbagctl` se află în ` shell-ul rădăcină. PATH`, aș sugera să dați o cale absolută către `ratbagctl` direct, adică ceva de genul `RUN+=/usr/local/bin/ratbagctl Logitech\ MX\ Anywhere\ 2S dpi set 2400`
drapel pt
nu funcționează așa `ACTION=="add", SUBSYSTEM=="bluetooth", ATTR{idVendor}=="hci0", ATTR{idProduct}=="3585", RUN+="/usr/bin/ratbagctl M720 \ Triathlon button 7 action set button 3"`Îmi amintesc că ultima dată mi-a luat ceva timp pentru ca regula udev să funcționeze (și regula finală care a funcționat este că am postat-o ​​mai sus).
drapel pt
din anumite motive regula udev nu este declanșată. Deci, în acest moment, problema nu este neapărat comanda de execuție (am înlocuit comanda de execuție cu alta care scrie o ștampilă de timp și nici nu funcționează)
drapel hr
OK, deci asigurați-vă că dați calea completă oricărei comenzi care scrie marca temporală - așa cum este menționat în `man udev` *Dacă nu este dată o cale absolută, programul este de așteptat să locuiască în /lib/udev; în caz contrar, trebuie specificată calea absolută.*. Scuze că ați omis ghilimelele de mai sus, aveți dreptate, ar trebui să fie `RUN+="/path/to/command args"`. Verificați unde se află de fapt `ratbagctl` cu `which ratbagctl` și/sau `type -a ratbagctl`.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.