"Дозвіл відмовлено" у файлі, який я маю?


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Виділяється як дуже дивно. Він перелічить файли, на які я не маю дозволів бачити, але не покаже мені дозволи?

Тож питання є, що це спричинило б? І що я можу зробити, щоб її відремонтувати?

Відповіді:


18
> 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побачити , якщо инода те ж саме.


10

Речі простіші, ніж пошкодження файлової системи або selinux. Як ви бачите, вам не вистачає дозволу x (виконується) у каталозі журналів. Насправді для каталогів x означає, що хтось може змінитись у цьому каталозі. Просто зробіть "chmod + x log", щоб виправити цю візочку, і ви зможете отримати доступ до неї.


> Насправді для каталогів x означає, що хтось може змінитись у цій директорії Wow. Я все це забуваю; Спасибі.
yPhil

6

Я бачив такі речі, коли файлова система була пошкоджена або якщо у вас несправний диск. Виправлення, як правило, полягає у запуску fsck проти файлової системи та допущенні до виправлення виявлених помилок.


Я зробив це близько години тому на одному з моїх файлових серверів. +1
Thomas Denton

2

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


1
Я погоджуюся з @David Mackintosh. Якщо SELinux увімкнено і якщо файли / каталоги створив хтось інший, а потім змінив право власності на bob, це, швидше за все, станеться. оскільки контекст файлів залишається в оригіналу автора і не буде доступний, поки контекст також не буде змінено на користувача Bob.
Вікі

2

У файлах можуть бути встановлені незмінні або додавати лише розширені атрибути. У мене це було раніше, і навіть root не міг видалити файл.

Розширені атрибути можуть бути переглядами через "lsattr" та змінені через "chattr"


1
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 2 червня 04:11.

Я не впевнений, чому, але "". запис у ./log/ не має дозволів на виконання. Дозволи мають бути ідентичними дозволам для ./log.

Чи можете ви спробувати chmod 755 ./log та chmod 755 ./log/. і побачити, чи якась команда фіксує доступ?

Крім цього, я б радив запустити fsck у файловій системі, оскільки, схоже, він не синхронізований.


1

Ви спробували змінити право власності на каталог на когось іншого, а потім повернутися до Боба? Рада Зоредаче краще, однак - просто розбери її!


2
Цей тип випуску завжди стає дозволом каталогу.
doublejosh

1

Більш лаконічна відповідь ІМО.

У вашому каталозі немає виконаних дозволів, необхідних CD .

Виправити:

$ sudo chmod +x ./log

Рекурсивно:

$ sudo chmod -R +x ./log

+ x додає виконуваний атрибут. Ви завжди можете видалити атрибут, виконавши -x

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.