Wie kann ich dafür sorgen, dass ls mich warnt, dass das übergeordnete Verzeichnis ein symbolischer Link ist?

Wie kann ich dafür sorgen, dass ls mich warnt, dass das übergeordnete Verzeichnis ein symbolischer Link ist?

Ich habe gerade ein Szenario gefunden, das ich (oder jemand, der neu bei Linux ist) könnte versehentlich eine RM-Datei löschen, weil der Benutzer dachte, es handele sich um eine doppelte Datei. Nehmen wir an, ich habe diese beiden Binärdateien:

[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*

Normalerweise würde ich nicht darauf achten, ob der Inode gleich ist. Ich schaue nur auf die rechte Seite.-> Zeichenoder nicht. Das Problem tritt also auf, wenn /bin ein symbolischer Link zu /usr/bin ist:

[xiaobai@xiaobai note]$ ls -larthi /bin
16 lrwxrwxrwx. 1 root root 7 Nov 18  2014 /bin -> usr/bin/

Wenn der Benutzer also denkt, dass es sich bei der Datei nicht um einen symbolischen Link oder etwas Ähnliches handelt, kann er sie wie folgt rmen:

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

Und schließlich feststellen, dass es sich bei /usr/bin/seltr2 um dieselbe Datei handelt, und die Rettung anfordern:

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

Gibt es eine einfache Möglichkeit,ls berücksichtigt, dass das übergeordnete Verzeichnis ein symbolischer Link ist, z.B:

[xiaobai@xiaobai note]$ ls -larthi /bin/seltr2
1054051 -rwxrwxrwx. 1 root root 3.4K Oct 30 22:54 /bin/seltr2* -> /usr/bin/seltr2*

Ich schaue nicht immer auf die Inode-Nummer. Gibt es eine bessere Möglichkeit, diese Art potenzieller Fehler zu vermeiden?

Antwort1

Stimmen Sie zu, dass normale Benutzer keine Root-Berechtigungen haben.

Danke für deinen Kommentar - jetzt verstehe ich die Frage - ich habe diesen Beitrag noch einmal bearbeitet

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

Wie Sie oben sehen können, wurde nur der „Symlink“ gelöscht, nicht aber das „Ziel“.

Außerdem scheint es einen Tippfehler in Ihren Dateien zu geben -Ihr symbolischer Link verweist auf „usr/bin“, ABER es sollte „/usr/bin“ sein.

Hoffe, das ist verständlich?

verwandte Informationen