Распространяются данные на конкретную директорию права и на поддиректории в UNIX-подобных OS?
Недавно я задавал узкоспециализированный вопрос Ошибка "Permission denied (13) " при попытке отправить данные через rsync в директорию с правами доступа 777 при использовании не-root аккаунта, но ответ на него вызывал лишь новые вопросы. Похоже, я ввобще не понимаю эту концепцию, а потому задал этот, более общий вопрос.
Итак, правильно ли я понял, что когда мы вызываем chmod (скажем, чтобы дать право на чтение и запись), то по умолчанию разрешение распространяется только на файлы, содержащиеся непосредственно в данной директории, но не в поддиректориях? (Я ещё слышал что-то про то, то можно дать разрешение рекурсивно).
Ответы (1 шт):
- Для рекурсивного применения команд
chgrpилиchownдостаточно использовать ключ-R - Ну наверное самое для Вас интересное. Даже рекурсивное изменение группы, владельца или прав на файлы и директории применит изменения только для существующих, на данный момент, объектов. Тоесть если у Вас к следующей синхронизации добавятся новые файлы или папки Вы получите аналогичную проблему с ошибкой доступа
- (по порядку но не по значению) покурите утилиту
aclона позволяет более гибко управлять правами доступа
apt install acl
# так можно установить права для всех
# создаваемых внутри папки `/var/www`
# файлов и директорий для пользователя `non_root_admin`.
# Причем обратите внимание на то, что используется `X` а не `x`
# поскольку этот флаг нужен только для папок
setfacl -dm u:non_root_admin:rwX /var/www
# Так Вы примениете права rw для уже существующих
# в директории файлов для пользователя `non_root_admin`
find /var/www -type f -exec setfacl -m u:non_root_admin:rw {}\;
# Так Вы примениете права rwx для уже существующих
# в директории папок для пользователя `non_root_admin`
find /var/www -type d -exec setfacl -m u:non_root_admin:rwX {}\;
# Так Вы установите права rwX по умолчанию для уже существующих
# в директории папок и создаваемых в них объектов для пользователя `non_root_admin`
find /var/www -type d -exec setfacl -dm u:non_root_admin:rwX {}\;
...
Надеюсь дальше сами разберетесь
P.S.
Не знаю зачем Вам в данном случае нужен
rsyncно если я правильно понимаю, то Вам больше, для Ваших целей, подойдет любаяVCSну к примеруGit
P.P.S
У
aclтоже есть возможность рекурсивного применения, но мне оно как-то не зашло, поскольку при применениии к уже существующим объектам флаговrwXу файлов тоже появляется флаг на запуск. Поэтому я делаю черезfind