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

13

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

Так что вопросы в том, что могло бы вызвать это? И что я могу сделать, чтобы восстановить это?

Гордон Уилсон
источник

Ответы:

17
> 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посмотрите, является ли индекс тем же.

CoverosGene
источник
10

Все проще, чем повреждение файловой системы или selinux. Как вы можете видеть, вам не хватает разрешения x (исполняемый файл) для каталога журнала. На самом деле для каталогов х означает, что кто-то может перейти в этот каталог. Просто выполните команду «chmod + x log», чтобы исправить это, и вы сможете получить к нему доступ.


источник
> На самом деле для каталогов х означает, что кто-то может перейти в этот каталог Wow. Я продолжаю забывать это; Благодарю.
yPhil
6

Я видел такие вещи, когда файловая система была повреждена, или если у вас неисправный диск. Обычно исправление заключается в запуске fsck для файловой системы и позволяет ей исправлять найденные ошибки.

Zoredache
источник
Я сделал это около часа назад на одном из моих файловых серверов. +1
Томас Дентон
2

Также проверьте настройки SE / Linux. Иногда права доступа к файлу не имеют никакого отношения к тому, есть ли у вас доступ к нему.

Дэвид Макинтош
источник
1
Я согласен с Дэвидом Макинтошем. Если SELinux включен и файлы / каталоги были созданы кем-то другим, а затем сменили владельца на bob, это может произойти. поскольку контекст файлов остается у первоначального автора и не будет доступен, пока контекст также не будет изменен на пользователя Боба.
Viky
2

Файлы могут иметь неизменяемые или добавлять только расширенные атрибуты. У меня такое уже было, и даже root не мог удалить файл.

Расширенные атрибуты можно просматривать через "lsattr" и изменять через "chattr"

Хокон
источник
1
> sudo ls -al ./log
drw-rw-r-- 3 боб боб 4096 июн 2 04:11.

Я не уверен, почему, но "." запись в ./log/ не имеет прав на выполнение. Разрешения должны быть такими же, как и для ./log.

Можете ли вы попробовать chmod 755 ./log и chmod 755 ./log/. и посмотреть, если какая-либо команда исправляет доступ?

Кроме этого, я бы посоветовал вам запустить fsck в файловой системе, потому что похоже, что он не синхронизирован.

Рассел Хиллинг
источник
1

Вы пытались сменить владельца каталога на кого-то другого, а затем на Боба? Тем не менее, совет Зородаче лучше - просто сделайте это!

RainyRat
источник
2
Этот тип проблемы всегда заканчивается правами доступа к каталогу.
DoubleJosh
1

Более краткий ответ ИМО.

Ваш каталог не имеет исполняемых прав доступа, которые требуются cd .

Fix:

$ sudo chmod +x ./log

Рекурсивный:

$ sudo chmod -R +x ./log

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

Джастин Фортье
источник