sudoコマンドでroot宛のメールを削除したい

centos_logo Linux
centos_logo

かなり以前の記事(/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にします

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
LinuxUbuntu
スポンサーリンク
adminをフォローする

コメント

タイトルとURLをコピーしました