ディレクトリがシステムまたはrootユーザーによって作成されたかどうかを確認するには?

ディレクトリがシステムまたはrootユーザーによって作成されたかどうかを確認するには?

ディレクトリが Linux システムによって作成されたのか、ルートなどのユーザーによって作成されたのかを確認する方法。例:Linuxで作成したディレクトリ/etcがあります。sysrootとしてログインし、sys1ディレクトリを作成しました。それでは、どのように区別できますか?

例:varはシステムによって作成されたディレクトリ、testはrootユーザーを使用して作成されたユーザーです。

drwxrwxrwx 34 root root 4096 Aug 25 22:52 var
drwxr-xr-x 2 root root 4096 Aug 25 23:19 test

答え1

「システム作成ディレクトリ」という概念はないと思います。システムをインストールするとき、通常、インストールメディアは作業を行います。つまり、結果(たとえば、生成された/ etcディレクトリ)が表示されますが、実際にはスクリプトを実行しているユーザーが実行します。

「システム」によって生成されたすべての項目は、ルートによって生成されたと見なすことができますが、これが自動かどうかを知る方法はありません。

答え2

「システムによって生成される」の意味に応じて、パッケージングシステムを使用して特定のディレクトリがどのように生成されたかを確認できます。

たとえば、RPMベースのシステム(RedHat、Fedora、CentOSなど)では次のようになります。

rpm -qf /var

次のようなものを与える

filesystem-2.4.100.x86_64

filesystemはパッケージの一部としてインストールされていることを示します。

rpm -qf /test

与えることができる

file /test is not owned by any package

基本インストールの一部ではないことを示します(人以外のプログラムによって生成される可能性があります)。

同様に、Aptベースのシステム(Debian、Ubuntuなど)では、次のものを使用できます。

dpkg -S /var

同じチェックを実行してください。

答え3

システムが作成したファイル(ディレクトリを含む)とユーザーが作成したファイル(ディレクトリを含む)はどちらも最終的に同じシステムコールであるため違いはありません。ファイルまたはディレクトリを作成したプロセスの所有者が誰であるかを後で知る方法はありません。ところで、「Linuxシステム」は主にユーザーです:特別なユーザーはいません。また、ディレクトリとファイルの所有者はインストール時に常に設定されるため、以降は表示されません。

パッケージマネージャがある場合は、Debianパッケージマネージャなどを使用してパッケージインストールでディレクトリが作成されたことを確認できます。

dpkg -S /var

複数のパッケージがリストされており、存在しない場合はすべてディレクトリを作成します。しかし、

dpkg -S /opt

何もリストされていません。ただし、インストール中または特定のパッケージのインストール後にスクリプトを実行すると、システムインストーラによって生成されることがわかります。

関連情報