2014-01-29 89 views

回答

1

AFAIK沒有名稱爲「..」的inode。當你訪問諸如/ etc/passwd的文件時,有一個稱爲路徑名稱查找的過程,它將每個'/','etc'和'passwd'轉換爲inode。遇到''。'或'/'或'..'有特殊處理。對於'。'和'/',這是一種無操作,並繼續使用相同的inode。對於'..',它會返回獲取它來自的父節點。這在第12章虛擬文件系統Understanding the Linux Kernel中有非常清楚的解釋。我強烈建議通過它。另請參閱http://www.mjmwired.net/kernel/Documentation/filesystems/path-lookup.txt

+0

具體而言,我正在編寫一個安全模型,如果要在某些情況下遵循符號鏈接或「..」,將阻止該操作。我可以告訴它是否想用S_ISLNK(inode-> i_mode)訪問slink,但是如何判斷它是否要訪問「..」? 無論如何感謝您的回答,我是新來的,您的參考幫助了我很多。 – ming

+0

然後我想你將不得不更新這部分路徑名查找: http://lxr.free-electrons.com/source/fs/namei.c#L1745 請注意,這是VFS代碼,並且會影響所有文件系統。 – spa

相關問題