Linux
如何使用所有問號作為權限修復目錄
我正在使用 CentOS 7 並試圖列出目錄的內容但不能。當我嘗試列出內容時,我得到以下輸出:
[entpnerd@myhost ~]$ ls -ali /data/sharedlogs/otherhost/ ls: cannot access /data/sharedlogs/otherhost/vcs: Not a directory total 12 2361284 drwxr-xr-x 4 root root 4096 Sep 26 14:40 . 2359297 drwxr-xr-x 6 root root 4096 Apr 26 17:41 .. 2362573 drwxr-xr-x 2 root root 4096 Mar 22 2017 tkr ? d????????? ? ? ? ? ? vcs
輸出表明我的目錄 ,
vcs
是“不是目錄”,即使它應該是,因為這是以前記錄文件的位置。此外,文件權限位現在都是問號,所有者和(莫名其妙的)inode ID 也是如此。如何讓文件系統再次將我的目錄辨識為目錄?
在嘗試了我在下面概述的所有內容之後,我看到的唯一前進道路是確保磁碟已備份並執行
fsck
(如本論壇所建議的那樣),或者可能只是格式化整個安裝。希望我能找到一個更簡單、不那麼激烈的解決方案。我嘗試過的一些事情:
sudo
:我嘗試執行sudo ls
但輸出沒有差異。rm
: 我試著把vcs
它取下來放回去,但沒有運氣。我在有無的情況下都試過了sudo
,但也沒有運氣。奇怪的是,當我嘗試sudo rm
它時說Is a directory
. 我也嘗試rm
了-r
和-d
開關,也沒有運氣。我從rm
命令嘗試中得到的輸出是:[entpnerd@myhost ~]$ rm /data/sharedlogs/otherhost/vcs rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory [entpnerd@myhost ~]$ sudo rm /data/sharedlogs/otherhost/vcs rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory [entpnerd@myhost ~]$ sudo rm -r /data/sharedlogs/otherhost/vcs rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory [entpnerd@myhost ~]$ rm -r /data/sharedlogs/otherhost/vcs rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory [entpnerd@myhost ~]$ rm -rd /data/sharedlogs/otherhost/vcs rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Not a directory [entpnerd@myhost ~]$ sudo rm -rd /data/sharedlogs/otherhost/vcs rm: cannot remove ‘/data/sharedlogs/otherhost/vcs’: Is a directory
- inode ID:我嘗試通過 inode 刪除(正如this answer to a similar question所建議的那樣),但我也沒有運氣,因為從上述
ls
命令的輸出中可以看出,該vcs
目錄沒有 inode ID。- 非 ASCII 字元:在文章“如何刪除不可刪除的目錄”中,目錄包含非 ASCII 字元。這也不是我從
xxd
輸出中看到的情況:[entpnerd@myhost ~]$ ls -l /data/sharedlogs/otherhost/ | xxd ls: cannot access /data/sharedlogs/otherhost/vcs: Not a directory 0000000: 746f 7461 6c20 340a 6472 7778 722d 7872 total 4.drwxr-xr ... 0000040: 3f3f 3f3f 3f20 3f20 3f20 2020 203f 2020 ????? ? ? ? 0000050: 2020 2020 203f 2020 2020 2020 2020 2020 ? 0000060: 2020 3f20 7663 730a ? vcs.
lsattr
:正如類似問題“為什麼我不能以 root 身份刪除此文件? ”所建議的那樣,我嘗試使用該lsattr
命令,但也沒有運氣:[entpnerd@myhost ~]$ lsattr /data/sharedlogs/otherhost/ -------------e-- /data/sharedlogs/otherhost/tkr /data/sharedlogs/otherhost/vcs: Not a directory [entpnerd@myhost ~]$ lsattr /data/sharedlogs/otherhost/vcs lsattr: Not a directory while trying to stat /data/sharedlogs/otherhost/vcs [entpnerd@myhost ~]$ sudo lsattr /data/sharedlogs/otherhost/vcs [sudo] password for entpnerd: lsattr: Not a directory while trying to stat /data/sharedlogs/otherhost/vcs
- 為目錄設置可執行位:根據類似的問題,“問號顯示在 ls of directory.IO 錯誤中”,我嘗試為目錄設置可執行位,但也沒有運氣。
[entpnerd@myhost ~]$ sudo chmod -R g+x /data/sharedlogs/otherhost/vcs [sudo] password for entpnerd: chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory [entpnerd@myhost ~]$ sudo chmod -R u+x /data/sharedlogs/otherhost/vcs chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory [entpnerd@myhost ~]$ sudo chmod -R a+x /data/sharedlogs/otherhost/vcs chmod: cannot access ‘/data/sharedlogs/otherhost/vcs’: Not a directory
任何幫助將不勝感激。
這可能是安裝服務(例如 Samba)的問題。嘗試在遠端主機上重新啟動 Samba 服務:
sudo service smb restart
我在 Docker 上執行綁定掛載時遇到了這個問題。我重新啟動了 Docker 守護程序,文件被正確刪除。
編輯:我在 Windows 10 上使用了 WSL(Ubuntu 16.04)。