起初我打算问“查找安装后我创建/更改的所有文件?”但这是(查找文件系统上我编辑或创建的所有文件) 它没有令人满意的答案,因为它包括下载的并且从未改变的内容以及 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="'gedit %u'" 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
时才有效。如果您之前使用其他写入 的应用程序编辑过该文件,则可能无法捕获该文件。gedit
bookmark:group
recently-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)
。同样,对于pkexec
:journalctl $(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=...
部分。