と..削除は可能ですか?

と..削除は可能ですか?

.削除できますか..

これを行うことができるLinuxカーネル用のパッチがあることをどこかで読みました。 Googleとduckduckgoがsを無視するので、どこで読んだのか、どのように検索するのかわかりません.

ベストアンサー1

技術的には、ext4ファイルシステムで可能ですe2test.img

$ sudo mount e2test.img /mnt/temp
$ sudo mkdir /mnt/temp/dir{1,2}
$ sudo umount /mnt/temp
$ debugfs -w e2test.img
debugfs 1.45.6 (20-Mar-2020)
debugfs:  unlink dir1/..
debugfs:  unlink dir1/.
debugfs:  quit
$ sudo mount e2test.img /mnt/temp
$ ls -a /mnt/temp/dir{1,2}
/mnt/temp/dir1:

/mnt/temp/dir2:
.  ..

シェルは特に混乱しません。

$ cd /mnt/temp/dir1
$ pwd
/mnt/temp/dir1
$ cd ..
$ pwd
/mnt/temp

予想通り、e2fsckこれに満足していません。

$ e2fsck e2test.img
e2fsck 1.45.6 (20-Mar-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Missing '.' in directory inode 113793.
Fix<y>? yes
Setting filetype for entry '.' in ... (113793) to 2.
Missing '..' in directory inode 113793.
Fix<y>? yes
Setting filetype for entry '..' in ... (113793) to 2.
Pass 3: Checking directory connectivity
'..' in /dir1 (113793) is <The NULL inode> (0), should be / (2).
Fix<y>? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information

e2test.img: ***** FILE SYSTEM WAS MODIFIED *****
e2test.img: 14/128016 files (0.0% non-contiguous), 18478/512000 blocks

正確な動作は、使用される特定のファイルシステムによって異なります。一部はエントリを保存せずにエミュレートします(POSIXでは適切なディレクトリを要求、.理解、解釈しますが、実際には存在する必要はありません)。.....

おすすめ記事