Пользователь x не может использовать эту программу (crontab)

9

Убунту 14.04

Я не понимаю, поведение, которое я вижу при настройке crontab для учетной записи службы (без входа в систему) (по имени curator).

Когда я вошел в систему как root, это то, что я получаю:

# crontab -u curator -l
The user curator cannot use this program (crontab)

Но когда я переключаюсь на учетную запись пользователя, она работает нормально:

# su -s /bin/bash curator
curator@host$ crontab -l
no crontab for curator

В системе нет пустого /etc/cron.allowфайла и нет /etc/cron.denyфайла. По словам man crontab:

Если файл /etc/cron.allow существует, то вы должны быть в нем (по одному пользователю на строку), чтобы иметь возможность использовать эту команду. Если файл /etc/cron.allow не существует, но файл /etc/cron.deny существует, вы не должны быть указаны в файле /etc/cron.deny для использования этой команды.

Я понимаю ошибку, когда запускаю первую команду, но почему она позволяет мне запускаться, crontabкогда я явно переключаюсь на учетную запись пользователя?

Добавление пользователя /etc/cron.allowзаставляет обе команды работать нормально.

Адам Михалик
источник
1
Это просто говорит о том, что нет crontab. Что произойдет, если вы попытаетесь создать его через crontab -e(как куратор пользователя)?
Fiximan
1
Невозможно воспроизвести эту проблему на бродячем образе trusty64; с пустым cron.allowфайлом, root crontab -u vagrant -lи crontab -lкак и как vagrantрезультат в are not allowed to use this programсообщении (которое отличается от сообщения, которое вы цитируете).
thrig

Ответы:

11

Я проверил источники crontab и обнаружил, что если пользователь не может открыть /etc/cron.allow(например, после chmod 0 /etc/cron.allow), crontab думает, что ему разрешено использовать его (как будто cron.allowего не существует).

Но root может прочитать любой файл, поэтому код проверки crontab работает как положено. Поэтому я рекомендую вам сначала проверить разрешения /etc/cron.allowи, возможно, журналы аудита SELinux / AppArmor.

Михаил Зарубин
источник
Похоже, это так - я убедился, что chmod -r /etc/cron.allowдействительно вызывает описанное поведение в моей системе Ubuntu 14.04
steeldriver
Пятно на! Мои /etc/cron.allowразрешения были 600, после изменения его на 644оба rootи curatorувидел not allowed to use this program (crontab)сообщение. Затем после добавления curatorк /etc/cron.allowобоим можно использовать кураторский crontab.
Адам Михалик