Thay đổi quyền trên cổng nối tiếp


54

Tôi đang sử dụng Arduino IDE trong Ubuntu và đang gặp vấn đề với cổng nối tiếp. Nó đã hoạt động trong quá khứ, nhưng vì những lý do có thể không cần thiết, tôi cảm thấy cần phải thay đổi quyền sở hữu một số tệp từ quyền sở hữu gốc sang quyền sở hữu người dùng của tôi.

Điều này làm cho IDE hoạt động chính xác, nhưng tôi đã mất khả năng sử dụng cổng nối tiếp chính xác. Trong thư mục dev, cổng tôi cần được liệt kê là quyền 166. Một người nào đó (không còn trong khu vực giúp tôi) đã trao đổi các quyền thành 666, khiến tất cả đều hoạt động tốt.

Tuy nhiên, nó đã quay trở lại ngay sau khi tôi khởi động lại máy tính của mình và nếu bây giờ tôi thử sử dụng lệnh:

sudo chmod 666 ttyACM0

chẳng có gì xảy ra. Không có thông báo lỗi, nhưng cũng không có quyền thay đổi.

Làm cách nào tôi có thể thay đổi nó và làm cách nào để thay đổi vĩnh viễn.

Tôi xin lỗi nếu câu hỏi này quá đơn giản hoặc không rõ ràng, tôi là một người yêu thích Ubuntu và tôi sẽ không phản hồi!


1
sudo chmod 666 / dev / ttyACM0 Đây là đề xuất duy nhất trên trang này hoạt động trên môi trường trực tiếp 14.04 beta2 của tôi. Cảm ơn!

Câu trả lời:


76

Vấn đề với các quyền cho /dev/ttyACM0có thể được giải quyết lâu dài bằng cách thêm chính bạn vào dialoutnhóm. Bạn sẽ phải đăng xuất và sau đó đăng nhập lại trước khi thay đổi nhóm được nhận ra.

Bạn có thể làm điều này với sudo usermod -a -G dialout $USER


Tôi đã học được điều này khi Arduino IDE yêu cầu cung cấp cho root để thêm chính nó vào "nhóm Tweetsout". Bây giờ tôi biết nó là gì.
Ufoguy

Tôi mới mua Bộ chuyển đổi USB-CEC Pulse-Eight để sử dụng với TV mới của tôi và thấy rằng ban đầu nó không hoạt động với Kodi trong Ubuntu. Sau khi kiểm tra nhật ký sự cố và googling thông báo lỗi "ERROR: CecLogMessage - lỗi mở cổng nối tiếp '/ dev / ttyACM0': Quyền bị từ chối", kết quả là trang này xuất hiện. Nhờ có bạn (và Don Kirkby, bên dưới - cũng hoạt động), tôi đã có thể khắc phục vấn đề ngay lập tức.
Giàu.T.

Ngoài ra, câu trả lời từ "user247020" đã cho tôi một giải pháp khác: Mở công cụ GUI "Người dùng và nhóm" và biến mình thành "Quản trị viên". Điều này sẽ thêm bạn vào nhóm "dialout" (nghĩa là "Sử dụng Modems"), trong số những người khác.
Giàu.T.

usermod -a -G dialout pi hoạt động ổn, sau khi sudo chgrp dialout / dev / ttyS0 và hoạt động tốt nhưng khi tôi khởi động lại thì tất cả cấu hình bị mất. Tôi đang trên mâm xôi pi 3
J261

Thêm bất kỳ lệnh nào bạn cần làm lại vào một kịch bản khởi động. Vì vậy, bash hoặc / etc / profile hoặc init.
Rinzwind

20

Tôi không thể làm cho đề xuất của Rinzwind hoạt động, vì nó phàn nàn rằng tài khoản người dùng đã tồn tại. Thay vào đó, tôi đã sử dụng lệnh này để thêm người dùng hiện tại ( terrik) vào một nhóm hiện có ( dialout), như được mô tả trên Ubuntu Help Wiki .

sudo adduser terrik dialout

Cũng hữu ích là lệnh này để liệt kê các nhóm hiện tại của bạn, mặc dù như Rinzwind nói, bạn phải đăng xuất và đăng nhập trước khi cổng nối tiếp bắt đầu cho phép bạn vào.

groups terrik

10

Tôi không thể làm cho câu trả lời của Terrik hoạt động, nhưng tôi có thể nếu tôi thực hiện điều chỉnh nhỏ này cho đường dẫn ttyACM0.

sudo chmod 666 /dev/ttyACM0

Sẽ đăng như một bình luận nhưng tôi chưa có đặc quyền cho điều đó ...


1
Các quyền dường như được đặt lại khi rút và cắm lại Arduino.
user1063287

không hoạt động. :(
Freddy

nó hoạt động, là tốt. nhưng yêu cầu quy tắc udev để cấp phép lại cho việc cắm lại
pylover

Tôi đã thử sudo chmod 666 /dev/ttyACM0và nó không hoạt động khi bắt đầu lại. Có ai có giải pháp không?
dùng1063287

Hmm peepz này không hoạt động .... Thêm lệnh vào một kịch bản khởi động. (/ Dev được tạo lại khi khởi động, do đó bạn cần làm lại lệnh này mỗi lần khởi động)
Rinzwind

10

Một khả năng khác là tạo một tệp quy tắc trong /etc/udev/rules.d/thư mục. Tôi gặp vấn đề tương tự và tôi đã tạo 50-myusb.rulestập tin trong thư mục trên với nội dung này:

KERNEL=="ttyACM[0-9]*",MODE="0666"

Lưu ý rằng điều này sẽ cung cấp cho bất kỳ thiết bị nào được kết nối với quyền đọc / ghi ổ cắm ttyACM. Nếu bạn chỉ cần thiết bị cụ thể để có quyền đọc / ghi, bạn cũng phải kiểm tra idVendoridProduct. Bạn có thể tìm thấy những thứ đó bằng cách chạy lsusblệnh hai lần, một lần mà không có thiết bị của bạn được kết nối và một lần khi nó được kết nối, sau đó quan sát dòng bổ sung trong đầu ra. Ở đó bạn sẽ thấy một cái gì đó như Bus 003 Device 005: ID ffff:0005. Trong trường hợp này idVendor = ffffidProduct = 0005. Bạn sẽ khác. Hơn bạn sửa đổi tệp quy tắc thành:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

Bây giờ chỉ có thiết bị này được quyền. Đọc này để biết thêm về cách viết quy tắc udev.


2

Hãy thử truy cập vào Hệ thống / Người dùng và Nhóm và chọn hộp trên tên người dùng của bạn trong Nhóm TTY.


[Errno 13] Permission denied: '/dev/ttyACM0'. Cũng như ttynhóm, người dùng cũng trong dialoutnhóm. Bạc hà Linux 17.1.
dùng1063287

1
@ user1063287 Hãy thửsudo chmod a+rw /dev/ttyACM0
Vladimir S.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.