Quy tắc ổ đĩa CD / DVD: Gắn ổ đĩa khi chèn vào "/ media / DVD"
Làm điều này nếu bạn muốn khôi phục tự động gắn với một số kiểm soát về cách nó được thực hiện.
- Tự động tạo điểm gắn kết khi chèn phương tiện
- Tự động gắn kết trung bình để gắn điểm với các quyền cụ thể
- Tự động loại bỏ điểm gắn kết khi loại bỏ phương tiện
Hành động: Khay CD / DVD có phương tiện và được kéo vào
Bạn phải nói với hệ thống của bạn để phản ứng hành động này. Bạn có thể để nó chạy tập lệnh mount (bất kỳ tập lệnh tùy chỉnh nào). Để làm điều này, bạn cần tạo một quy tắc mới trong lib/udev/rules.d
thư mục. Các lệnh này cần được chạy dưới dạng root (sử dụng tiền tố sudo
cho các lệnh sau để chạy chúng dưới quyền root hoặc trở thành người dùng root vớisudo -s
- Tạo một tệp mới và gọi nó là autodvd.rules
touch /lib/udev/rules.d
- Tìm thông tin về ổ đĩa CD / DVD của bạn bằng cách chạy
udevadm info --query=all --attribute-walk --name=/dev/sr0
(không cần root ở đây, nhưng hoạt động theo cả hai cách) Tìm kiếm thứ gì đó xác định duy nhất ổ đĩa của bạn (tốt hơn hoặc xấu hơn tôi đã chọn ATTRS{vendor}=="HL-DT-ST"
, đó là ổ đĩa của tôi (ổ của bạn sẽ khác trừ khi bạn tình cờ sở hữu cùng một ổ đĩa như tôi). Sao chép nó xuống một nơi nào đó để sau này. Bạn có thể dành chút thời gian để xem qua tệp này và so sánh với ví dụ quy tắc dưới đây. Có thể tìm thấy SUBSYSTEM và ATTRS trong đó.
- Chỉnh sửa quy tắc mới của bạn (bạn có thể sử dụng bất kỳ trình soạn thảo nào bạn chọn, tôi sử dụng
vim /lib/udev/rules.d
, nhưng cũng nano /lib/udev/rules.d
hoạt động và dễ dàng. Thêm những điều này, chỉnh sửa ATTRS của bạn để khớp với quy tắc của bạn (đây là phần nhạy cảm, bạn có thể phải chọn một thuộc tính khác nếu nó không hoạt động) và sửa các trường YOUUSER và YOUGROUP:
KERNEL=="sr[0-9]*", SUBSYSTEM=="block", ATTRS{vendor}=="HL-DT-ST", SYMLINK+="dvdburner", OWNER="YOURUSER", GROUP="YOURGROUP" ACTION=="change",RUN+="/home/YOURUSER/Scripts/Bash/automountdvd.sh"
- Điều này
KERNEL=="sr[0-9]*"
có nghĩa là nó sẽ kiểm tra tất cả các scsi
thiết bị (sr0-sr9)
- Đây
SYMLINK
chỉ là một liên kết tượng trưng cho ổ đĩa (giống như /dev/cdrom
là thực tế /dev/sr0
)
Bạn có thể cần tải lại tất cả các quy tắc udev:
udevadm control --reload rules
reload udev
udevadm trigger
Tập lệnh
Lưu các mục sau đây vào một nơi nào đó như: /home/YOURUSER/Scripts/Bash/automountdvd.sh
và sửa các trường CỦA BẠN và CỦA BẠN. Nhân tiện, thật nguy hiểm khi đặt tập lệnh này vào thư mục người dùng, bởi vì nó sẽ được chạy bởi root, có nghĩa là nếu ai đó hack thư mục người dùng của bạn, họ có thể điều chỉnh tập lệnh để làm bất cứ điều gì họ muốn và root sẽ chạy nó ( và có khả năng thành công, vì người dùng root có toàn quyền kiểm soát hệ thống) Có lẽ tốt hơn để ẩn nó trong một thư mục mà chỉ root mới có thể nhìn thấy. Nếu bạn đang thử nghiệm, nó là tốt.
#!/bin/bash
{
mountpoint="/media/DVD"
user=YOURUSER
group=YOURGROUP
uid=$(id -u ${user})
gid=$(id -g ${group})
FS_TYPE="`blkid /dev/sr0 | grep -o 'udf'`"
if [ ${FS_TYPE} == 'udf' ]; then
echo "ID_CDROM_MEDIA set to 1, creating ${mountpoint} and attempting to mount DVD."
mkdir -p ${mountpoint} && chown ${user}:${group} ${mountpoint}
mount -t ${FS_TYPE} -o ro,uid=${uid},gid=${gid} /dev/sr0 ${mountpoint}
echo "DVD mounted at ${mountpoint}."
else
echo "Attempting to unmount -l ${mountpoint}."
umount -l ${mountpoint}
rm -rf ${mountpoint}
echo "Unmounting ${mountpoint} and removing folder ${mountpoint}."
fi
} &>> "/var/log/autodvd.log" &
mkdir anythingAtAll; sudo mount /dev/sr0 anythingAtAll