I am seeing this issue as well. In particular I see it with a state file that, when I check, is mode 0640. e.g. error: state file /var/log/rsync/.logrotate.status.rsync_ is world-readable and thus can be locked from other unprivileged users. Skipping lock acquisition..
These are the state and config files -rw-r----- 1 root root 145 Jul 18 01:30 .logrotate.status.rsync_ -rw-r--r-- 1 root root 162 Apr 25 02:30 .logrotate.conf.rsync_ But when I try to reproduce the issue (below), it goes away. testbox-142% ls -al total 1912 4 drwx------ 3 joe staff 4096 Jul 18 09:13 ./ 4 drwxrwxrwt 6 root root 4096 Jul 18 09:08 ../ 4 -rw-r--r-- 1 joe staff 212 Jul 18 09:08 conf 4 -rw-r----- 1 joe staff 71 Jul 18 09:10 state.groupread 4 -rw------- 1 joe staff 112 Jul 18 09:12 state.ownerread 4 -rw-r--r-- 1 joe staff 112 Jul 18 09:13 state.worldread 1884 -rw-r--r-- 1 joe staff 1925683 Jul 18 02:02 test.log % cat conf /var/tmp/test/test.log { missingok create 0644 compress daily rotate 7 # log will be rotated when larger than this, # but only if the minimum time interval has passed minsize 5M } % /usr/sbin/logrotate -v -s state.worldread conf reading config file conf error: state file state.worldread is world-readable and thus can be locked from other unprivileged users. Skipping lock acquisition... Reading state from file: state.worldread Allocating hash table for state file, size 64 entries Creating new state Handling 1 logs rotating pattern: /var/tmp/test/test.log after 1 days (7 rotations) empty log files are rotated, only log files >= 5242880 bytes are rotated, old logs are removed considering log /var/tmp/test/test.log Creating new state Now: 2022-07-18 09:13 Last rotated at 2022-07-18 09:00 log does not need rotating (log has already been rotated) % /usr/sbin/logrotate -v -s state.groupread conf reading config file conf Reading state from file: state.groupread Allocating hash table for state file, size 64 entries Creating new state Handling 1 logs rotating pattern: /var/tmp/test/test.log after 1 days (7 rotations) empty log files are rotated, only log files >= 5242880 bytes are rotated, old logs are removed considering log /var/tmp/test/test.log Creating new state Now: 2022-07-18 09:14 Last rotated at 2022-07-18 09:00 log does not need rotating (log has already been rotated) % /usr/sbin/logrotate -v -s state.ownerread conf reading config file conf Reading state from file: state.ownerread Allocating hash table for state file, size 64 entries Creating new state Creating new state Handling 1 logs rotating pattern: /var/tmp/test/test.log after 1 days (7 rotations) empty log files are rotated, only log files >= 5242880 bytes are rotated, old logs are removed considering log /var/tmp/test/test.log Now: 2022-07-18 09:15 Last rotated at 2022-07-18 09:00 log does not need rotating (log has already been rotated) % cat state.worldread logrotate state -- version 2 "/var/tmp/test//test.log" 2022-2-21-2:0:0 "/var/tmp/test/test.log" 2022-7-18-9:0:0 % cat state.groupread logrotate state -- version 2 "/var/tmp/test//test.log" 2022-2-21-2:0:0 "/var/tmp/test/test.log" 2022-7-18-9:0:0 % cat state.ownerread logrotate state -- version 2 "/var/tmp/test//test.log" 2022-2-21-2:0:0 "/var/tmp/test/test.log" 2022-7-18-9:0:0 At this point I discovered that rotatelog changes the world-readable state file to mode 0640, so a subsequent run works ok. % /usr/sbin/logrotate -v -s state.worldread conf reading config file conf Reading state from file: state.worldread Allocating hash table for state file, size 64 entries Creating new state Handling 1 logs rotating pattern: /var/tmp/test/test.log after 1 days (7 rotations) empty log files are rotated, only log files >= 5242880 bytes are rotated, old logs are removed considering log /var/tmp/test/test.log Now: 2022-07-18 09:24 Last rotated at 2022-07-18 09:00 log does not need rotating (log has already been rotated) I edited away the lines with double slash (//) entry and tested again, that didn't seem to make a difference. % cat state.worldread logrotate state -- version 2 "/var/tmp/test/test.log" 2022-7-18-9:0:0 % cat state.groupread logrotate state -- version 2 "/var/tmp/test/test.log" 2022-7-18-9:0:0 % cat state.ownerread logrotate state -- version 2 "/var/tmp/test/test.log" 2022-7-18-9:0:0 I think it would be helpful if rotatelog printed a message that it was forcibly changing the state file permissions. Otherwise the only way to resolve the confusion is a series of tests such as I have shown here. Vince