Мой пользователь, Боб, не может получить доступ к файлам, которые ему (теоретически) принадлежат. Я использую Fedora Core 8. Наверное, проще показать, чем рассказать:
> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log
> cd ./log
-bash: cd: log/: Permission denied
> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? the.log
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 Jun 2 04:11 .
drwxrwxr-x 7 bob bob 4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob 0 Jun 1 04:12 the.log
В ls -al
выделяется как очень странный. В нем будут перечислены файлы, на просмотр которых у меня нет прав, но не будут показаны разрешения?
Итак, возникает вопрос: что могло бы вызвать это? И что я могу сделать для его ремонта?
> sudo ls -al ./log
...
drw-rw-r-- 3 bob bob 4096 Jun 2 04:11 .
Не похоже, что у Боба есть права на выполнение для ./log, поэтому он не может cd
к нему.
Но
> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log
показывает, что он делает. Но не похоже, что они указывают на один и тот же файл (разные разрешения, разное время модификации).
Пытаться sudo ls -ail ./log
и ls -ail
чтобы увидеть, такой же индекс.
Все проще, чем повреждение файловой системы или selinux. Как видите, в каталоге журнала отсутствует разрешение x (исполняемый файл). Фактически для каталогов x означает, что кто-то может перейти в этот каталог. Просто сделайте «chmod + x log», чтобы исправить эту разрешающую способность, и вы сможете получить к ней доступ.
Я видел такие вещи, когда файловая система была повреждена, или если у вас неисправный диск. Исправление обычно заключается в запуске fsck против файловой системы и позвольте ей исправить найденные ошибки.
Также проверьте настройки SE / Linux. Иногда права доступа к файлу не имеют никакого отношения к тому, есть ли у вас доступ к нему или нет.
У файлов могут быть установлены неизменяемые или только расширенные атрибуты. У меня такое случалось раньше, и даже root не мог удалить файл.
Расширенные атрибуты можно просматривать с помощью lsattr и изменять с помощью chattr.
> sudo ls -al ./log drw-rw-r-- 3 bob bob 4096 Jun 2 04:11 .
Я не уверен, почему, но "." запись в ./log/ не имеет прав на выполнение. Разрешения должны быть идентичны разрешениям для ./log.
Можете ли вы попробовать chmod 755 ./log и chmod 755 ./log/. и посмотрите, исправляет ли какая-либо команда доступ?
В остальном я бы посоветовал вам запустить fsck в файловой системе, потому что похоже, что она не синхронизирована.
Вы пытались изменить владельца каталога кому-то другому, а затем обратно Бобу? Однако совет Зоредаше лучше - просто проверьте его!
Более лаконичный ответ ИМО.
У вашего каталога нет разрешений на выполнение, которые требуются CD.
Исправить:
$ sudo chmod +x ./log
Рекурсивно:
$ sudo chmod -R +x ./log
+ х добавляет исполняемый атрибут. Вы всегда можете удалить атрибут, выполнив -Икс