e2fsprogs debugfs
で遊んで、変更/事故により、という名前のファイルfilen/ame
が作成されました。明らかに、スラッシュ文字/
はパス名の特別な区切り文字として機能します。
それでも使用debugfs
して、という名前のファイルを削除したいのですfilen/ame
が、/
文字がファイル名の一部として解釈されないため、ほとんど成功しませんでしたか?
debugfsは、スラッシュを含むこのファイルを削除する方法を提供しますか?もしそうならどのように?
私が使用した:
cd /tmp
echo "content" > contentfile
dd if=/dev/zero of=/tmp/ext4fs bs=1M count=50
mkfs.ext4 /tmp/ext4fs
debugfs -w -R "write /tmp/contentfile filen/ame" /tmp/ext4fs
debugfs -w -R "ls" /tmp/ext4fs
どの出力:
debugfs 1.43.4 (31-Jan-2017)
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen/ame
filen/ame
ファイルを削除するために次のことを試しました。
debugfs -w -R "rm filen/ame" /tmp/ext4fs
しかし、これは機能せず、以下を生成するだけでした:
debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename
ディレクトリノードのコンテンツを手動で変更する以外に、debugfs
?を使用してファイルを削除する方法はありますか?
+1、おめでとうございます。シェルコマンドで文字を正しく引用またはエスケープするだけでは問題が解決しない、「ファイル名に含まれる奇妙な文字」の2つのケースのうちの1つを見つけることができました。(もう1つはファイル名の
—
ヌルバイトに
filen\/ame
)のエスケープは機能しませんか?