更新:この問題は最終的には回答されません。私は別のディストリビューションに移動して以来、この問題を観察していません。その時の洞察に満ちた答えでそれを修正することはできませんでしたが、あなたの燃費は変わるかもしれません(YMMV)。
crontab -e
そして、crontab -l
うまく動作します。
$ crontab -l | grep -v '^#'
* * * * * /usr/bin/env
* * * * * echo 'Hello from crontab'
ただし、次のようなメッセージが毎分表示され/var/log/syslog
ます。
Mon DD hh:mm:01 username CRON[PID]: Permission denied
したがって、crontabが読み取られていますが、どういうわけかまったく実行できません(もちろん、同じユーザーとしてログインしたときにコマンドを確認しました)。なぜか?
/etc/cron.allow
そして/etc/cron.deny
存在しません。
crontabが設定されたグループsetuid:
$ stat --format '%A %U %G' /usr/bin/crontab
-rwxr-sr-x root crontab
crontabsディレクトリには適切な権限があるようです:
$ stat --format '%A %U %G' /var/spool/cron/crontabs
drwx-wx--T root crontab
crontab自体は私が所有しています(当然のことながら、私は編集できるので)。
$ sudo stat --format '%A %U %G' /var/spool/cron/crontabs/$USER
-rw------- username crontab
私はグループのメンバーではありませんcrontab
。
これらの行は/var/log/auth.log
毎分表示されます(@Alaaに感謝):
Mon DD hh:mm:01 username CRON[1752]: pam_unix(cron:session): session opened for user username by (uid=0)
Mon DD hh:mm:01 username CRON[1752]: PAM bad jump in stack
PAMが壊れているのでしょうか?pam-auth-update
(@coteyrに感謝)これらすべてをリストし、それらすべてが有効になっています。
- Unix認証
- GNOMEキーリングデーモン-ログインキーリング管理
- eCryptfsキー/マウント管理
- ConsoleKitセッション管理
- 継承可能な機能管理
安全に無効にできるものはありますか?暗号化されたファイルシステムを使用していません。
私が実行しようとしたDebianバグエントリに基づいてdebconf-show libpam-runtime
、次のエラーメッセージが表示されました。
debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied
の内容/etc/pam.d/cron
:
# The PAM configuration file for the cron daemon
@include common-auth
# Read environment variables from pam_env's default files, /etc/environment
# and /etc/security/pam_env.conf.
session required pam_env.so
# In addition, read system locale information
session required pam_env.so envfile=/etc/default/locale
@include common-account
@include common-session-noninteractive
# Sets up user limits, please define limits for cron tasks
# through /etc/security/limits.conf
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid
言及したファイルは(/etc/environment
、pam_env.so
、/etc/default/locale
、pam_limits.so
、pam_succeed_if.so
)私のすべてのユーザーによって読み取り可能です。
Ubuntu 13.04を使用する別のホストで、同じユーザーcrontab、いいえ/etc/cron.{allow,deny}
、上記と同じ権限を持ち、crontab
グループのメンバーではない場合、正常に動作します(コマンドのログは記録されますが、の出力はログに記録されません/var/log/syslog
)。
最初のcrontab行を変更することにより:
* * * * * /usr/bin/env >/tmp/env.log 2>&1
/ tmpが誰でも書き込み可能であることを確認します。
$ sudo -u nobody touch /tmp/test
$ ls /tmp/test
/tmp/test
$ ls -ld /tmp
drwxrwxrwt 15 root root 12288 May 27 10:18 /tmp
私がいることを確認したのcrontabコマンドが全く実行されません。Permission denied
メッセージはまだに表示/var/log/syslog
が、/tmp/env.log
作成されません。
設定のランダムなリストに/etc/pam.d
基づいて、次の不一致を見つけました。
$ grep '^[^#]' /etc/pam.d/sshd
@include common-auth
account required pam_nologin.so
@include common-account
@include common-session
session optional pam_motd.so # [1]
session optional pam_mail.so standard noenv # [1]
session required pam_limits.so
session required pam_env.so # [1]
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
@include common-password
$ grep '^[^#]' /etc/pam.d/common-session
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session optional pam_umask.so
session required pam_unix.so
session optional pam_ecryptfs.so unwrap
session optional pam_ck_connector.so nox11
$ grep '^[^#]' /etc/pam.d/common-account
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
account requisite pam_deny.so
account required pam_permit.so
$ grep '^[^#]' /etc/pam.d/common-session-noninteractive
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session optional pam_umask.so
session required pam_unix.so
session optional pam_ecryptfs.so unwrap
インストールされているPAMパッケージ:
$ dpkg --get-selections | grep --invert-match deinstall | cut --fields 1 | grep pam
libpam-cap
libpam-ck-connector
libpam-gnome-keyring
libpam-modules
libpam-modules-bin
libpam-runtime
libpam0g
python-pam
私はこれらを再インストールしてみました-助けにはなりませんでした:
$ sudo apt-get install --reinstall $(dpkg --get-selections | grep --invert-match deinstall | cut --fields 1 | grep pam)
依存関係が満たされていないため、これらを消去してから再インストールできません。
/var/spool/cron/crontabs/username
ですか?
/var/log/auth.log
CRON とは何ですか?
id cron
>id: cron: No such user