web-dev-qa-db-ja.com

logrotateはログのローテーションに失敗します:所有者の設定エラー

最近、logrotateがログをローテーションしないことに気付きました。

user1@Host:~$ /usr/sbin/logrotate /home/user1/logrotate.conf -vはエラーを出します:

error: error setting owner of /home/logs/mylog.log.1 to uid 10111 and gid 10111: 
Operation not permitted
error: error creating output file /var/lib/logrotate/status.tmp:
Permission denied

gidは私を混乱させます。user1は異なるgidを持つグループのメンバーにすぎないためです:

user1@Host:~$ id
uid=10111(user1) gid=1001(mygroup) groups=1001(mygroup)

ただし、user1という別のグループがありますが、前述したように、実際のユーザーuser1はそのメンバーではありません。

user1@Host:~$ cat /etc/group | grep user1
user1:x:10111

ここでは簡単なことですが、見えません。

更新:logrotate.confは次のようになります。

/home/logs/*.log { rotate 7 daily copytruncate compress notifempty }

user1@Host:~$ ls -al /home/logs/ -rw-r--r-- 1 user1 mygroup 190826983 Dec 18 06:05 mylog.log

5
hdf

Logrotates createディレクティブを使用して、新しく作成されたログファイルの権限を設定してみてください。それを使用するには

/home/logs/*.log {
    rotate 7
    daily
    create 0777 user1 user1
    ^^^^^^^^^^^^^^^^^^^^^^
    copytruncate
    compress
    notifempty
 }

man logrotateから

 create mode owner group, create owner group

ローテーションの直後(ポストローテーションスクリプトが実行される前)に、ログファイルが作成されます(ローテーションしたばかりのログファイルと同じ名前で)。 modeはログファイルのモードを8進数(chmod(2)と同じ)で指定し、ownerはログファイルを所有するユーザー名を指定し、groupはログファイルが属するグループを指定します。ログファイルの属性はいずれも省略できます。その場合、新しいファイルの属性は、省略された属性の元のログファイルと同じ値を使用します。このオプションは、nocreateオプションを使用して無効にできます。

2
the_velour_fog