我正在嘗試與 Ubuntu 12.04 中的 Arduino 進行通訊。當插入USB線時,arduino的串列埠為/dev/ttyUSB0。當我嘗試使用連接到它時莫塞裡亞爾,我收到「無法開啟裝置 /dev/ttyUSB0」錯誤,但啟動時卻沒有莫塞裡亞爾使用須藤。我必須配置什麼才能使串行設備作為普通非 root 使用者存取?
答案1
您有多種選擇:
自動ACL分配
您很可能在 Ubuntu 中執行 systemd-logind 或 ConsoleKit,它們可以根據目前在控制台登入的使用者帳戶自動在裝置節點上設定 ACL。這些 ACL 授予通常權限之外的存取權限,並且可以使用 來查看getfacl
。
要使用它,請將以下內容新增至/etc/udev/rules.d/60-extra-acl.rules
1:
KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess"
(1是的,建立該檔案。預設情況下該檔案不存在;整個目錄用於管理員自訂。)
基於群組的訪問
tty 設備通常可由特定的設備讀取/寫入團體例如“dialout”或“uucp”。將您自己新增至該群組以獲得存取權限全部串口:
# gpasswd -a YourUsername dialout
不要忘記登出並再次登錄,以便應用程式群組變更。
權限或所有權變更
與上面類似的 udev 規則也可用於設定「主」擁有者和群組以及權限(這就是首先設定預設群組的方式)。例如:
KERNEL=="ttyUSB[0-9]*", OWNER="YourUsername"
or: KERNEL=="ttyUSB[0-9]*", GROUP="users", MODE="0660"
or: KERNEL=="ttyUSB[0-9]*", MODE="0666"
您可以指派給 OWNER、GROUP 和 MODE 參數。
臨時手動更改
要做一個一度改變,只需像平常一樣使用chmod
和/或。chown
# chown YourUsername /dev/ttyUSB0
or: # chmod a+rw /dev/ttyUSB0