博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
logrotate 配置文件强制为 0644 属性
阅读量:4222 次
发布时间:2019-05-26

本文共 1832 字,大约阅读时间需要 6 分钟。

在一次包更新后,发现 Nginx 服务器的每晚日志切割不再进行了。找遍了各种地方,最后在一次偶然的ls -l中发现:

# ll /etc/logrotate.d/total 64-rw-r--r-- 1 root root  326 2012-08-04 06:08 apache2-rw-r--r-- 1 root root   84 2009-02-08 05:18 apt-rw-r--r-- 1 root root   79 2008-12-05 17:15 aptitude-rw-r--r-- 1 root root  330 2008-03-08 05:36 atop-rw-r--r-- 1 root root  232 2011-11-10 14:33 dpkg-rw-r--r-- 1 root root  267 2013-01-31 13:20 foreman-proxy-rw-r--r-- 1 root root  151 2007-09-29 19:23 iptraf-rw-r--r-- 1 root root  880 2012-10-29 17:10 mysql-server-rwxr-xr-x 1 root root  356 2012-08-05 00:17 nginx-rw-r--r-- 1 root root 1061 2008-03-08 05:36 psaccs_atop-rw-r--r-- 1 root root  512 2008-03-08 05:36 psaccu_atop-rw-r--r-- 1 root root  260 2012-06-23 00:52 rabbitmq-server-rw-r--r-- 1 root root  126 2012-06-09 00:22 redis-server-rw-r--r-- 1 root root  515 2012-09-27 02:40 rsyslog-rw-r--r-- 1 root root  285 2008-11-18 21:20 stunnel4

这里的nginx多了可执行权限。于是我尝试性的执行了chmod -x nginx;结果居然真的恢复了。

这事儿说起来蛮奇怪了。于是去  找来 logrotate 的源码看,结果在logrotate-3.8.3/config.c 里发现这么一段:

661                 if ((sb.st_mode & 07533) != 0400) {
662 message(MESS_DEBUG, 663 "Ignoring %s because of bad file mode.\n", 664 configFile); 665 close(fd); 666 return 0; 667 }

只有文件权限是 0644 的时候,配置文件才会被读取!0755 的与结果是 0511,不等于 0400。相关 st_mode 的内容可以通过 man 2 stat 查看。

可以写一小段 perl 代码来验证:

#!/usr/bin/perlmy $mode = (stat($ARGV[0]))[2];printf "Permissions are %04o\n", $mode & 07533;

在  里,看到如下一段话:

2.1 -> 2.2:    - ignore nonnormal files when reading config files from a directory    - (these were suggested and originally implemented by      Henning Schmiedehausen)

不过比较早了,就懒得从历史堆里再翻为什么当初会有这么个提议了…………

http://chenlinux.com/2013/03/18/logrotate-configuration-files-mode/

转载地址:http://uvemi.baihongyu.com/

你可能感兴趣的文章
js获取url参数值的两种方式详解
查看>>
java中System.getProperty()方法详解
查看>>
MyEclipse设置默认注释的格式
查看>>
同一服务器部署多个tomcat时的端口号修改详情
查看>>
常用正则表达式集锦
查看>>
Spring定时器的时间表达式
查看>>
fastdfs简介
查看>>
主键和唯一索引的区别
查看>>
linux下使用yum安装gcc详解
查看>>
aclocal安装依赖的库
查看>>
String和常量池值的变化
查看>>
FastDFS 安装及使用详解
查看>>
ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)解决方案
查看>>
Host 'XXX' is not allowed to connect to this MySQL server解决方案
查看>>
corosync pacemaker 配置高可用集群(一)
查看>>
5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO
查看>>
nginx(一) nginx详解
查看>>
nginx(二) nginx编译安装 及 配置WEB服务
查看>>
nginx(三) nginx配置:反向代理 负载均衡 后端健康检查 缓存
查看>>
nginx(四) nginx+keepalived 实现主备+双主热备模型的高可用负载均衡代理服务
查看>>