расположить в cron.daily не обновляющую базу данных

Вопрос или проблема

На стандартной настольной установке Ubuntu 24.04, когда я пытаюсь использовать команду locate, поиск файлов, которые я явно имею в своем домашнем каталоге, не выдает результатов — кажется, что база данных locate никогда не обновлялась.

Тем не менее, я могу запустить sudo updatedb, который вручную обновляет базу данных locate, и затем я могу искать файлы, как ожидалось. Это продолжает работать в течение дня, после чего поиск файлов в моем домашнем каталоге снова перестает работать. Так что я предполагаю, что после выполнения скрипта locate в cron.daily база данных изменяется или стирается.

Одно из решений состоит в том, чтобы просто удалить скрипт locate из cron.daily, что, я думаю, “решит” проблему. Но есть ли более правильный способ справиться с этим?

Это можно исправить, заменив строку

LOCALUSER=nobody

в crond.daily на

LOCALUSER=root

Я думаю, что это безопасно, так как updatedb все равно должен выполняться от имени root.

Ответ или решение

Чтобы понять, почему команда locate не отображает файлы из вашего домашнего каталога после выполнения сценария в cron.daily, необходимо рассмотреть, как работает система обновления базы данных locate на Ubuntu 24.04.

Проблема обновления базы данных locate

По умолчанию команда locate использует базу данных, которая периодически обновляется. Это обновление происходит через планировщик задач cron, и в данном случае — через скрипт, который находится в каталоге cron.daily. Как вы заметили, после выполнения команды sudo updatedb, результаты поиска обновляются, но через день после последнего обновления, файлы больше не появляются в выводе команды locate. Это говорит о том, что скрипт не полностью обновляет базу данных так, как предполагалось.

Анализ скрипта обновления базы данных

По вашему описанию, скрипт в cron.daily выполняется от имени пользователя nobody, что может вызвать проблемы с правами доступа. Конкретная строка:

LOCALUSER=nobody

Фактически означает, что база данных обновляется с ограниченными правами доступа, которые не могут видеть ваш домашний каталог или другие файлы, находящиеся под управлением вашего пользователя. Чтобы изменить эту ситуацию, необходимо изменить эту строку на:

LOCALUSER=root

Безопасность и правильное поведение

Если вы решите отредактировать этот файл, убедитесь, что вы понимаете все потенциальные риски. Запуск скрипта updatedb от имени root является более безопасным подходом, так как гарантирует, что команда получит необходимые права доступа для поиска файлов в системных и пользовательских каталогах. Несмотря на распространённые опасения по поводу безопасности, данный метод является стандартной практикой для обеспечения правильной работы команды locate.

Рекомендации по реализации решения

  1. Изменение файла: Откройте файл /etc/cron.daily/mlocate в текстовом редакторе с правами суперпользователя и замените строку LOCALUSER=nobody на LOCALUSER=root.

  2. Тестирование: После внесения изменений, дождитесь следующего автоматического обновления или выполните команду sudo updatedb вручную. Проверьте вывод команды locate для подтверждения правильного функционирования.

  3. Мониторинг: После обновления следите за изменениями в выводе команды на протяжении нескольких дней, чтобы убедиться в отсутствии дальнейших проблем.

  4. Документация: Рекомендуется документировать ваши изменения и причины их выполнения для будущих пользователей системы.

Эти действия позволят вам оптимизировать работу команды locate и избежать потенциальных проблем с доступом к файлам. Вы также можете рассмотреть возможность настройки другого способа обновления базы данных, например, с помощью systemd timers, если хотите повысить гибкость и контроль.

Заключение

Модификация переменной LOCALUSER в скрипте cron.daily является полезным и безопасным методом решения проблемы с обновлением базы данных locate. Следуя приведённым рекомендациям, вы сможете обеспечить корректное отображение искомых файлов в системе поиска, что в свою очередь улучшит вашу продуктивность в работе с файлами в Ubuntu 24.04.

Оцените материал
Добавить комментарий

Капча загружается...