Đọc / ghi vào cổng nối tiếp mà không cần root?


31

Tôi đang viết một ứng dụng để đọc / ghi vào / từ một cổng nối tiếp trong Fedora14 và nó hoạt động rất tốt khi tôi chạy nó dưới quyền root. Nhưng khi tôi chạy nó như một người dùng bình thường, tôi không thể có được các đặc quyền cần thiết để truy cập thiết bị (/ dev / ttySx). Điều đó thật tồi tệ bởi vì bây giờ tôi thực sự không thể gỡ lỗi thứ chết tiệt đó bằng cách sử dụng Eclipse.

Tôi đã thử chạy Eclipse với sudo nhưng nó làm hỏng không gian làm việc của tôi và tôi thậm chí không thể mở dự án. Vì vậy, tôi muốn biết liệu có thể hạ thấp các yêu cầu truy cập để ghi vào / dev / ttySx để bất kỳ người dùng bình thường nào cũng có thể truy cập được không. Điều này có thể không?

Câu trả lời:


46

Quyền truy cập vào một cổng nối tiếp được xác định bởi các quyền của tệp thiết bị (ví dụ /dev/ttyS0). Vì vậy, tất cả những gì bạn cần làm là sắp xếp để thiết bị thuộc sở hữu của bạn hoặc (tốt hơn) đặt bạn vào nhóm sở hữu thiết bị hoặc (nếu Fedora hỗ trợ thiết bị mà tôi nghĩ là nó) sắp xếp cho thiết bị thuộc về người dùng đã đăng nhập trên bảng điều khiển.

Ví dụ: trên hệ thống của tôi (không phải Fedora), /dev/ttyS0thuộc sở hữu của người dùng rootvà nhóm dialout, vì vậy để có thể truy cập thiết bị nối tiếp, tôi sẽ tự thêm mình vào dialoutnhóm:

usermod -a -G dialout MY_USER_NAME

1
Tôi sẽ chấp nhận điều này vì nó đưa tôi đi đúng hướng. Đối với Fedora, lệnh usermod được sử dụng sau khi người dùng được tạo. Nhóm trong câu hỏi cũng là dialout cho tôi: sudo usermod -a -G dialout <username>. Chúc mừng.
iegod

5
Lưu ý rằng bạn có thể cần phải đăng xuất và đăng nhập để xuất hiện trong nhóm mới
Jan čpaček

1
Theo nhu cầu phổ biến: sudo usermod -a -G dialout $USER:-)
Ciro Santilli 心 心

0

Nhiều bản phân phối sử dụng tư cách thành viên nhóm để cho phép truy cập vào các cổng nối tiếp. Mặc dù vậy, tôi không biết chi tiết về Fedora.


0

Tôi nghĩ rằng bạn có thể tự thêm mình vào tệp sudoers, điều này sẽ cho phép bạn chỉ định một nhóm lệnh dưới dạng bí danh lệnh mà bạn có thể thực thi mà không cần mật khẩu. Bạn có thể tìm thấy một hướng dẫn tuyệt vời về tệp sudoers trong tài liệu Ubuntu .

Sau đó, bạn có thể chạy nhật thực một cách bình thường và nó có thể thực thi các lệnh cụ thể đó mà không cần quyền root.


-2

tôi có vấn đề này cũng trở lại trong ngày, ngoài việc thêm người dùng đến một dialout nhóm bạn cũng cần phải cấp quyền cho người dùng truy cập / dev. chỉ cần su -> nhập mật khẩu gốc -> chmod -R 777 / dev -R, có nghĩa là chế độ đệ quy, mọi thứ trong thư mục đó sẽ có cùng quyền.

Vấn đề là ở đây, bạn cần phải làm điều đó mỗi khi bạn khởi động lại máy tính hoặc cắm và rút thiết bị của mình hả !!!


3
chmod -R 777 /devlà một ý tưởng rất xấu
RalfFriedl

Yaah đồng ý, nếu có bất kỳ đề nghị nào khác cho việc này, điều đó sẽ rất tuyệt
Tunu Yolim Ngajilo

Tôi tự hỏi nếu bạn cần phải đăng xuất và đăng nhập lại, như trong nhận xét về câu trả lời được chấp nhận? Điều này thường làm mọi người đi lên.
nguồnjedi

Cung cấp quyền truy cập miễn phí cho tất cả người dùng vào mọi thứ bên trong / dev / là cực kỳ không an toàn để làm. Xin đừng làm điều này.
ngày
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.