Score:0

คำสั่ง su ใน /usr/bin

ธง pt

ฉันมี อูเดฟ กฎที่เรียกใช้คำสั่งเป็น ราก. ฉันมีสองเครื่องที่แตกต่างกันที่ทำงานบน Ubuntu และ สุ คำสั่งในเครื่องเหล่านี้ตั้งอยู่ในตำแหน่งที่แตกต่างกัน ในคอมพิวเตอร์เครื่องหนึ่งตั้งอยู่ใน /ถังขยะ/ (อูบุนตู 20.04.2) ในขณะที่อีกอันตั้งอยู่ใน /usr/bin/ (อูบุนตู 20.10) กฎนี้ใช้ได้เฉพาะกับเครื่องที่ สุ ตั้งอยู่ใน /usr/bin/แม้ว่าฉันจะแก้ไขเส้นทางอย่างเหมาะสม ฉันจะติดตั้งได้อย่างไร สุ ใน /usr/bin/ ใน Ubuntu 20.04.2?

กฎ udev คือ:

ACTION=="เพิ่ม"\ 
, ระบบย่อย = "บลูทูธ"\ 
, ATTR{idVendor}=="hci0"\ 
, ATTR{idProduct}=="3585"\ 
, RUN+="/usr/bin/su root -c 'ratbagctl M720\ ปุ่มไตรกีฬา 7 ปุ่มชุดปฏิบัติการ 3'"
hr flag
หากทั้งสองระบบได้รับการติดตั้งตั้งแต่เริ่มต้น ระบบทั้งสองควรมี `/bin` ที่เชื่อมโยงกับ `/usr/bin` และทั้งคู่ใช้ `su` จาก `util-linux` ฉันคิดว่า OTOH หากมีการอัปเกรดอย่างใดอย่างหนึ่ง (เช่น จาก 18.04) อาจเป็นไปได้ว่ากำลังใช้งาน `su` จากแพ็คเกจ `login`
pt flag
ใช่ ubuntu 20.04.2 ได้รับการอัปเกรดจาก 18.04 ฉันไม่แน่ใจว่าทำไม Ubuntu 20.10 ถึงมี `su` ใน /usr/bin
hr flag
ดูเหมือนว่าอาจเป็นปัญหา XY ทำไมคุณถึงใช้ `su root` เลยที่นี่ เนื่องจากกฎ UDEV สันนิษฐานว่าทำงานเป็นรูท แต่อย่างใด (และหากไม่เป็นเช่นนั้น `su` จะต้องทำงานแบบโต้ตอบเพื่อรับรูท รหัสผ่าน)
pt flag
ดูความคิดเห็นจาก nrayamajhee ที่นี่ https://github.com/libratbag/libratbag/issues/596
hr flag
ฉันสงสัยว่านั่นเป็นวิธีแก้ปัญหา "hail mary" ที่ผู้เขียนไม่เข้าใจว่าทำไมมันถึงได้ผล - แทนที่จะพยายามหาเส้นทางที่สมบูรณ์ที่ถูกต้องไปยัง `su` ด้วยความหวังว่าคำสั่ง `ratbagctl` อยู่ในรูตเชลล์ของ ` PATH` ฉันขอแนะนำให้ระบุเส้นทางที่แน่นอนไปยัง `ratbagctl` โดยตรง เช่น `RUN+=/usr/local/bin/ratbagctl Logitech\ MX\ Anywhere\ 2S dpi set 2400`
pt flag
มันไม่ทำงานเช่นนี้ `ACTION=="add", SUBSYSTEM=="bluetooth", ATTR{idVendor}=="hci0", ATTR{idProduct}=="3585", RUN+="/usr/bin/ratbagctl M720 \ ปุ่มไตรกีฬา 7 ปุ่มชุดปฏิบัติการ 3"` ฉันจำได้ว่าครั้งที่แล้วฉันใช้เวลาสักครู่เพื่อให้กฎ udev ทำงาน (และกฎสุดท้ายที่ใช้ได้คือฉันโพสต์ไว้ด้านบน)
pt flag
ด้วยเหตุผลบางอย่าง กฎ udev ไม่ถูกเรียกใช้ ดังนั้น ณ จุดนี้ ปัญหาไม่จำเป็นต้องเป็นคำสั่ง run (ฉันได้แทนที่คำสั่ง run สำหรับคำสั่งอื่นที่เขียนการประทับเวลา และมันก็ไม่ทำงานเช่นกัน)
hr flag
ตกลง ตรวจสอบให้แน่ใจว่าคุณได้ระบุเส้นทางแบบเต็มให้กับคำสั่งใดๆ ที่เขียนการประทับเวลา - ดังที่ระบุไว้ใน `man udev` *หากไม่ได้ระบุเส้นทางที่แน่นอน โปรแกรมคาดว่าจะอยู่ใน /lib/udev; มิฉะนั้นจะต้องระบุเส้นทางที่แน่นอน*. ขออภัยที่ไม่ได้ใส่เครื่องหมายคำพูดด้านบน คุณถูกต้องแล้ว ควรเป็น `RUN+="/path/to/command args"` ตรวจสอบว่า `ratbagctl` อยู่ที่ใดจริง ๆ ด้วย ` which ratbagctl` และ/หรือ `type -a ratbagctl`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา