Làm thế nào các quy tắc udev được cấu trúc
Đối với các thiết bị rơi vào hệ thống con tty, bạn có thể đặt nhóm của chúng như sau:
SUBSYSTEM=="tty", GROUP="dialout"
Lưu ý rằng, giống như trong lập trình thông thường, ==
là một bài kiểm tra cho sự bình đẳng trong khi =
là một bài tập. Vì vậy, câu lệnh trên có nghĩa là "nếu SUBSYSTEM=="tty"
sau đó gán GROUP="dialout"
. Một câu lệnh có thể có nhiều phép thử, được ghép và ghép với nhau và nhiều phép gán.
Nếu bạn muốn thay đổi quyền đọc-ghi-thực thi, thì hãy gán MODE thay vì NHÓM trong đó MODE tuân theo ký hiệu bát phân Unix thông thường, ví dụ: MODE="0660"
cấp cho chủ sở hữu và quyền đọc-ghi của nhóm. man udev
có tất cả các chi tiết.
Bạn có thể tìm thấy nhiều ví dụ về các quy tắc như vậy trong /lib/udev/rules.d/91-permissions.rules
Cách thêm quy tắc udev vào hệ thống của bạn
Một khi bạn đã giải quyết được những gì bạn muốn quy tắc của mình, nó đủ đơn giản để thêm nó. Trên hệ thống có nguồn gốc từ debian, hãy vào thư mục /etc/udev/rules.d
và tạo một tệp. Các tập tin được chạy theo thứ tự sắp xếp. Vì vậy, để làm cho tệp quy tắc của bạn cuối cùng được đọc, ghi đè lên các quy tắc trước đó, hãy thử một tên như thế nào 99-instruments.rules
. Sau đó đặt quy tắc của bạn trong tệp đó, mỗi dòng trên một dòng. (Nếu cần bởi, các dòng có thể được mở rộng bằng cách đặt dấu gạch chéo ngược ở cuối dòng, giống như trong shell.)
Vì vậy, nếu bạn muốn thay đổi nhóm và quyền trên các thiết bị tty, tệp của bạn /etc/udev/rules.d/99-instruments.rules
có thể bao gồm một dòng duy nhất:
SUBSYSTEM=="tty", GROUP="dialout", MODE="0660"
Để đảm bảo rằng tệp mới của bạn có các quyền thông thường:
sudo chown root:root /etc/udev/rules.d/99-instruments.rules
sudo chmod 0644 /etc/udev/rules.d/99-instruments.rules
Sau khi bạn đã tạo tệp của mình, udevd có thể tự động đọc nó. Nếu không, bạn có thể buộc nó đọc lại các tệp của nó bằng:
udevadm control --reload-rules
Tìm hiểu thêm về cách udev phân loại thiết bị
Nếu bạn muốn có được quyền kiểm soát tốt hơn đối với thiết bị nào đáp ứng quy tắc nào, bạn có thể tìm hiểu thêm về cách udev nhìn thấy thiết bị của mình bằng cách đọc / sys /. Tại thời điểm này, tôi không có quyền truy cập vào một máy có ttyUSB hoặc HPIB, vì vậy hãy làm ví dụ về sda đĩa. Chạy:
udevadm info --attribute-walk --path=/sys/block/sda
Điều này cung cấp rất nhiều thông tin trông giống như:
. . . .
KERNEL=="sda"
SUBSYSTEM=="block"
DRIVER==""
ATTR{range}=="16"
ATTR{ext_range}=="256"
ATTR{removable}=="0"
. . . .
Các dòng này đều ở dạng thích hợp để sử dụng như if
các mệnh đề trong các quy tắc. Vì vậy, ví dụ, để thay đổi quyền sở hữu trên tất cả các thiết bị khối được đánh dấu là không thể tháo rời, chúng tôi sẽ sử dụng quy tắc:
SUBSYSTEM=="block", ATTR{removable}=="0", OWNER=john1024
Với thông tin từ udevadm
, người ta có thể phát triển các quy tắc có thể nhắm mục tiêu cụ thể các thiết bị quan tâm.