如何判断一个目录是由Linux系统还是由root等用户创建的。示例:其中/etc
有一个sys
由 Linux 创建的名为 的目录。我使用 root 登录并创建了目录 sys1。那我该如何区分它们呢?
示例:var 是系统创建的目录,其中 as 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 目录),但这实际上是由碰巧运行脚本的用户完成的。
由“系统”创建的任何内容都可以被视为由 root 创建,但无法判断这是否是自动的。
答案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
没有列出任何内容,尽管我可以告诉您它是由系统安装程序在安装过程中或运行某个包的安装后脚本时创建的。