使用fchmod(int fildes, mode_t mode)
比使用chmod(const char * path,mode_t模式)更好一些?在chmod上使用fchmod會更好嗎?
回答
這幾乎完全相同。 chmod
將稍微長一些,因爲它必須將路徑轉換爲inode或filenode,而fchmod
已經查找了inode/filenode。
當然,也有因爲文件已經知道存在可能與fchmod
更少發生錯誤情況,有權限的開放等
如果您正在處理文件的內容,你已經有了文件描述符(或者因爲您使用open()
來獲取它,或者因爲您使用了fopen()
並且可以使用指針獲取它),則可以使用fchmod()
。如果您不想打開文件進行任何處理,只需更改模式,請使用chmod()
。
這取決於比賽條件是否是一個問題。使用chmod
時,可能會導致某人將您的文件從您的下方重命名並修改錯誤的文件。在某些情況下(特別是如果你是根),這可能是一個巨大的安全漏洞。
如果有人在打開文件描述符到'fchmod'之前重命名文件? – 2009-12-12 06:28:55
偉大的一點。我找到了一個真實世界的例子http://www.mail-archive.com/[email protected]/msg00128.html。謝謝! – 2009-12-12 06:35:18
@覈查員,這也是一種可能性。但是在打開文件描述符之後,您可以執行fstat並比較用戶和組ID(或者查看文件數據,甚至可能還有其他測試),以確保獲得正確的文件。此外,在許多情況下,您正在修改您創建的文件,因此在公開呼叫中沒有競爭條件。 – Omnifarious 2009-12-12 06:59:50
- 1. 使用Fragments會更好嗎?
- 2. 在Unix中使用fchmod
- 3. 使用fwrite()或move_uploaded_file()會更好嗎?
- 4. 使用eventListener或readyStateChange會更好嗎?
- 5. 在這裏使用準備好的語句會更好嗎?
- 6. 這對LINQ會更好嗎?
- 7. Django彗星會更好嗎?
- 8. jQuery或Prototype會更好嗎?
- 9. 尊重MVC會更好嗎?
- 10. 在移動應用程序中使用getter setter會更好嗎?
- 11. 在web應用程序中使用.jasper或.jrxml會更好嗎?
- 12. 使用或不使用FastCGI在PHP5上運行Codeignitor更好嗎?
- 13. 使用session_set_save_handler更好嗎?
- 14. 在黑莓中使用Bitmap或EncodedImage會更好嗎?
- 15. 在Android中使用多個SpanObjects或多個TextViews會更好嗎?
- 16. 在這種情況下使用Knockout.js會更好嗎?
- 17. 使用它會更好嗎?在代碼之前?
- 18. 在MySQL中使用「<>」或「!=」不等於MySQL會更好嗎?
- 19. 在html或樣式表中使用@media會更好嗎?
- 20. 在方法簽名中使用類或變量會更好嗎?
- 21. 使用虛擬值會使模型的性能更好嗎?
- 22. 在Android上使用GL_FIXED或GL_FLOAT更好嗎
- 23. PHP chmod使用
- 24. 在Mac或Windows上開發更好嗎?
- 25. 使用運動物體在box2d中使用SetLinearVelocity或SetPosition會更好嗎?
- 26. 在調用vector :: assign()之前調用vector :: reserve()會更好嗎?
- 27. 這會更好地使用循環而不是函數嗎?
- 28. 使用一個或兩個CDN會更好嗎?
- 29. 使用php對象或訪問數據庫會更好嗎?
- 30. 使用find()和end()函數鏈接代碼會更好嗎?
上下文是什麼? – 2009-12-12 05:59:58
我只是想知道一般。 – PJT 2009-12-12 06:33:44
查看Omnifarious的答案,例如http://www.mail-archive.com/[email protected]/msg00128.html。所以,我會說永遠使用fchmod。 – 2009-12-12 06:37:03