2012-10-25 37 views
2

我正在建立一個運行apache的Linux網絡服務器。我上傳並解開了我的網站文件。當我SSH進入系統時,主目錄中的文件全部可見。但是,我被所有子目錄阻止。 如果我寫:爲什麼我無法在Linux中查看目錄?

# cd images 

然後我得到的錯誤:

-bash: cd: images: Permission denied 

我登入爲EC2用戶。我將這些東西解壓爲ec2-user,並且我懷疑tar文件中有任何權限,因爲我在Windows系統上創建了歸檔文件。 奇怪的是我是這個目錄的所有者。下面是此命令的一個片段: ls -l命令

drw-rw-r-- 19 ec2-user ec2-user  4096 May 4 04:09 images 

當我做「命令蘇」,然後鍵入命令cd圖像,一切都很好。 如果我是所有者並獲得許可,爲什麼我會獲得「權限被拒絕」作爲ec2用戶?

回答

1

它錯過了目錄中的可執行位,這對於在那裏能夠執行cd是必不可少的。

速戰速決將在目錄中運行你解開你的東西:

# find . -type d | xargs chmod a+x 

如果您有空格的目錄,使用以下命令:

# find . -type d -exec chmod a+x "{}" \; 
+0

謝謝。這有效。現在作爲EC2用戶,我可以「CD映像」。但「圖片」下方的任何子目錄現在都被阻止。該命令是否可以修改爲包含所有級別的子級? – Thread7

+0

'find'應該照顧所有的子餐桌。你可以運行只是'找到。 -type d'並查看它是否列出了所有的子目錄?另外,你有名字中有空格的目錄嗎? – favoretti

+1

如果你知道你的命令對空格有問題,你應該首先修改它:'find。 -type d | xargs -d \\ n chmod a + x'或'find。 -type d -print0 | xargs -0 chmod a + x'或者只是'find。 -type d -exec xargs chmod a + x {} +'。 – glglgl

2

您需要執行許可:

chmod +x images 

應該照顧它。目錄的執行權限轉換爲「遍歷目錄」權限。

+0

有趣的是,對於搜索和列表,你只需要'r'位,而使用它時,你需要'x'。因此,如果您準確知道它們的命名方式,則可以列出可以列出但不使用的'rw -'命令,或者使用'--x'來指示可以使用哪些文件。 – glglgl

相關問題