Проблема заключалась в разрешениях для /
(корневой каталог) и подсказке для определения этой строки из вашего Вывод strace
:
access("/", R_OK|X_OK) = -1 EACCES (Permission denied)
Отсутствуют настройки разрешений на чтение группы для /
. Но поскольку у вас все еще было разрешение x
(выполнение), которое позволяет вам перемещаться по каталогу, вы все равно можете получить доступ ко всем файлам в файловой системе, поэтому почти все продолжало работать, пока эти разрешения были в силе. . Единственное, что вам не разрешили, это перечислить содержимое /
. Большинству команд не нужно указывать /
, они либо используют пути относительно текущего каталога, либо абсолютные пути, которые обращаются к определенным известным каталогам вне корня (например, / etc
и / var
).
По соображениям безопасности найти
, даже несмотря на то, что у него есть доступ к полному списку имен файлов, сгенерированных привилегированным пользователем, настаивает на сообщении только результатов, которые вызывающий пользователь сможет найти, просмотрев все файловая система из корня.Так как вы не могли указать /
, что делает сканирование чего-либо прямо из корня невозможным, locate
вообще ничего не сообщит.
Благодаря зоркому глазу Селады и вниманию к деталям, я проверил права доступа к корневому каталогу.
$ sudo ls -ld /
drwx--xr-x 25 root domain users 4096 Apr 22 17:57 /
Когда я аутентифицируюсь, используя свои учетные данные Active Directory, domain users
является основной группой, выделенной мне Winbind. Некоторое время назад я отказывал другим пользователям в праве на чтение набора каталогов, меняя владельца группы и удаляя разрешение на чтение из группы. Должно быть, я случайно сделал то же самое с корневым каталогом. Дох! Интересно, что это было несколько недель назад, и я не заметил никаких проблем -, хотя это совпало с тем временем, когда я сознательно решил начать вход в систему как обычный пользователь и использовать sudo, а не root.
Во всяком случае, я вернул права доступа к тому, что должно быть:
$ sudo chgrp root /
$ sudo chmod -v g+r /
mode of `/' changed to 0755 (rwxr-xr-x)
$ ls -ld /
drwxr-xr-x 25 root root 4096 Apr 22 17:57 /
Теперь locate
работает как надо.