Оновлення: на це питання не буде отримано остаточного відповіді; Я перейшов до іншого дистрибутива і з тих пір не спостерігав цієї проблеми. Мені ніколи не вдалося виправити це за допомогою проникливих відповідей, наявних у той час, але Ваша ефективність використання палива може відрізнятися (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 встановлений груповою установкою:
$ 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
Сам кронтаб належить мені (не дивно, оскільки я можу його відредагувати):
$ 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 Keyring Daemon - управління введенням ключів
- 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