Как я могу изменить все содержание в каталоге к тому, каковы принадлежность файла по умолчанию и полномочия?

Используя просто окружите:

repeats=4
while read line; do yes $line|head --lines=$repeats; done < infile > outfile
5
23.05.2017, 14:33
4 ответа

chmod может это сделать, вам не нужно искать.

Используйте символический режим и заглавный X.

chmod -R u=rwX,og=rX directory

поочередно, чтобы избежать повторения и облегчить редактирование. Мы можем сделать его ориентированным на действие, а не на роль.

chmod -R a=rX,u+w directory

Заглавная Х говорит кхмоду применить х к каталогам (а если он уже есть, например, go+X).

Выдержка вручную:

Формат символического режима - [ugoa...][[+-=][завивка...]...], где завивка - это либо ноль, либо больше букв из набора rwxXst, либо одна буква из набора ugo. Можно задать несколько символьных режимов, разделенных запятыми.

Комбинация букв ugoa управляет тем, какие пользователи будут иметь доступ к файлу: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, не входящие в группу файла (o), или все пользователи (a). Если ни один из них не задан, то эффект будет такой, как если бы он был задан, но биты, заданные в маске umask, не будут затронуты.

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

Буквы rwxXst выбирают биты файлового режима для затронутых пользователей: чтение (r), запись (w), выполнение (или поиск каталогов) (x), выполнение/поиск только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X), установка идентификатора пользователя или группы на выполнение (s), флага ограниченного удаления или липкого бита (t). Вместо одной или нескольких этих букв можно указать точно одну из букв ugo: разрешения, выданные пользователю, которому принадлежит файл (u), разрешения, выданные другим пользователям, входящим в группу файла (g), и разрешения, выданные пользователям, которые не входят ни в одну из двух предыдущих категорий (o).

.
6
27.01.2020, 20:36

Файлам и директориям обычно нужны разные биты файлового режима, в то время как chmod -R обычно применяет один и тот же режим ко всем записям.

Для различения файлов и каталогов полезной утилитой является find.

Смена режима обычных файлов:

# Finds all regular files and passes them to chmod
find /path/to/dir -type f | xargs chmod u=rw,g=r,o=r

Смена режима каталогов:

# Directories require the execution bit to be accessible
find /path/to/dir -type d | xargs chmod u=rwx,g=rx,o=rx

Утилита find сама по себе является рекурсивной, поэтому нет необходимости использовать chmod с флагом -R.

.
2
27.01.2020, 20:36

Обновление

С помощью @SkyDan и этого unix вопроса здесь я нашел решение.

Сначала я сделал

~$ find . -type d -print0 | xargs -0 chmod 755

Для того, чтобы изменить все каталоги на читаемые, записываемые, исполняемые файлы для пользователя. Затем я сделал

~$ find . -type f -print0 | xargs -0 chmod 644

Чтобы все файлы были прочитаны/записаны для пользователя.

0
27.01.2020, 20:36

Если вы хотите иметь отдельные разрешения для каждого файла / каталога и т. Д., Вам нужно сначала найти эти элементы, а затем что-то с ними сделать. Пример:

 find . -type d -name '*spec_dir*' | xargs chmod 755 

Таким образом, выше будет выполняться поиск всех подкаталогов из текущего, а затем будут установлены разрешения как drwxr-xr-x для всех найденных, которые содержатся в его имени spec_dir .

Если вам нужно добавить / удалить разрешения, не сбрасывая их, используйте формат g +/- p. Например, добавьте разрешение только на выполнение для другой группы: o + x

chmod o + x file или в приведенном выше контексте команды ... | xargs chmod o + x

То же самое вы можете сделать для своих файлов find. -type f -name 'my_files *' ... и т. д.

0
27.01.2020, 20:36

Теги

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