回答
您可以查找/ var/log/messages查找插入消息。他們會因設備而異,但一般看起來有點像這樣:
[183532.373402] sda: sda1
[196936.098729] usb 1-3: USB disconnect, address 3
[196936.440424] usb 1-3: new high speed USB device using ehci_hcd and address 6
[196936.586043] usb 1-3: New USB device found, idVendor=0781, idProduct=9219
[196936.586052] usb 1-3: New USB device strings: Mfr=3, Product=4, SerialNumber=5
[196936.586057] usb 1-3: Product: ImageMate CF Reader/Writer
[196936.586061] usb 1-3: Manufacturer: SanDisk
[196936.586065] usb 1-3: SerialNumber: 0302855445
[196936.586286] usb 1-3: configuration #1 chosen from 1 choice
[196936.592552] scsi1 : SCSI emulation for USB Mass Storage devices
[196936.593074] usb-storage: device found at 6
[196936.593078] usb-storage: waiting for device to settle before scanning
[196941.592515] usb-storage: device scan complete
其餘的只是一個smop。
非常感謝你,我得到了一些線索,我會嘗試這 – 2010-10-15 16:51:17
一個smop!讓我谷歌。:) – bzlm 2010-10-15 17:31:14
daemons怎麼樣?
您可以創建一個檢測pendrive插入並執行你想要在終端中。
如果我得到了你的意思,你的意思是像Windows'AUTORUN.INF
,是不是?
在這種情況下,我想你很難找到你要找的東西。這經常被認爲是危險的,因爲你可以運行任何你想要的,包括病毒和其他惡意軟件!
我認爲KDE在插入設備的根目錄中查找autorun.sh
,但我不確定。
當您插入USB(或通常很多其他類型的可移動存儲設備)時,內核在識別出內容後會通知一個名爲udevd的程序。 udevd會查看一些規則(存儲在/etc/udev/rules.d/,/lib/udev/rules.d/或/dev/.udev/rules.d下的文件中),以查找與新設備匹配的規則並執行那些做的。可移動塊設備的一個規則是運行一個程序來掛載該驅動器上的文件系統(可能會創建掛載點/目錄)。
Gnome,KDE或類似的桌面界面通過D-BUS獲知已經安裝並安裝了新設備(我不是100%關於這裏的確切步驟)。
無論如何,爲了在新插入的驅動器上運行程序,您需要一個程序來爲您執行已經運行的程序。你可以嘗試改變你的udev規則或安裝新驅動器的腳本來爲你做這件事,或者編寫一個新的守護進程,通知像gnome或KDE這樣的桌面管理系統得到通知來運行它的方式得到通知,但是沒有我知道如果已經這樣做。這樣做存在安全風險,因爲它允許任何訪問USB(或類似)插頭的人在計算機上運行任何程序。我可以走到某人在咖啡館使用筆記本電腦,並很快在他們的計算機上運行程序而未經他們的同意。或者,如果我給某人一個USB驅動器,並說「這有我的假期照片」,他們把它放到他們的Linux計算機上,驅動器上的惡意自動運行程序將在未經他們同意的情況下運行。
如果這樣的功能已經是某些Linux發行版的一部分(它可能是,我不知道),它應該肯定需要用戶在它運行之前達成一致,但即使如此,它也必須限於運行該用戶的UID和GID(忽略更復雜的SELinux安全性的可能性)以及該用戶安全的工作目錄。而這完全忽略了移動文件系統所有權混淆和SUID位的問題。
這可能不是解決您嘗試解決的任何問題的正確方法。
非常感謝我有一個維度來思考 – narayanpatra 2010-10-18 17:39:16
- 1. 如何在Android Studio中構建後自動運行Android應用程序?
- 2. 如何在一個序列中運行多個cocos構建器動畫
- 3. 如何在構建Linux內核的同時構建一個用戶級程序
- 4. 我如何使一個自動運行程序自動打開一個文件
- 5. 如何在構建Linux驅動程序時添加預構建對象(android)
- 6. 如何自動運行jcl在主機上運行cobol程序
- 7. 如何在Linux中運行多個命令?製作一個程序嗎?
- 8. MPI程序運行在Linux
- 9. 來自一個發行版的Linux程序\遊戲是否會在另一個Linux發行版上運行?
- 10. 運行Linux程序
- 11. 在腳本啓動時自動運行一個程序
- 12. C應用程序如何在運行時在Linux環境中自行更新
- 13. 如何編寫一個程序,每當我打開我的電腦,在Linux中自動運行?
- 14. 我如何從一個Java程序運行Linux終端cmd
- 15. 如何在linux中創建自動運行文件並執行shell文件?
- 16. 我將如何構建可在運行時自行診斷的應用程序?
- 17. 如何運行「git submodule init」以及如何「構建」一個程序
- 18. 如何在啓動Ubuntu Linux時運行Java應用程序
- 19. 如何在perl程序未運行時自動運行perl程序?
- 20. 需要幫助,在linux mint中運行一個彙編程序
- 21. 如何在Swift中自行構建UISlider自動滑動?
- 22. 你如何構建一個Java程序?
- 23. 如何在後臺進程中運行linux應用程序?
- 24. 如何在Linux中創建正在運行的進程圖
- 25. 如何運行(執行後)在一個線程自動釋放一個信號?
- 26. 如何在Cocoa中運行另一個應用程序後運行我自己的應用程序?例如,
- 27. 自動重新運行,Linux
- 28. 如何自動區分兩個iOS應用程序構建包
- 29. 在Linux/MacOSX中運行C程序
- 30. 在Linux中雙擊運行OpenGL程序
什麼發行版?你想讓它在所有發行版上運行嗎? – nmichaels 2010-10-15 16:47:12