Điểm:0

lệnh su trong /usr/bin

lá cờ pt

tôi có một udev quy tắc chạy một lệnh như nguồn gốc. Tôi có hai máy khác nhau chạy trên Ubuntu và su lệnh trong các máy này được đặt ở các vị trí khác nhau. Trong một máy tính được đặt tại /thùng rác/ (ubuntu 20.04.2), trong khi cái kia nằm ở /usr/bin/ (ubfox 20.10). Quy tắc chỉ hoạt động trên máy nơi su nằm ở /usr/bin/, ngay cả khi tôi sửa đổi đường dẫn một cách thích hợp. Làm thế nào tôi có thể cài đặt su Trong /usr/bin/ trong Ubuntu 20.04.2?

Quy tắc udev là:

ACTION=="thêm"\ 
, HỆ THỐNG PHỤ=="bluetooth"\ 
, ATTR{idVendor}=="hci0"\ 
, ATTR{idProduct}=="3585"\ 
, RUN+="/usr/bin/su root -c 'ratbagctl M720\ Triathlon button 7 action set button 3'"
lá cờ hr
Nếu cả hai hệ thống được cài đặt từ đầu, thì cả hai đều phải có `/bin` được liên kết tượng trưng với `/usr/bin` và tôi nghĩ cả hai đều sử dụng `su` từ `util-linux`. OTOH nếu một trong hai đã được nâng cấp (ví dụ từ 18.04) thì có thể nó đang sử dụng triển khai `su` từ gói `đăng nhập`.
lá cờ pt
vâng, Ubuntu 20.04.2 đã được nâng cấp từ 18.04. Tôi không chắc làm thế nào/tại sao Ubuntu 20.10 lại có `su` trong /usr/bin.
lá cờ hr
Điều này có vẻ như là một vấn đề của XY - tại sao bạn lại sử dụng `su root` ở đây, vì các quy tắc UDEV có lẽ chạy với quyền root (và nếu chúng không chạy, `su` sẽ cần phải chạy tương tác, để có được quyền root mật khẩu mở khóa)
lá cờ pt
xem nhận xét từ nrayamajhee tại đây https://github.com/libratbag/libratbag/issues/596
lá cờ hr
Tôi nghi ngờ đó là một giải pháp "mưa mary" mà tác giả không thực sự hiểu tại sao nó hoạt động - thay vì cố gắng tìm ra đường dẫn tuyệt đối chính xác đến `su` với hy vọng rằng lệnh `ratbagctl` nằm trong trình bao gốc ` PATH`, tôi khuyên bạn nên cung cấp một đường dẫn tuyệt đối trực tiếp đến `ratbagctl`, tức là đại loại như `RUN+=/usr/local/bin/ratbagctl Logitech\ MX\ Anywhere\ 2S dpi set 2400`
lá cờ pt
nó không hoạt động như thế này `ACTION=="add", SUBSYSTEM=="bluetooth", ATTR{idVendor}=="hci0", ATTR{idProduct}=="3585", RUN+="/usr/bin/ratbagctl M720 \ Nút ba môn phối hợp 7 bộ hành động nút 3"`Tôi nhớ rằng lần trước tôi đã mất một lúc để làm cho quy tắc udev hoạt động (và quy tắc cuối cùng hoạt động là tôi đã đăng ở trên).
lá cờ pt
vì lý do nào đó, quy tắc udev không được kích hoạt. Vì vậy, tại thời điểm này, vấn đề không nhất thiết là do lệnh chạy (Tôi đã thay thế lệnh chạy bằng một lệnh khác viết dấu thời gian và nó cũng không hoạt động)
lá cờ hr
OK, vì vậy hãy đảm bảo rằng bạn cũng cung cấp đường dẫn đầy đủ cho bất kỳ lệnh nào ghi dấu thời gian - như đã lưu ý trong `man udev` *Nếu không có đường dẫn tuyệt đối nào được cung cấp, chương trình sẽ nằm trong /lib/udev; nếu không, đường dẫn tuyệt đối phải được chỉ định.*. Xin lỗi vì đã bỏ qua các trích dẫn ở trên, bạn đã đúng, nó phải là `RUN+="/path/to/command args"`. Kiểm tra vị trí thực sự của `ratbagctl` với ` which ratbagctl` và/hoặc `type -a ratbagctl`.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.