我目前正在通过星云挑战在利用-exercises.com, 和挑战之一依赖于 cron 运行的脚本。
这是由另一个用户 (flag03) 运行的,而我登录的用户 (level03) 没有运行crontab -u flag03
来查看作业的权限。
提示清楚地表明该脚本是由 cron 运行的。此外,它是目录中唯一的脚本/home/flag03
,因此我们可能会进一步调查。
然而,如果这是现实世界,我就不会知道这个脚本是由 cron 运行的。
因此,问题是,我如何从非特权用户的角度检测任务正在运行?
我已经尝试过以下方法:
while true; do ps au | grep <scriptname> | grep -v grep; done;
这使我能够看到运行很长一段时间的进程,但不能看到几乎立即退出的进程。它还假设我知道脚本的名称。
具体环境是Ubuntu。我无法使用 apt-get,但可以访问 gcc。
有任何想法吗?
答案1
Ubuntu 哪个版本?如果它使用systemd
,您可以依赖由我cron
创建的 cgroup ,因为由 启动的所有进程都将是直接子进程。systemd
cron
获取此信息的选项之一是使用 ps 命令,例如:
ps -eo user,pid,cmd,unit | grep cron.service | grep flag03
答案2
你不能。您可以获得的最接近的是:
inotifywait -m /home/flag03/script
这不会显示执行情况,但会显示何时script
打开或访问。
答案3
也许在 /proc/[0-9]+ 目录中使用 inotifywait 可以让您更好地了解短期运行的进程。
答案4
在这种特定情况下,该文件位于/var/spool/cron/crontabs/flag03
,您可以使用该帐户读取它nebula
。
但level03
没有足够的权限来访问它。