かなり以前の記事(/var/spool/mail/root を空(削除)にする)で、root宛のメールをCronで削除する記事を書きましたが、一般ユーザーでsudoコマンドを利用すると以下のようなエラーになります
$ sudo cat /dev/null > /var/spool/mail/root -bash: /var/spool/mail/root: Permission denied
上記のコマンドを実行すると、Permission denied がでます。その原因は以下です
sudo cat /dev/null
までは root 権限で実行されています。- しかし
>
リダイレクトは シェルが解釈 するため、sudo
の影響を受けず、通常ユーザー権限で/var/spool/mail/root
に書き込もうとしてしまい、Permission denied になります。
対策としては、truncate コマンドを使うことで一般ユーザーでもCronで「/var/spool/mail/root」を空にできます。
一般ユーザーでsudoコマンドがパスワードなしで実行できる環境なら、以下のコマンドで「/var/spool/mail/root」の空にできます
$ crontab -e 0 6 * * * sudo /usr/bin/truncate -s 0 /var/spool/mail/root
truncate は ファイルサイズを変更するためのコマンドで、「truncate -s 0 <ファイル名>」で指定したファイルのサイズを0にします
コメント