umask中umask怎么在大型日志轮转工具logrotate中配置create参数覆盖全局umask

夜浩小哥_2123

夜浩小哥_2123

2026-07-28

527人浏览

原创

logrotate 的 create 参数直接指定文件权限和归属,完全绕过 umask 机制;语法为 create mode owner:group(如 0644 www-data:www-data),mode 必须是八进制,且需显式声明用户和组。

umask中umask怎么在大型日志轮转工具logrotate中配置create参数覆盖全局umask

logrotate 的 create 参数不依赖也不覆盖系统全局 umask,它是独立、显式地定义新日志文件的权限和归属。换句话说:create 是硬编码权限,完全绕过 umask 机制。这不是“覆盖”,而是“替代”——它直接调用 open() 系统调用时传入指定 mode(如 0644),内核据此创建文件,根本不会参考当前 shell 或进程的 umask 值。

所以,你不需要、也不能在 logrotate 配置里“配置 umask 来影响 create”。正确做法是:直接在 create 行写死你需要的权限和用户组,确保与应用运行身份严格匹配。


create 参数必须显式声明权限和归属

create 的语法为:

create mode owner:group

或(兼容旧版本):

create mode owner group
  • mode 是八进制数字(如 0644),不是 umask,它表示最终文件权限(例如 0644 → -rw-r--r--)
  • owner:group 明确指定属主和属组,避免依赖当前执行用户(通常是 root)

✅ 正确示例(Nginx 日志):

/var/log/nginx/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    create 0644 www-data:www-data
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}

⚠️ 错误写法(以为能“继承 umask”):

Cartoonize AI
Cartoonize AI

一款AI图像与设计工具,主要用于在线将照片快速转换为卡通、动漫、素描等多种艺术风格的 AI 工具,适合需要提升相关任务效率的用户。

下载
create 644 www-data:www-data   # 缺少前导 0,会被解释为十进制 644 → 权限混乱
create 0644                      # 没有 owner:group → 新文件归 root:root,应用可能无权写入

为什么不能靠全局 umask 控制 logrotate 创建的文件?

  • logrotate 默认以 root 身份运行(通过 cron),其子进程调用 open() 时传入的是 create 指定的 mode,不受 shell umask 影响;
  • 即使你在 /etc/login.defs 或 PAM 中设了 umask 0077,它只对交互式登录或 PAM 启动的 shell 生效,对 logrotate 这类由 cron 直接 fork 的服务进程无效;
  • 更关键的是:logrotate 创建日志文件的时机,是在轮转后、应用尚未重新打开文件前。若权限/归属错,应用(如 rsyslog、nginx)会因“Permission denied”静默失败,日志中断却无报错。

生产环境安全实践建议

  • 权限最小化:

    • 普通服务日志 → create 0640 user:group(如 0640 nginx:adm)
    • 审计类日志(如 auditd)→ create 0640 root:audit,再配合 ACL 或组权限控制读取范围
    • 密钥/凭证相关日志(极少见,但需警惕)→ create 0600 root:root
  • 避免 missingok + create 组合陷阱:
    若日志路径不存在或被误删,missingok 会让 logrotate 跳过整个轮转流程,包括 create 步骤 → 新文件不会生成 → 应用持续写入失败。
    ✅ 替代方案:用 notifempty(空日志不轮转)+ 确保路径存在(可通过 prerotate 脚本 mkdir -p)

  • 软链接要特别处理:
    如果日志路径是软链(如 /var/log/app/current.log → /var/log/app/20260721.log),logrotate 默认操作目标文件,而非链接本身。需加:

    copytruncate  # 截断原文件,保持链接指向不变
    # 或
    copy          # 复制内容并重命名,再清空原文件(更安全,但需应用支持重开)

验证是否生效?别只看 umask

改完配置后,强制执行一次并检查实际文件:

sudo logrotate -f /etc/logrotate.d/your-config
ls -l /var/log/your-app.log

应看到类似:

-rw-r----- 1 youruser yourgroup 1234 Jul 21 09:00 /var/log/your-app.log

而不是 -rw-rw-rw- 或归属 root:root。

不复杂但容易忽略

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3790

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3273

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2373

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5710

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5362

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3173

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2685

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2899

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习