
Я только что нашел сценарий, который мне (или кто-то новичок в 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/
Поэтому, если пользователь считает, что файл не является символической ссылкой и ничем не отличается, он может удалить его:
[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».
Надеюсь, это понятно?