Как запретить выполнение скрипта, кроме крона?
if (PHP_SAPI != 'cli'){
  die('Не консоль');
}
Возможно. Сервер работает под своим пользователем www-data, крон запускаете от вашего имени, поэтому нужно установить соответствующие права на исполнение (750 если я не ошибаюсь).chmod 0750 file.php