
私はちょうどシナリオを見つけました(またはLinux初心者) ユーザーが重複ファイルだと思い、誤って rm ファイルを実行する可能性があります。次の 2 つのバイナリ ファイルがあるとします。
[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*
私はいつも inode 番号を見ているわけではありません。このような潜在的な間違いを避けるより良い方法はあるでしょうか?
答え1
一般ユーザーにルート権限を与えないことに同意します。
コメントありがとうございます。質問の意味が分かりました。この投稿を再編集しました。
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」であるべきです。
これが意味を成すといいのですが?