Score:1

เปิดพอร์ตอนุกรมโดยไม่มีสิทธิ์รูทบน Ubuntu (กฎ udev)

ธง um

ฉันทำตามบทช่วยสอนนี้เพื่อตั้งค่าการเข้าถึงพอร์ตอนุกรมของกล้อง Flir Boson จาก userspace:

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

กล้องติดตั้งเป็น /dev/ttyACM0 และในบทช่วยสอนมี .กฎ ไฟล์ที่คุณควรดาวน์โหลดและคัดลอกไปที่: /etc/udev/rules.d/. แล้วรีบูต

นี่คือเนื้อหาของไฟล์:

ACTION=="เพิ่ม", SUBSYSTEM="usb", ATTRS{idVendor}=="09cb", OWNER="nvidia", MODE="0777", GROUP="nvidia"

แต่มันไม่ได้ผลสำหรับฉัน แม้จะรีบูทแล้ว แอปพลิเคชันของฉันก็ยังต้องการ ซูโด เพื่อให้สามารถสื่อสารกับกล้องได้

สำหรับฉันแล้ว ดูเหมือนว่าบทช่วยสอนจะถือว่าคุณมีชื่อผู้ใช้บางอย่าง ซึ่งในกรณีนี้อาจเป็น "nvidia" ดังนั้นฉันจึงพยายามเปลี่ยน OWNER เป็นชื่อผู้ใช้จริงของฉัน แต่นั่นก็ไม่ได้ผลเช่นกัน

ส่วนหนึ่งของปัญหาอาจเป็นเพราะฉันไม่เข้าใจว่าฟิลด์ OWNER และ GROUP มีไว้เพื่ออะไร ฉันแค่คาดเดาเท่านั้น แน่นอนว่าฉันได้ลองใช้ Google แล้ว แต่ด้วยเหตุผลบางอย่าง เห็นได้ชัดว่าฉันไม่สามารถเรียบเรียงข้อความค้นหาได้อย่างถูกต้อง

นี่คือ nVidia Jetson Xavier NX พร้อม JetpackSDK 4.6 ซึ่งอันที่จริงแล้วคือ Ubuntu 18.04

ขอบคุณ!

ru flag
รายการ 'Owner' และ 'Group' มีไว้เพื่อระบุผู้ใช้ในระบบที่เป็นเจ้าของอุปกรณ์ คุณไม่สามารถเข้าถึงกล้องได้ ใช่หรือไม่ หากไม่มีกฎ `udev` ให้รีบูตและเชื่อมต่อกล้อง อะไรจะเกิดขึ้น `ls -al /dev/ttyACM0` แสดงหรือไม่ วิธีนี้จะช่วยให้เราระบุกลุ่มที่จะเพิ่มผู้ใช้ของคุณเพื่อเข้าถึงอุปกรณ์
um flag
สวัสดี มันจะพิมพ์ข้อความต่อไปนี้: `crw-rw---- 1 root dialout 166, 0 pro 2 17:58 /dev/ttyACM0` นอกจากนี้ ฉันไม่แน่ใจว่าคำถามที่คุณหมายถึงหมายความว่าอย่างไร ถ้าฉันทำได้ เพื่อเข้าถึงกล้อง ฟีดกล้องทำงานได้ดี แต่นั่นไม่ใช่สิ่งที่ ttyACM0 ใช้ เป็นพอร์ตอนุกรมที่สามารถใช้เพื่อส่งคำสั่งควบคุมบางอย่าง เช่น การเปลี่ยนโหมดสี ความสว่าง ช่วงเวลาโฟกัสอัตโนมัติ และอะไรทำนองนั้น
ru flag
ไม่สำคัญว่ามันจะเป็นอะไร สิ่งสำคัญคือกลุ่ม 'dialout' และง่ายมากที่จะเพิ่มตัวเองในกลุ่มนั้น
Score:1
ธง ru

ไฟล์กฎของคุณเปลี่ยนผู้ใช้และกลุ่มเป็นผู้ใช้และกลุ่มที่ไม่มีอยู่ เอ็นวิเดีย - สิ่งนี้ไม่ได้แก้ปัญหาของคุณ อันที่จริง มันจะไม่ทำงานเพราะผู้ใช้และกลุ่ม เอ็นวิเดีย ไม่ใช่กลุ่มเริ่มต้น และผู้ใช้ของคุณไม่ได้อยู่ในกลุ่มนั้น นอกจากนี้ คุณไม่ควรตั้งค่าซ็อกเก็ตของคุณเป็น 777 สิทธิ์ - ด้วยเหตุผลเดียวกับที่คุณไม่ให้ไฟล์ (ดู โพสต์นี้ ถึงเหตุที่ไม่ควรให้ 777 ถึง /var/www สำหรับข้อกังวลด้านความปลอดภัยที่คล้ายกัน) มีการควบคุมการเข้าถึงอุปกรณ์เพิ่มเติมซึ่งเป็นส่วนหนึ่งของกฎการแยก AppArmor สำหรับแอปพลิเคชันต่างๆ เช่นกัน ซึ่งคุณไม่สามารถเอาชนะได้ในฐานะผู้ใช้มาตรฐาน ซึ่งเป็นเหตุผลว่าทำไม โทรออก กลุ่มมีอยู่เพื่อ ให้ เข้าถึงอุปกรณ์เหล่านั้น

บทช่วยสอน nVidia นั้นน่าจะใช้ได้กับระบบอื่นหรือล้าสมัย - คุณไม่จำเป็นต้องทำ ใช้ กฎของพวกเขาแทนที่จะให้สิทธิ์การเข้าถึงด้วยตัวคุณเอง โทรออก.

เมื่อทำงานกับสิทธิ์ระดับผู้ใช้ อุปกรณ์พิเศษ เช่น การสื่อสารผ่านพอร์ตอนุกรมต้องการสิทธิ์พิเศษ เหล่านี้ได้รับอนุญาตจาก โทรออก กลุ่ม (สำหรับอุปกรณ์ เช่น โมเด็ม dialup, USB Serial Adapters เป็นต้น)

เพียงเพิ่มกลุ่มของคุณไปที่ โทรออก จัดกลุ่ม รีบูต และคุณจะสามารถเข้าถึงได้ ใช้คำสั่งนี้ในบรรทัดคำสั่ง:

sudo usermod -a -G โทรออก $USER

แทนที่ $USER ด้วยชื่อผู้ใช้ของคุณบนคอมพิวเตอร์ จากนั้นเมื่อคุณรีบูตและล็อกออนเข้าสู่เซสชันของคุณอีกครั้ง คุณจะสามารถเข้าถึงอุปกรณ์นั้นและอุปกรณ์อื่นๆ ได้ ต้องใช้พอร์ตสื่อสารแบบอนุกรม โทรออก สิทธิ์ซึ่งง่ายต่อการใส่ตัวเองเข้าไป

ซึ่งควรเป็นทั้งหมดที่คุณหรือผู้ใช้รายอื่นต้องทำเพื่อเข้าถึงอุปกรณ์ คุณควรปล่อยการอนุญาตเริ่มต้นไว้ตามลำพัง เว้นแต่คุณจะมีกรณีการใช้งานที่เฉพาะเจาะจงมาก นั่นคือ ไม่ ระบุไว้ในคำถามของคุณ

um flag
สิ่งนี้ช่วยแก้ปัญหาได้อย่างแท้จริง ฉันลองสิ่งนี้ก่อนที่จะเขียนที่นี่ แต่ปัญหาคือเมื่อใช้ร่วมกับไฟล์ `.rules` มันจะไม่ทำงาน คำอธิบายใด ๆ สำหรับสิ่งนั้น? ทำไมบทช่วยสอนนั้นถึงกังวลกับ `.rules` เหล่านั้นล่ะ?
ru flag
ไฟล์ @Aros the Rules กำหนดกฎทางเลือกสำหรับการตั้งค่าการอนุญาตไฟล์บนอุปกรณ์ ด้วยการเพิ่มกฎ คุณเปลี่ยนผู้ใช้และกลุ่มเป็น `nvidia` ซึ่ง (1) ไม่ใช่กลุ่มเริ่มต้นและ (2) ผู้ใช้ของคุณไม่ได้อยู่ ผู้ใช้และกลุ่มต้องเป็นผู้ใช้และกลุ่มที่มี * เข้าถึง * ไปยังอุปกรณ์ สิทธิ์เริ่มต้นคือการอ่าน/เขียนสำหรับไฟล์ซ็อกเก็ตอุปกรณ์สำหรับเจ้าของและกลุ่มของไฟล์ตัวแทน - คุณสามารถกำหนดให้เป็นผู้ใช้และกลุ่มของคุณ หรือเพียงปล่อยให้เป็นค่าเริ่มต้นและกำหนดหมายเลขโทรออกเอง หากคุณใช้ไฟล์กฎ มันจะ *เปลี่ยน* ค่าเริ่มต้น
ru flag
ซึ่งเป็น *สาเหตุที่* ฉันขอให้คุณ `ls` โดยไม่มีไฟล์กฎ เพราะคุณไม่จำเป็นต้อง *ต้อง* แก้ไขการอนุญาตในไฟล์อุปกรณ์ตัวแทน คุณเพียงแค่ต้องให้สิทธิ์การเข้าถึงแก่ตัวเอง เหมือนกันสำหรับผู้ใช้รายอื่นในระบบแม้ว่าจะเป็นผู้ใช้ระบบก็ตาม คุณควร **ในกรณีที่หายากมาก** ต้องมีกฎที่กำหนดเองเท่านั้น
um flag
ฉลาดหลักแหลม. ขอบคุณ!

โพสต์คำตอบ

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