這只是我對一個特定操作系統如何執行二進制文件的好奇心。 如果我在UNIX或Windows中將dir更改爲某個路徑,則只需輸入其文件名即可執行程序。在Linux中,我必須輸入./file_name
(除非包含在PATH
中)。知道這是一個愚蠢的問題,但是有什麼理由嗎?關於執行二進制文件的好奇心
0
A
回答
4
沒什麼神奇的 - 這只是因爲,默認情況下,Windows隱式地包含'。'在可執行搜索路徑中。 *尼克斯沒有。
後一種行爲顯然更安全,如果稍微不方便的話。
通過添加'。'可以在* nix下獲得類似於Windows的行爲(以安全性爲代價)。你的路徑
例如,您可以添加以下到你的.bash_profile:
export PATH=PATH:.
當然,這不是正是一樣的Windows,因爲Windows(再次默認情況下)看起來CWD 第一個。您可以通過移動'。'來在* nix中執行相同的操作。到系統的PATH前面,但不要那樣做!
這會給您帶來很大的安全風險。如果有人能夠刪除與系統實用程序同名的惡意程序(例如「ls」或「cp」),那麼該程序將運行而不是系統實用程序。你可以想象出提供「惡作劇」的可能性!
2
要擴展Gregj說的話,Windows和Linux中都有一個PATH
變量,它告訴操作系統何時查找可執行文件,而不是明確地告訴它在哪裏。出於安全考慮,Linux不包括當前目錄(.
);一個程序可能會在許多文件中隱藏一個帶有常用工具名稱的可執行文件(例如,ls
),因此您可能會忽略它,然後它將運行而不是您所用的實用工具,可能會導致損壞,敏感數據等。爲方便起見以及由於缺乏對安全性的關注,Windows會搜索.
,即使它並未顯式位於路徑中。
相關問題
- 1. 關於FBX二進制文件格式
- 2. 無法執行二進制文件
- 3. 用shebang執行二進制文件
- 4. cygwin - 無法執行二進制文件
- 5. CircleCI:執行本地二進制文件
- 6. 在iPhone上執行二進制文件
- 7. C++不能執行二進制文件
- 8. bash,無法執行二進制文件
- 9. PhantomJs無法執行二進制文件
- 10. AWS:不能執行二進制文件
- 11. 無法執行二進制文件centos?
- 12. GCC編譯的二進制文件給予 「不能執行二進制文件」
- 13. g ++編譯的二進制文件給「不能執行二進制文件」
- 14. 用於php的Hiphop「無法執行二進制文件」
- 15. cmake的: 「不能執行二進制文件」 關於OSX Android編譯
- 16. 執行格式錯誤。二進制文件不可執行
- 17. Ubuntu的錯誤:「文件名」不能執行二進制文件
- 18. 如何使可執行的二進制文件,即心不是依賴於.so文件
- 19. 哪裏是Android的執行jar文件?(只是出於好奇)
- 20. 關於文本文件轉換爲二進制文件C++
- 21. 關於VS2010文本編輯器的好奇心
- 22. 執行二進制搜索
- 23. 將JRuby二進制文件打包成可執行文件夾
- 24. 將.m文件轉換爲二進制可執行文件
- 25. 如何執行文本文件的二進制搜索
- 26. 用於二進制文件的NSFileHandle?
- 27. 用於Iphone二進制文件的NOP
- 28. bash:無法執行二進制文件:儘管二進制和Linux是64位,但執行格式錯誤
- 29. 運行時無法執行二進制文件錯誤bibtex2html
- 30. 關於Tableau軟件的好奇問題
很好,除了關於安全性的部分:在Linux中,即使'.'在您的路徑中,您也必須在執行'。/ ls'前執行。 –
是的,它必須是可執行的,但爲什麼你必須使它可執行?如果它是這樣的攻擊,它爲什麼不能執行,可能來自像tar檔案。 – Kevin