Udev kullanın. Udev bir aygıt yöneticisi arka plan programıdır. Diğer şeylerin yanı sıra cihazlarınızı adlandırmaktan da sorumludur. Kurallar dizinine belirli bir sözdizimine sahip dosyalar koyarak udev-rules tanımlayabilirsiniz. Kurallar birçok şey yapabilir - özellikle belirli bir cihaz bağlandığında komut dosyaları çalıştırabilirler.
Sorununuzu nasıl çözersiniz:
İlk önce cihazınızda bilgi toplamanız gerekir. Diyelim ki bağladınız ve adının altında olduğunu biliyorsunuz /dev/sdb1
. Öyleyse çalıştırın:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)
Komut, cihazınız hakkında bilgi verir. Oldukça uzun. Cihazı benzersiz bir şekilde tanımlayan bir şey bulmanız gerekir. Bu bir seri benzeri ATTRS{serial}=="UA04FLGC"
veya ATTRS{idVendor}
ve gibi diğer özelliklerin bir kombinasyonu olabilir ATTRS{idProduct}
. İsimlerin çoğu aşağı yukarı açıklayıcıdır. Makul görünen bir veya birkaç kombinasyon seçin - eğer işe yaramazlarsa, başka bir şey deneyin.
Benzersiz bir tanımlayıcı bulduğunuzda /etc/udev/rules.d
, iki basamakla başlayan ve biten bir dosya oluşturun .rules
. İki basamak, bu .rules dosyalarının işlenme sırasını belirtir - 70-usb-log-custom.rules
sizin için iyi bir seçim olmalıdır. Bu kural dosyasının sözdizimi çok karmaşık olabilir. Eğer ilgileniyorsanız, google udev. Değilse, sadece yeni oluşturulan dosyayı açın ve böyle bir şeye benzeyecek şekilde düzenleyin:
# /etc/udev/rules.d/70-usb-log-custom.rules
KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k"
ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"
Bu kullandığım gerçek bir udev dosyası. İçinde üç kural var. Her çizgi kendine özgü bir kuraldır. İlk satır, şifreli bir disk bağlandığında şifresi çözülmüş bir aygıt oluşturmak için bir komut dosyası çalıştırır. İkinci satır, şifresi çözülen cihazın kaldırılması durumunda aynı komut dosyasını farklı seçeneklerle çağırır. Üçüncü satır, ilgili başka bir cihaz için izinleri ayarlar.
Büyük olasılıkla sadece ilk satıra ihtiyacınız olacak. Gerisini silin ve doğru seriyi (veya cihazınızı tanımlamak için seçtiğiniz parametrelerin birleşimini) ekleyin.
Dosyamın açıklaması:
KERNEL=="sd?1"
Bu kuralda aradığınız cihaz çizgisinde adlandırılır diyor /dev/sda1
, /dev/sdc1
veya böyle bir şey. Soru işareti herhangi bir harf için bir joker karakterdir. ATTRS{serial}=="UA04FLGC"
burada benzersiz tanımlayıcıdır. Bahsettiğim diğer cihaz için (üçüncü satır) Seri numarasını değil, SYSFS{idVendor}=="1781"
ve ve bir kombinasyonunu kullanıyorum SYSFS{idProduct}=="0c9f"
.
ACTION=="add"
kurala yalnızca cihaz eklendiğinde işlem yapması gerektiğini söyler; kaldırıldığında değil.
SYMLINK+="cusb1"
diske bir sembolik bağlantı oluşturur, böylece biri altında bulabilir /dev/cusb1
.
RUN+="/home/confus/bin/usb-encrypt.sh add %k"
komut dosyasını çalıştırır ve ona 'add' ve '% k' (aygıt adı) iletir.
Daha fazla ayrıntı vermeyeceğim, çünkü udev kuralları hakkında mükemmel öğreticiler var. Burada okuduklarınız gözden geçirmek için yeterli olmalıdır.