Điểm:1

Mở cổng nối tiếp không có quyền root trên Ubuntu (quy tắc udev)

lá cờ um

Tôi đã làm theo hướng dẫn này để thiết lập quyền truy cập vào cổng nối tiếp máy ảnh Flir Boson từ không gian người dùng:

https://www.forecr.io/blogs/connectivity/how-to-integrate-flir-boson-thermal-camera-to-nvidia-jetson-modules

Máy ảnh cài đặt như /dev/ttyACM0 và trong hướng dẫn có một .quy tắc tệp bạn phải tải xuống và sao chép vào: /etc/udev/rules.d/. Và sau đó khởi động lại.

Đây là nội dung của tập tin:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="09cb", OWNER="nvidia", MODE="0777", GROUP="nvidia"

Nhưng nó không làm việc cho tôi. Ngay cả sau khi khởi động lại, ứng dụng của tôi vẫn yêu cầu sudo để có thể giao tiếp với camera.

Đối với tôi, bây giờ có vẻ như hướng dẫn giả định rằng bạn có một tên người dùng nhất định, trong trường hợp này có thể là "nvidia". Vì vậy, tôi cũng đã cố gắng thay đổi CHỦ SỞ HỮU thành tên người dùng thực của mình, nhưng điều đó cũng không giúp được gì.

Một phần của vấn đề có thể là do tôi không thực sự hiểu chính xác trường OWNER và GROUP dùng để làm gì, tôi chỉ đoán thôi. Tất nhiên tôi đã cố gắng tìm kiếm điều đó trên Google, nhưng vì lý do nào đó, rõ ràng là tôi không thể diễn đạt chính xác cụm từ truy vấn.

Đây là nVidia Jetson Xavier NX với JetpackSDK 4.6, thực tế là Ubuntu 18.04.

Cảm ơn!

lá cờ ru
Các mục 'Chủ sở hữu" và "Nhóm" là để xác định người dùng trên hệ thống sở hữu thiết bị. Bạn không thể truy cập máy ảnh đúng không? Nếu không có các quy tắc `udev`, hãy khởi động lại và kết nối máy ảnh. Điều gì sẽ xảy ra? `ls -al /dev/ttyACM0` show? Điều này sẽ giúp chúng tôi ID các nhóm để thêm người dùng của bạn vào nhằm truy cập thiết bị.
lá cờ um
Xin chào, nó sẽ in ra thông tin sau: `crw-rw---- 1 root dialout 166, 0 pro 2 17:58 /dev/ttyACM0` Ngoài ra, tôi không chắc ý của bạn chính xác là gì nếu tôi có thể để truy cập máy ảnh. Nguồn cấp dữ liệu máy ảnh hoạt động tốt, nhưng đó không phải là mục đích của ttyACM0. Đó là một cổng nối tiếp có thể được sử dụng để gửi một số lệnh điều khiển, chẳng hạn như thay đổi chế độ màu, độ sáng, khoảng thời gian lấy nét tự động và những thứ tương tự.
lá cờ ru
không quan trọng nó là gì, điều quan trọng là nhóm 'quay số' đó. Và thật dễ dàng để thêm bạn vào nhóm đó.
Điểm:1
lá cờ ru

Tệp quy tắc của bạn thay đổi người dùng và nhóm thành người dùng và nhóm không tồn tại nvidia - điều này sẽ không giải quyết được vấn đề của bạn trên thực tế, nó sẽ không hoạt động vì người dùng và nhóm nvidia không phải là nhóm mặc định và người dùng của bạn không ở trong đó. Bạn cũng không nên đặt ổ cắm của mình thành 777 quyền - vì lý do tương tự mà bạn không cấp quyền cho tệp (xem bài này về lý do tại sao bạn không nên cho 777 đến /var/www đối với các vấn đề bảo mật tương tự). Ngoài ra còn có các biện pháp kiểm soát truy cập bổ sung đối với các thiết bị như một phần của quy tắc cách ly AppArmor cho các ứng dụng khác nhau mà bạn không thể vượt qua với tư cách là người dùng tiêu chuẩn. Đó là lý do tại sao mặt ngoài nhóm tồn tại để cho truy cập vào các thiết bị đó.

Hướng dẫn nVidia có thể dành cho một số hệ thống khác hoặc đã lỗi thời - bạn không cần sử dụng quy tắc của họ, thay vào đó chỉ cấp cho bạn quyền truy cập với mặt ngoài.

Khi làm việc với các đặc quyền cấp người dùng, các thiết bị đặc biệt như giao tiếp cổng nối tiếp yêu cầu các đặc quyền bổ sung. Những thứ này được cấp bởi mặt ngoài nhóm (dành cho các thiết bị như modem quay số, Bộ điều hợp nối tiếp USB, v.v.)

Chỉ cần thêm nhóm của bạn vào mặt ngoài nhóm, khởi động lại và bạn sẽ có quyền truy cập. Sử dụng lệnh này trên dòng lệnh:

sudo usermod -a -G dialout $USER

Thay thế $USER bằng tên người dùng của bạn trên máy tính, thì khi bạn khởi động lại và đăng nhập lại vào phiên của mình, bạn sẽ có quyền truy cập vào thiết bị đó và các thiết bị khác. Cổng giao tiếp nối tiếp yêu cầu mặt ngoài quyền, rất dễ đưa bạn vào.

Đó phải là tất cả những gì bạn hoặc bất kỳ người dùng nào khác cần làm để truy cập thiết bị. Bạn nên để nguyên các quyền mặc định, trừ khi bạn có một số trường hợp sử dụng rất cụ thể đó là không phải được chỉ định trong câu hỏi của bạn.

lá cờ um
Điều này thực sự giải quyết được vấn đề. Tôi đã thử điều này ngay cả trước khi viết ở đây, nhưng vấn đề là khi kết hợp với tệp `.rules` đó, nó sẽ không hoạt động. Bất kỳ lời giải thích cho điều đó? Tại sao hướng dẫn đó lại bận tâm với những `.rules` đó?
lá cờ ru
@Aros tệp Quy tắc đưa ra các quy tắc thay thế để thiết lập quyền đối với tệp trên thiết bị. Bằng cách thêm quy tắc, bạn đã thay đổi người dùng và nhóm thành `nvidia` mà (1) không phải là nhóm mặc định và (2) người dùng của bạn không có trong đó. Người dùng và nhóm phải là người dùng và nhóm có * truy cập* vào thiết bị. Các quyền mặc định được đọc/ghi cho tệp ổ cắm thiết bị cho chủ sở hữu và nhóm của tệp đại diện - bạn có thể đặt nó cho người dùng và nhóm của mình hoặc chỉ cần để mặc định và tự quay số. Nếu bạn sử dụng tệp quy tắc, nó sẽ *thay đổi* giá trị mặc định.
lá cờ ru
Đó là *tại sao* tôi yêu cầu bạn `ls` mà không có tệp quy tắc, bởi vì bạn không *cần* thay đổi quyền trên tệp thiết bị đại diện - bạn chỉ cần cấp cho mình quyền truy cập. Tương tự cho bất kỳ người dùng nào khác trên hệ thống ngay cả khi đó là người dùng hệ thống. Bạn chỉ nên **trong những trường hợp cực kỳ hiếm hoi** phải có quy tắc tùy chỉnh.
lá cờ um
Rực rỡ. Cảm ơn bạn!

Đă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.