我对 Linux 整体上还很陌生,所以这个问题可能比较愚蠢 - 但我仍然想知道答案
今天早上,当我查看我的 /var/log/auth.log(我被告知要养成习惯)时,我注意到它每小时记录一次如下事件:
May 13 20:17:01 Ubuntu-Server-1401-VM CRON[2280]: pam_unix(cron:session): session opened for user root by (uid=0)
May 13 20:17:01 Ubuntu-Server-1401-VM CRON[2280]: session closed for user root
然后,在我打开日志之前,这种情况每小时都会在 x:17:01 发生一次。在此期间(日志条目发生的时间),与此服务器的 SSH 连接一直保持活动状态。我最好的猜测是,我的 SSH 客户端每小时都会查看它是否可以获得 root 访问权限,以此来验证与服务器的 SSH 连接 - 但我希望安全起见。有人知道这是什么吗?
答案1
假设你没有对默认cron
设置做任何更改,这就是你的/etc/crontab
运行情况。在我的 Ubuntu 10.04.3 LTS 服务器上,其内容包括:
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
因此,cron
每小时唤醒一次并运行位于 中的任何脚本/etc/cron.hourly
。您可能没有任何脚本,这就是它不执行任何操作的原因。它只是运行一个root
执行run-parts
然后再次关闭会话。
答案2
crond
当守护进程在后台运行任务时,这些日志条目由 PAM 库写入。crond
代表系统和系统上的用户按计划运行作业。
每个用户都有自己的crontab
配置文件,可以使用命令编辑crontab -e
或使用 显示crontab -l
。系统管理员还可以通过大量/etc/
文件和目录配置作业;/etc/cron.d/
为服务提供一个方便的地方来放置自己的配置,并/etc/crontab
驱动hourly
、daily
和weekly
目录,以及运行管理员可能选择运行的任何内容。
crond
在运行作业之前,将用户更改为正确的用户(在文件/etc/crontab
和/etc/cron.d/
目录中指定,或从用户提供的文件中指定);它使用crontab
聚丙烯酰胺系统更改用户。
PAM 提供了一个单一位置来配置不同的用户身份验证和授权方式,并提供会话设置,以及提供更改密码(或其他身份验证令牌)的方法。每个使用 PAM 的服务都有一个配置文件,其中/etc/pam.d/
描述了“登录”用户时要使用哪些 PAM 模块。
我的/etc/pam.d/cron
文件如下所示:
# The PAM configuration file for the cron daemon
@include common-auth
# Read environment variables from pam_env's default files, /etc/environment
# and /etc/security/pam_env.conf.
session required pam_env.so
# In addition, read system locale information
session required pam_env.so envfile=/etc/default/locale
@include common-account
@include common-session-noninteractive
# Sets up user limits, please define limits for cron tasks
# through /etc/security/limits.conf
session required pam_limits.so
这可确保为用户配置的限制在用户通过 运行任务时应用于用户的任务cron
。如果您想要更改每个服务的限制,您可以pam_limits.so
在此文件中配置您自己的限制,并应用与 ssh 登录 ( ) 或控制台登录 ( )conf=/etc/security/cron-limits.conf
不同的限制。/etc/pam.d/sshd
/etc/pam.d/login