如何找到我用“gedit”编辑过的所有系统文件?

如何找到我用“gedit”编辑过的所有系统文件?

起初我打算问“查找安装后我创建/更改的所有文件?”但这是(查找文件系统上我编辑或创建的所有文件) 它没有令人满意的答案,因为它包括下载的并且从未改变的内容以及 Nautilus 在我不知情的情况下以我的用户 ID 创建的数千个缩略图。

之所以有这种需要,是因为我编写了一个巧妙的脚本来关闭我笔记本电脑上始终有电的 USB 端口,以赢得赏金。

现在我很不高兴我的设计上始终通过 USB 端口供电在挂起或关机期间关闭电源。我想追踪并恢复我设置的那些 systemd 配置的程序gedit。由于记忆力差,我记不住我更改了什么。

我如何找到我创建或更改的所有文件gedit

我已经创建了一个名为的包装脚本gsu,用于pkexec替换gksu gedit如何基于 pkexec 创建新的“gksu”命令?)。我将更改它以记录所有系统文件的最后编辑日期。

同时有人在该链接中暗示,所有使用 gedit 的 sudo 命令都记录在某个地方。问题是在哪里以及如何简洁地列出它们,grep或者其他什么?

请注意,我可以通过其他耗时的方法找到这个问题,但我觉得这也是许多其他人可能遇到的一个重要问题。

答案1

我刚刚使用此命令编辑了一个“系统”文件来打开该文件:

sudo -H gedit /etc/gtk-3.0/settings.ini

然后我立即查看了最后一条记录~/.local/share/recently-used.xbel,看到了以下内容:

  <bookmark href="file:///etc/gtk-3.0/settings.ini" added="2016-11-14T02:04:05Z" modified="2016-11-14T02:04:05Z" visited="2016-11-14T02:04:05Z">
    <info>
      <metadata owner="http://freedesktop.org">
        <mime:mime-type type="text/plain"/>
        <bookmark:groups>
          <bookmark:group>gedit</bookmark:group>
        </bookmark:groups>
        <bookmark:applications>
          <bookmark:application name="gedit" exec="&apos;gedit %u&apos;" modified="2016-11-14T02:04:05Z" count="1"/>
        </bookmark:applications>
      </metadata>
    </info>
  </bookmark>

限制:

  • 内容recently-used.xbel没有透露你如何调用gedit
  • 文件不一定需要用 来编辑或创建gedit;只需用 查看文件gedit即可列出该文件。

目视检查文件似乎比使用代码提取所需信息更安全。类似的东西grep -B5 '<bookmark:group>gedit</bookmark:group>' recently-used.xbel | grep 'bookmark href=' | grep -v '///home/'可能有助于隔离由 编辑的系统文件。但这仅在是该特定文件在 中列出的第一个应用程序gedit时才有效。如果您之前使用其他写入 的应用程序编辑过该文件,则可能无法捕获该文件。geditbookmark:grouprecently-used.xbel

    <bookmark:groups>
      <bookmark:group>geany</bookmark:group>
      <bookmark:group>gedit</bookmark:group>
    </bookmark:groups>

无论如何,这是该命令的输出grep

~/.local/share $ grep -B5 '<bookmark:group>gedit</bookmark:group>' recently-used.xbel | grep 'bookmark href=' | grep -v '///home/'
  <bookmark href="file:///usr/share/themes/Adwaita/gtk-2.0/gtkrc" added="2016-10-15T09:38:31Z" modified="2016-10-15T09:38:31Z" visited="2016-10-15T09:38:31Z">
  <bookmark href="file:///usr/share/themes/Numix/gtk-2.0/gtkrc" added="2016-10-15T09:40:25Z" modified="2016-10-15T09:40:25Z" visited="2016-10-15T09:40:25Z">
  <bookmark href="file:///usr/share/themes/Lubuntu-default/gtk-3.0/gtk-lubuntu.css" added="2016-10-27T03:26:38Z" modified="2016-10-27T03:26:38Z" visited="2016-10-27T03:26:38Z">
  <bookmark href="file:///etc/gtk-3.0/settings.ini.dpkg-old" added="2016-11-14T02:03:44Z" modified="2016-11-14T02:03:44Z" visited="2016-11-14T02:03:44Z">
  <bookmark href="file:///etc/gtk-3.0/settings.ini" added="2016-11-14T02:04:05Z" modified="2016-11-14T02:04:05Z" visited="2016-11-14T02:04:05Z">
~/.local/share $ 

答案2

默认情况下,所有sudo调用都会被记录,而不仅仅是sudo gedit。请参阅/var/log/auth.log,或在现代系统中journalctl $(which sudo)。同样,对于pkexecjournalctl $(which pkexec)

这个问题sudo有出现在的示例/var/log/auth.log

Jul 16 11:50:56 laptop sudo: mv : 3 incorrect password attempts ; TTY=unknown ; PWD=/home/mv ; USER=root ; COMMAND=/usr/bin/env -u LANGUAGE LC_MESSAGES=C /bin/sh /tmp/tmpBHXhYV/:script:

您需要的是COMMAND=...部分。

相关内容