[JM:03615] Re: shell server での cron に関して対処が必要なことはありますか

アーカイブの一覧に戻る
matsuand michi****@gmail*****
2022年 5月 12日 (木) 14:41:02 JST


matsuand です。いろいろありがとうございます。

On Thu, May 12, 2022 at 1:00 PM Akihiro Motoki <amoto****@gmail*****> wrote:
...
> > 先日に chmod g+w をして頂いたことだけで、
> > あとはうまくいくであろうと思っています。
> > 何かあれば改めて提示させて頂きます。
>
> とりあえずはなんとか対処できそうな状況でしたので、安心しました。

結論として既にサーバーサイドのソース改修、設定を行って、
本日0時の定時処理以降、実処理を行っています。
エラーは発生していません。

ちなみに chmod g+w に相当する対処は、
cron から呼び出されるスクリプト
webupdate.sh、webupdate-all.sh
の中で umask 002 を実行することにしました。
グループ書き込み権限がこれにより確保されています。

> すでに更新などがされているかもしれませんが、
> && でつなぐと、それぞれ別のサブシェルで実行されるので、
> newgrp が効かないと思います。
> また、 newgrp は新しいシェルセッションに入ってしまうので、
> && 以降は newgrp のセッション終了後にしか実行されないので、
> 目的にあわないかもしれません。

机上でのみ考えていて、全く気づきませんでしたが、
実際にやってみて気づきました。したがって
cron 設定は以下のように sg コマンドを用いることにしました。
# m h dom mon dow command
33 */6 * * * sg linuxjm /home/groups/l/li/linuxjm/jm.git/admin/cron/webupdate.sh
3 1 15 * * sg linuxjm
/home/groups/l/li/linuxjm/jm.git/admin/cron/webupdate-all.sh

---

なお上述の対処を通じて、今回のエラー発生はすべて
解消されると踏んでいたのですが、まだ解消しません。
当初のメールにて、とりあえずの回避策としてお示しした
rsync の --omit-dir-times オプションをつけることで
今のところエラー回避しています。

これまでに判断が二転三転してきたのですが、
現時点において、--omit-dir-times オプションは
どうあっても必要であったのではないか、
と考えるようになりました。rsync 処理においては、
同一所有者による実行でないと、
(同一グループの別ユーザーが実行すると)
rsync: failed to set times on "<directory>": Operation not permitted (1)
のエラーが発生するものと捉えるようになりました。

なお上のように考えるにあたっての大前提は、
/home/groups/l/li/linuxjm ディレクトリ配下の全ファイル
の所有者を amotoki から matsuand へ変更するような
ことは行わない(amotoki のままとする)(ちなみに OSDN
サーバー環境内では amotoki => matsuand への
所有者変更はできない)、というところにあり、この大前提
をひっくり返せば、対処の仕方は変わってくると思います。
(全ファイルを全削除して matsuand が作り直せば
matsuand 所有ファイルとすることができます。)

各位においては、これの真の(?)解決策がお分かりになれば
ご提示頂けたらよいと思いますが、私は今時点の結論で
さしあたり十分に正解に近いと踏んでいて、これ以上の
調査は行いません。断念します。


linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る