読者です 読者をやめる 読者になる 読者になる

apacheユーザでcronを実行する方法

linux

まずやりたかったことはユーザがアップロードした画像をcronで1日1回加工する。
しかしアップロード画像の所有者はapacheで、権限は「644(rw-r--r--)」であったため作業用アカウントではファイルへの上書きができない状況である

そこでまず考えたのは
上書きできるようにファイルの権限を変えてしまおうと考えた。
が、その場合はアップロードプログラムの変更が必要だし、権限甘くして解決するというのもどうも、、、


次に考えたのは
画像加工処理をwebから見える箇所に設置して1日1回そのスクリプトをたたくcronを設定しようかと考えた。
が、これもなんか無駄だし、厳密にはアクセス制限とかもしなくてはならないし、、、


で、apacheユーザでcron設定すればいいだけだったんですね、、、
% su - apache
This account is currently not available.

!!? ログインシェルがnologinだとログインできないようだ、、、
% grep apache /etc/passwd
apache:x:48:48:Apache:/var/www:/sbin/nologin


結果、以下でユーザ指定でのcronが設定できたのでこれで対応しました
% crontab -u apache -e

ちなみに以下のページに書いてあったのだが以下でログインできたんですね
su -s /bin/bash - apache

参考:http://kazmax.zpp.jp/linux/nologin_to_su.html