Chmod работает не так, как ожидалось

Разработчики Zeitgeist работают над Zeitgeist Global Privacy. Это позволит удалить часть истории Zeitgeist (последний час, неделю и т. Д.), Черный список приложения или типа файла из истории и исключение папки из истории. Несколько скриншотов приведены в связанном сообщении в блоге.

1
задан 15 December 2014 в 00:44

2 ответа

Проблема ls звучит так, как будто у вас могут не быть достаточных привилегий в каталоге. Как указано в https://stackoverflow.com/a/15800917/3501748: каталоги должны иметь разрешение на выполнение, чтобы просмотреть их содержимое.

cd вернуть уровень и посмотреть, какие разрешения находятся на каталог, из которого вы только что пришли. sudo не дает вам никаких прав на доступ к папке, если root не имеет прав на эту папку. Возможно, sudo -u <username> может помочь.

Если вам нужно перезаписать дерево каталогов ниже вашей начальной точки, используйте chmod -R.

1
ответ дан 24 May 2018 в 00:59
  • 1
    Вероятно, команда ls завершилась неудачно, потому что папка является исполняемой (пользователь может использовать cd), но не читается пользователем. – Lety 15 December 2014 в 02:07
  • 2
    Вы должны посоветовать пользователю быть осторожным, используя chmod -R, эта команда опасна и может разорвать систему, если она выполнена с неправильным параметром и прав sudo. – Lety 15 December 2014 в 02:08

Во-первых, я хотел бы подтвердить существующие ответы:

Как говорит UweBurger, один использует * для общего шаблона в Ubuntu (или, я считаю, Unix вообще). (Возможно ли, что directory в вашем примере пуст, вызывая ошибку chmod: cannot access ‘directory/*’: No such file or directory?) Как предложил северный брэдли, в chmod можно использовать флаг R, чтобы он рекурсивно пересекал дерево, меняя разрешений всего под вашим текущим пунктом. То есть, используйте chmod -R directory, или если вам не хватает привилегий sudo chmod -R directory (однако, не забудьте случайно изменить права доступа к системным файлам при использовании sudo - chmod, у вашего собственного пользователя просто нет привилегий для этого, что делает первый вариант более безопасным).

Однако я хотел бы добавить, что вы, возможно, не захотите изменять права на каталоги так же, как и файлы. Как поясняется в официальной документации, разрешение на чтение (r) для каталогов означает возможность просмотра его содержимого (например, использование ls), разрешение записи (w) позволяет пользователю создавать / удалять файлы в его, и выполнить (x) разрешение на cd внутри. Здесь есть большой ответ, предлагающий метод для различения файлов и каталогов при рекурсивном применении новых разрешений. Предполагается, что вариант с использованием xargs быстрее. Возможно, вы захотите добавить флаг r в xargs, чтобы избежать ошибки, если find ничего не возвращает, и если вам нужны привилегии root, вы должны использовать sudo для обеих половин трубы (опять же, упражнение если chmod ing как root), так что это будет:

sudo find [путь / to / dir] -тип d -print0 | sudo xargs -0r chmod [желательно-dir-разрешения] sudo find [путь / to / dir] -тип f -print0 | sudo xargs -0r chmod [прав доступа к файлам]

, где [desired-*-permissions] может быть предоставлена ​​официальная документация (777) или с использованием букв (например, a+x).

1
ответ дан 24 May 2018 в 00:59

Другие вопросы по тегам:

Похожие вопросы: