root以外のユーザーでcrontabを編集できない

root以外のユーザーでcrontabを編集できない

root以外のユーザー(この場合はpostgres)でDebianサーバーでコマンドを使用すると、crontab -e編集できません。"/tmp/crontab.SJlY0Y/crontab" [Permission Denied]

crontab -l一方、うまく動作します。この問題をどのように解決できますか?

現在の権限は次のとおりです。

$ ls -l /tmp/crontab.SJlY0Y/crontab
-rw------- 1 root postgres 1.2K Aug  3 11:44 /tmp/crontab.SJlY0Y/crontab
$ ls -l /var/spool/cron
total 12K
drwxrwx--T 2 daemon daemon  4.0K Sep 12  2012 atjobs
drwxrwx--T 2 daemon daemon  4.0K Jun  9  2012 atspool
drwx-wx--T 2 root   crontab 4.0K Aug  3 11:15 crontabs
$ ls -l /var/spool/cron/crontabs
total 12K
-rw------- 1 git      crontab 1.3K Mar  2 16:48 git
-rw------- 1 postgres crontab 1.4K Aug  3 11:15 postgres
-rw------- 1 root     root    2.3K Jul 20 20:32 root
$ ls -l /usr/bin/crontab
-rwsr-xr-x 1 root root 36K Jul  3  2012 /usr/bin/crontab
$ ls -ld /tmp/
drwxrwxrwt 6 root root 4.0K Aug  3 11:43 /tmp/

ベストアンサー1

$ ls -l /usr/bin/crontab
-rwsr-xr-x 1 root root 36K Jul  3  2012 /usr/bin/crontab

所有権と許可は実際に

-rwxr-sr-x 1 root crontab 35880 Jul  3  2012 /usr/bin/crontab

Debian sarge から、crontab必要に応じて setuid ルートではなく setgid crontab です。バグ #18333

これが問題の原因です。プログラムはsetuidではなくsetgidが実行されることを期待しているため、呼び出し元のユーザーとグループではなく呼び出し元のデフォルトグループであるユーザーとグループで一時crontabファイルを生成します。rootcrontab

cronパッケージを再インストールしてください。

apt-get --reinstall install cron

(ルートとして)。/var/spool/cron/crontabs正しい権限と所有権があることを確認してください。

drwx-wx--T 2 root crontab 4096 Oct  8  2013 /var/spool/cron/crontabs

将来、システムファイルの権限を混同しないでください。

おすすめ記事