Назад | Перейти на главную страницу

"В доступе отказано" к файлу, которым я владею?

Мой пользователь, Боб, не может получить доступ к файлам, которые ему (теоретически) принадлежат. Я использую 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

+ х добавляет исполняемый атрибут. Вы всегда можете удалить атрибут, выполнив -Икс