【问题标题】:logrotate says permission denied when rotating log / re-creating log filelogrotate 在旋转日志/重新创建日志文件时表示权限被拒绝
【发布时间】:2011-09-06 15:42:14
【问题描述】:

我是 linux 机器上的 logrotate 新手...这是我在应用程序的 logrotate.d 文件中设置的内容:

/var/log/myapp.log {
daily
missingok
create 0660 root utmp
rotate 1
}

我使用 chmod 直接从 bash shell 为运行相关应用程序的帐户设置了 myapp.log 文件的所有者权限。

应用程序首次运行时,一切正常。它记录得很好,一切都很好。但是当日志被轮换时,它会删除日志文件,然后尝试重新创建日志文件并给出权限被拒绝错误:

/bin/bash: /var/log/myapp.log: Permission denied

我知道我在 logrotate 配置文件或 chmod 或其他什么方面做错了...有人能指出我正确的方向并帮助我解决问题吗?

【问题讨论】:

    标签: linux file-permissions chmod permission-denied logrotate


    【解决方案1】:

    我使用 chmod 直接从 bash shell 为运行相关应用程序的帐户设置了 myapp.log 文件的所有者权限。

    ...所以除非“运行相关应用的帐户”是root,否则配置选项

    create 0660 root utmp
    

    是错误的,因为那是要求logrotate 创建一个新的myapp.log(在将原始myapp.log 旋转为myapp.log.0 之后),权​​限为0660,由用户root 和组@987654329 拥有@。将这些替换为您的应用所需的属性应该可以解决问题。

    【讨论】:

    • 我怀疑这...不幸的是,我不熟悉我需要设置的权限。您有任何链接、信息或建议尝试什么?我只需要记录/旋转 /var/log 中的一个文件
    • man chmod 解释数字权限模式;在它处于工作状态时尝试ls -l /var/log/myapp.log 以显示当前权限(以文本形式,例如-rw-r----- 对应于0640)、用户和组。 (或者,man logrotate 建议仅使用不带附加参数的create 将导致它使用与原始日志文件相同的属性。)
    • 现在一切正常。谢谢你的帮助,马修!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2020-10-26
    • 2015-08-02
    • 2013-03-19
    • 2018-02-20
    • 2023-04-07
    相关资源
    最近更新 更多