
我剛剛發現了一個場景,我(或剛接觸 Linux 的人)可能會意外地刪除 rm 文件,因為使用者認為它是重複的文件。假設我有這兩個二進位檔案:
[xiaobai@xiaobai note]$ ls -larthi /bin/seltr2
1054051 -rwxrwxrwx. 1 root root 3.4K Oct 30 22:54 /bin/seltr2*
[xiaobai@xiaobai note]$ ls -larthi /usr/bin/seltr2
1054051 -rwxrwxrwx. 1 root root 3.4K Oct 30 22:54 /usr/bin/seltr2*
通常我不會看 inode 是否相同,我只看右手邊有-> 標誌或不。因此,如果 /bin 是 /usr/bin 的符號鏈接,就會出現問題:
[xiaobai@xiaobai note]$ ls -larthi /bin
16 lrwxrwxrwx. 1 root root 7 Nov 18 2014 /bin -> usr/bin/
因此,如果用戶認為該文件不是符號連結並且沒有什麼不同,用戶可能會 rm 它:
[xiaobai@xiaobai note]$ sudo rm /bin/seltr2
最後意識到 /usr/bin/seltr2 是同一個文件並且請求救援:
[xiaobai@xiaobai note]$ ls /usr/bin/seltr2
/home/xiaobai/ls: cannot access /usr/bin/seltr2: No such file or directory
那麼有沒有什麼簡單的方法ls 考慮到父目錄是一個符號鏈接,例如:
[xiaobai@xiaobai note]$ ls -larthi /bin/seltr2
1054051 -rwxrwxrwx. 1 root root 3.4K Oct 30 22:54 /bin/seltr2* -> /usr/bin/seltr2*
我並不總是查看索引節點號。有沒有更好的方法來避免這種潛在的錯誤?
答案1
同意沒有root權限的普通使用者。
感謝您的評論 - 現在我明白了這個問題 - 我重新編輯了這篇文章
root@host:~# ls -latr /bin/test-dir
total 8
drwxr-xr-x 3 root root 4096 Nov 4 12:01 ..
-rw-r--r-- 1 root root 0 Nov 4 12:02 testfile
drwxr-xr-x 2 root root 4096 Nov 4 12:02 .
root@host:~# ls -latr /usr/bin/test-dir-link
lrwxrwxrwx 1 root root 13 Nov 4 12:03 /usr/bin/test-dir-link -> /bin/test-dir
root@host:~# rm /usr/bin/test-dir-link
root@host:~# ls -latr /bin/test-dir
total 8
drwxr-xr-x 3 root root 4096 Nov 4 12:01 ..
-rw-r--r-- 1 root root 0 Nov 4 12:02 testfile
drwxr-xr-x 2 root root 4096 Nov 4 12:02 .
root@host:~# ls -latr /usr/bin/test-dir-link
ls: cannot access /usr/bin/test-dir-link: No such file or directory
正如您在上面看到的 - 它只刪除了“符號連結”,但沒有刪除“目標”。
此外,您的文件中似乎存在拼寫錯誤 -你的符號連結指向“usr/bin”,但它應該是“/usr/bin”。
希望這有道理嗎?