为什么我收到此 /bin/sh: 1: ^Mno: not found 错误

为什么我收到此 /bin/sh: 1: ^Mno: not found 错误

我已经输入for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done

no crontab for root
no crontab for daemon
...
no crontab for apache2

我经常收到 You have new mail in /var/mail/root 消息

当我读到的时候,都是一样的

From [email protected]  Wed Aug  2 15:40:02 2017
Return-Path: <[email protected]>
X-Original-To: root
Delivered-To: [email protected]
Received: by lxc2014.localdomain (Postfix, from userid 0)
        id 03E571D666; Wed,  2 Aug 2017 15:40:02 +0000 (UTC)
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <root@lxc2014> /dev/.x;^Mno crontab for root
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <[email protected]>
Date: Wed,  2 Aug 2017 15:40:02 +0000 (UTC)

/bin/sh: 1: ^Mno: not found

我知道 ^M 是 \r 但为什么 cron 搜索这个文件......

答案1

当你收到这样的邮件时

From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <root@lxc2014> /dev/.x;^Mno crontab for root
X-Cron-Env: <LOGNAME=root>

/bin/sh: 1: ^Mno: not found

并且您无法判断哪个 crontab 包含有问题的命令,您可以在标准位置 grep 查找命令片段:

grep -r "no crontab" /etc/cron* /var/spool/cron | cat -vet

cat -vet显示任何嵌入的控制字符,否则这些控制字符将不可见或导致光标移动。

就您而言,您在以下位置找到了该命令

/var/spool/cron/crontabs/root:* * * * * /dev/.x;^Mno crontab for root$

该文件包含以下内容(为了可读性添加了换行符):

# DO NOT EDIT THIS FILE - edit the master and reinstall.\n
# (- installed on Thu Jul 20 20:50:12 2017)\n
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)\n
* * * * * /dev/.x;^Mno crontab for root

由于嵌入的Ctrl+M字符,运行crontab -u root -l似乎只显示no crontab for root. 这看起来像是有人试图隐藏 crontab 条目。我建议熟悉安全和取证的人检查您的系统,以确定它是否已受到损害。

您可以使用 删除此 crontab crontab -u root -r

您提到该字符串/dev/.x不存在,并且该字符串不会出现在 下的任何文件中/etc,但请继续监视您的系统以查看这些文件是否再次出现。这将有力地表明您的系统仍然受到威胁。

如果可能,请安装您的发行版提供的所有安全补丁。

相关内容