
Acabei de encontrar um cenário que eu (ou alguém novo no Linux) pode acidentalmente rm arquivo porque o usuário pensou que era um arquivo duplicado. Digamos que eu tenha dois arquivos binários:
[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*
Normalmente eu não olharia para o inode é o mesmo, apenas olho para o lado direito.-> assinarou não. Portanto, o problema surge se /bin for um link simbólico para /usr/bin:
[xiaobai@xiaobai note]$ ls -larthi /bin
16 lrwxrwxrwx. 1 root root 7 Nov 18 2014 /bin -> usr/bin/
Portanto, se o usuário achar que o arquivo não é um link simbólico e não é diferente, o usuário pode rm:
[xiaobai@xiaobai note]$ sudo rm /bin/seltr2
E finalmente perceba que /usr/bin/seltr2 é o mesmo arquivo e peça o resgate:
[xiaobai@xiaobai note]$ ls /usr/bin/seltr2
/home/xiaobai/ls: cannot access /usr/bin/seltr2: No such file or directory
Então, existe alguma maneira simples de fazerls leva em conta que o diretório pai é um link simbólico, por exemplo:
[xiaobai@xiaobai note]$ ls -larthi /bin/seltr2
1054051 -rwxrwxrwx. 1 root root 3.4K Oct 30 22:54 /bin/seltr2* -> /usr/bin/seltr2*
Nem sempre olho para o número do inode. Existe melhor maneira de evitar esse tipo de erro potencial?
Responder1
Concorde com usuários comuns que não possuem privilégios de root.
Obrigado pelo seu comentário - agora entendi a pergunta - reeditei esta postagem
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
Como você pode ver acima - ele excluiu apenas o "link simbólico", mas não o "destino".
Também parece haver um erro de digitação em seus arquivos -seu link simbólico aponta para "usr/bin", MAS deveria ser "/usr/bin".
Espero que isso faça sentido?