Como fazer ls me avisando sobre o diretório pai é symlink

1

Acabei de encontrar um cenário que eu ( ou alguém novo no linux ) poderia acidentalmente rm arquivo porque o usuário pensou que é o arquivo duplicado. Digamos que eu tenha esses 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 o inode é o mesmo, eu apenas olho para o lado direito tem - > assinar ou não. Então, o problema surge se / bin é 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 é symlink e não é diferente, o usuário pode rm-lo:

[xiaobai@xiaobai note]$ sudo rm /bin/seltr2

E finalmente perceba que / usr / bin / seltr2 é o mesmo arquivo e pergunte o resgate:

[xiaobai@xiaobai note]$ ls /usr/bin/seltr2
/home/xiaobai/ls: cannot access /usr/bin/seltr2: No such file or directory

Existe alguma maneira simples de fazer ls considerar 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 vejo o número do inode. Existe uma maneira melhor de evitar esse tipo de erro em potencial?

    
por 林果皞 30.10.2015 / 16:33

1 resposta

0

Concorde com usuários comuns que não tenham privilégios de root.

Obrigado pelo seu comentário - agora eu entendi a pergunta - reeditamos este post

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 "symlink", mas não o "target".

Também parece haver um erro de digitação em seus arquivos - seu link simbólico aponta para "usr / bin" MAS deve ser "/ usr / bin".

Espero que isso faça sentido?

    
por 03.11.2015 / 20:37

Tags