Чому символи знака питання з’являються при зміні дозволів каталогу?


33

Я намагаюся тимчасово змінити дозволи до папки, початкові дозволи яких є

user@ubuntu:/var/log$ ls -l squid*
squid3:
total 4
-rw-r----- 1 proxy proxy    0 Jan 16 14:43 access.log
-rw-r----- 1 proxy proxy 1359 Jan 16 14:43 cache.log
ls: cannot open directory squid-deb-proxy: Permission denied

до чогось наступного

user@ubuntu:/var/log$ sudo chmod -R 644 squid*
user@ubuntu:/var/log$ ls -l squid*
squid3:
ls: cannot access squid3/cache.log: Permission denied
ls: cannot access squid3/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log

squid-deb-proxy:
ls: cannot access squid-deb-proxy/store.log: Permission denied
ls: cannot access squid-deb-proxy/cache.log: Permission denied
ls: cannot access squid-deb-proxy/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log
-????????? ? ? ? ?            ? store.log

Ви помітите, що після зміни дозволів скрізь є знаки запитань. Чому це відбувається? Я в основному хочу прочитати журнал доступу, щоб побачити, чи отримує squid-deb-proxy сервер запити від клієнта чи ні.

Відповіді:


38

Для перегляду дозволів каталогу вам потрібно передати -dпрапор ls, як-от так:

ls -ld squid3

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

Для встановлення дозволу на читання файлів та дозволів на читання та виконання в каталогах рекурсивно використовуйте цю команду:

chmod -R a+rX directoryname

Ось пояснення цієї команди:

  • chmod - це назва команди, яка використовується для зміни дозволів файлів.
  • -R- рекурсивний прапор. Це означає застосувати цю команду до каталогу та всіх його дітей, дітей своїх дітей тощо.
  • a розшифровується для всіх: застосуйте ці дозволи власника файлу, власника групи та всіх інших користувачів.
  • + означає додати наступні дозволи, якщо вони вже не встановлені.
  • r означає дозвіл на читання.
  • Xозначає дозвіл на виконання, але лише в каталогах. Малі xрегістри означатимуть дозвіл на виконання файлів і каталогів.

Більше інформації можна знайти на сторінці сторінки для chmodкомандиПіктограма manpage .


1
чи є щось неправильне у використанніchmod -R 644 squid*
Зареєстрований користувач

4
@RegisteredUser: так. 644 є rw-r--r--, що підходить для файлів, але не для каталогів. Для каталогів також повинен бути встановлений дозвіл на виконання, наприклад: rwxr-xr-x755. Команда, яку ви згадали, скасовує дозвіл на виконання файлів і каталогів рекурсивно, що викликає ці помилки.
Flimm

3

У мене теж була ця проблема. Я не міг зробити chmod або chown на файл. Я намагався її видалити. Виявляється, спроба видалити його (команда rm) викликала проблему. Основний результат полягає в тому, що файл поділяється між двома різними системами . Щойно я закрив файл в іншій системі, файл зник. Ось докладніше про мою конфігурацію. система 1: гостьовий віртуальний сервер Ubuntu. Тут я виконував команду rm. система 2: Хост Windows 7. Тут я відкрив файл, використовуючи команду менше (у cygwin, це не обов'язково).


2

Як ви заявляли, що ваша мета - читати /var/log/squid/access.log, найкращим рішенням є набрати sudo less /var/log/squid/access.log, що позбавить клопоту від багаторазового чмодінгу.

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