Khi nhân Linux phát hiện một thiết bị mới, nó sẽ gửi một thông báo tới udev . Công việc của udev là làm cho thiết bị mới có thể tiếp cận được với đất của người dùng. Đối với nhiều thiết bị, tất cả udev cần làm là tạo các mục trong /dev
. Đối với các thiết bị khối, điều này cho phép thiết bị được gắn kết. Đối với các thiết bị ký tự như cổng nối tiếp và cổng âm thanh, điều này cho phép các ứng dụng chuyên dụng sử dụng thiết bị. Đối với giao diện mạng, udev có thể đặt tên. Đối với bàn phím, udev cũng có thể xác định các scancodes bổ sung. Nếu udev không tạo mục nhập thiết bị, điều này thực sự khiến thiết bị không được sử dụng.
Udev có thể được kiểm soát bởi các quy tắc ; quy tắc mặc định có mặt /lib/udev/udev.d
và chúng có thể bị quản trị viên ghi đè thông qua các tệp trong /etc/udev/udev.d
. Mỗi quy tắc udev có các điều kiện của hình thức ; quy tắc áp dụng nếu tất cả các quy tắc này được đáp ứng. Bạn có thể thấy các điều kiện áp dụng cho thiết bị bằng cách chạy hoặc .VARIABLE==VALUE
udevadm info -a -n /dev/…
udevadm info -a /sys/…
Theo tôi biết, không có cơ chế chung nào để bỏ qua một thiết bị. Nếu đó không phải là giao diện mạng (không sử dụng nút thiết bị bên dưới /dev
), bạn có thể làm cho nó không sử dụng được một cách hiệu quả bằng cách không cho phép nó:
ĐIỀU KIỆN , MODE = "000"
Các thiết bị USB có cơ chế ủy quyền : nếu authorized
thuộc tính được đặt thành 0 (sai), hệ thống sẽ không truy cập vào thiết bị. Với quy tắc này, sẽ không có thiết bị USB nào ngoài thiết bị lưu trữ USB.
ACTION=="add", SUSYSTEMS=="usb", DRIVERS!="usb-storage", ATTR{authorized}="0"
Cũng có thể tắt các thiết bị USB sau chuỗi khởi động bằng cách vô hiệu hóa tất cả các cổng máy chủ USB với đoạn mã này trong /etc/rc.local
:
for x in /sys/bus/usb/devices/usb*; do
echo 0 >"$x/authorized_default"
done
Các thiết bị riêng lẻ có thể được bật thông qua quy tắc udev (hoặc thủ công) đặt authorized
thuộc tính thành 1.
Nếu bạn muốn làm cho thiết bị lưu trữ chỉ đọc, hãy đặt ro
thuộc tính của nó thành 1.
Nếu bạn muốn chạy một lệnh, hãy sử dụng RUN
khóa trong quy tắc udev (lưu ý rằng bạn cần đường dẫn đầy đủ đến lệnh và xem hướng dẫn để biết các chuỗi thoát có sẵn và các biến môi trường). Nếu bạn muốn lệnh đó truy cập GUI, hãy xem
Mở cửa sổ trên màn hình X từ xa (tại sao "Không thể mở màn hình")?