【问题标题】:Cron Job File Creation - Created File PermissionsCron 作业文件创建 - 创建的文件权限
【发布时间】:2016-02-01 16:30:06
【问题描述】:

我正在运行一个每小时的 cron 作业进行测试。该作业运行一个名为“rotateLogs”的 python 文件。 Cron 不能使用扩展,所以文件的第一行是#!/usr/bin/python。这个 python 文件(fileA)然后在计算机的其他地方调用另一个 python 文件(fileB)。 fileB 注销到带有时间戳等的日志文件。但是,当 fileB 作为 cron 作业通过 fileA 运行时,它会将其日志文件创建为 rw-r--r-- 文件。

问题是,如果我尝试从 fileB 登录文件,除非您使用 sudo 权限运行它们,否则它们无法写入文件。所以我正在寻找一些方法来处理这个问题。理想情况下,将文件简单地制作为 rw-rw-r-- 文件会很好,但我不知道如何使用 cron 来做到这一点。感谢您的帮助。

编辑:rotateLogs(故意不是 .py):

#!/usr/bin/python
#rotateLogs
#Calls the rotateLog function in the Communote scripts folder
#Designed to be run as a daily log rotation cron job
import sys,logging
sys.path.append('/home/graeme/Communote/scripts')
import localLogging
localLogging.localLog("Hourly log",logging.error)
print "Hello"

crontab 中没有命令,但它在每小时 cron 上正常运行(每小时 17 分钟)。

FileB的相关函数:

def localLog(strToLog,severityLevel):
    #Allows other scripts to log easily
    #Takes their log request and appends it to the log file
    logging.basicConfig(filename=logDirPath+getFileName(currDate),format="%(asctime)s %(message)s")
    #Logs strToLog, such as logging.warning(strToLog)
    severityLevel(strToLog)
    return

我不确定如何找到 cronjob 的用户/组,但它只是在 /etc/cron.hourly 中,我认为是 root?

【问题讨论】:

  • 感谢您的评论,但这没有用。我在 /etc/profile 和 ~/.bashrc 中都将它设置为 002,但它仍然将文件设置为 644。
  • 我认为如果您可以对问题进行以下操作,那么可能会更容易回答:1)crontab 行; 2)rotateLogs(.py)中的代码调用fileB,3)fileB中的代码创建/附加日志文件;可能还有 4) cronjob 的用户/组/shell(以及日志文件的用户/组,如果不同)。可能很简单,比如使用#!/usr/bin/env python,或者在某处添加chmod g+w logfile,或者os.umask(002)
  • 好电话,我现在就更新。
  • 已更新。 /env python 不会改变任何东西。接下来我会尝试 os.umask。感谢所有这些想法,一个可能会起作用。
  • “Cron 不能使用扩展” - 这是什么意思? Unix 不使用文件扩展名。

标签: python cron file-permissions


【解决方案1】:

事实证明,cron 没有获取任何 shell 配置文件(/etc/profile~/.bashrc),因此必须在 cron 调用的脚本中设置 umask。

使用用户级crontabs(crontab -e)时,umask可以简单设置如下:

0 * * * * umask 002; /path/to/script

即使它是一个 python 脚本,这也可以工作,因为os.umask 的默认值继承自 shell 的 umask。

但是,在/etc/cron.hourly等中放置一个python脚本,除了python脚本本身之外,没有办法设置umask:

import os
os.umask(002)

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2019-03-16
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多