Где находится база данных для locate/updatedb в Ubuntu?
Я читал о команде locate, и учебник, который я использовал, говорит, что /var/log/updatedb - это место, где находится updatedb. Его нет в Ubuntu (xubuntu), и, кажется, он даже не может быть обнаружен (по иронии судьбы) в принципе. Вот что я сделал, чтобы попытаться найти это:
[HOST]:~$ sudo find / -name updatedb
[sudo] password for [USERNAME]:
find: ‘/run/user/1000/gvfs’: Permission denied
/etc/alternatives/updatedb
/usr/bin/updatedb
если я посмотрю в / usr / bin и в длинном списке updatedb, он будет связан (светло-голубая ссылка - и с разрешением 'l', таким образом, символическая ссылка) с / etc / alternatives / updatedb.
если я посмотрю в / etc / альтернативы
[HOST]:/usr/bin$ cd /etc/alternatives
[HOST]:/etc/alternatives$ ls -l updatedb
lrwxrwxrwx 1 root root 25 Jul 15 02:35 updatedb -> /usr/bin/updatedb.mlocate
Вы получаете вышеуказанную символическую ссылку на /usr/bin/updatedb.mlocate
[HOST]:/usr/bin$ ls -l updatedb.mlocate
-rwxr-xr-x 1 root root 43768 Nov 18 2014 updatedb.mlocate
[HOST]:/usr/bin$ file updatedb.mlocate
updatedb.mlocate: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=85d4fb92c2e099510893b0c2eccb13d49943e81e, stripped
Затем я читаю эту ссылку на Ubuntu:
http://manpages.ubuntu.com/manpages/precise/man8/updatedb.8.html котором говорится, что база данных находится в /var/lib/mlocate.db, но это (чуть ниже) - то, что я получил, и когда в текстовом редакторе открылось сообщение, что данные не читаются:
[HOST]:/var/lib/mlocate$ ls
mlocate.db
[HOST]:/var/lib/mlocate$ emacs mlocate.db
[HOST]:/var/lib/mlocate$ file mlocate.db
mlocate.db: regular file, no read permission
[HOST]:/var/lib/mlocate$ ls -l mlocate.db
-rw-r----- 1 root mlocate 5291101 Aug 1 08:45 mlocate.db
[HOST]:/var/lib/mlocate$
Я ожидаю, что у меня просто концептуальное недоразумение, но был бы благодарен за любые комментарии, которые помогли бы мне понять, где можно найти базу данных.
С благодарностью, Уилл
2 ответа
У вас есть правильный файл, но база данных не читается по двум причинам:
У вас нет разрешения на прямой доступ к нему.
Это можно преодолеть с помощьюsudo emacs mlocate.db
Это не текстовый файл, поэтому открыть его в текстовом редакторе мало. Можно просматривать и редактировать его с помощью текстового редактора, но наиболее вероятным результатом является повреждение базы данных. Используйте соответствующие инструменты для чтения или изменения
mlocate.db
:updatedb
а такжеlocate
,
Файл находится по адресу /var/lib/mlocate/mlocate.db, но принадлежит пользователю root, поэтому вы не можете получить к нему доступ без прав суперпользователя.
чтобы заполнить экран с его содержанием, введите команду sudo cat /var/lib/mlocate/mlocate.db
Не пытайтесь редактировать этот файл
Источник: ls -lhs /var/lib/mlocatelocate/mlocate.db
Кажется, что файл находится по пути /var/cache/locate/locatedb
в моей системе (Ubuntu 20.04).
Это объясняется в man
страница из updatedb
как это:
--output=dbfile
The database file to build. Default is system-dependent.
In Debian GNU/Linux, the default is /var/cache/locate/locatedb.
Точно так же info
страница говорит:
'--output=DBFILE'
The database file to build. The default is system-dependent, but
when this document was formatted it was '/var/cache/locate/locatedb'.
Обратите внимание, что права доступа к файлу и его родительским каталогам такие:
$ stat /var/cache/locate/locatedb | grep -m1 Access:
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
$ stat /var/cache/locate | grep -m1 Access:
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
$ stat /var/cache | grep -m1 Access:
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Это означает, что непривилегированный пользователь может locate
путь к файлу, который обычно не может быть указан.