SED - Найти и заменить специальными символами (#,,%)

Вы не упоминаете, что такое «ожидаемый результат». Я предполагаю, что это файлы, имеющие x бит набора.

Нельзя обеспечить, чтобы ACL по умолчанию (например, umask) просто блокировал разрешения, но не устанавливал их сам. Новый каталог или файл не получает больше разрешений (для пользователя, группы и других), чем вызов open () или mkdir () , который создает запросы.

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

-121--53964-

root всегда может удалить файл (по крайней мере, на уровне chmod ; для предотвращения этого необходимы атрибуты файловой системы или модуль безопасности Linux (SELinux, AppArmor).

Для обычных пользователей необходимо удалить разрешение на запись родительского каталога для всех пользователей.

-121--120268-

Если вы не пытаетесь защитить root от удаления файла, фактически необходимо изменить разрешения для каталога, в котором находится ctl _ model _ fact.csv . chmod go-w [ваш каталог] сделает это, но это затронет все файлы в вашем каталоге, а не только ctl _ model _ fact.csv . Если вы также хотите убедиться, что другие пользователи не могут изменить файл, используйте chmod go-w ctl_model_fact.csv.

0
26.08.2015, 10:23
1 ответ

В системе GNU вы можете использовать это:

sed -i '/^#[[:blank:]]Person/{n;s/#root:[[:blank:]]\+marc/root:\tsomeone@something.tld/;}' file

Он ищет строку, начинающуюся с # Person . Затем переключается на следующую строку и заменяет #root: marc на root: ... . Флаг -i редактирует файл на месте.

-i , \ + и \ t являются расширениями GNU. Стандартный эквивалент \ + - более многословный \ {1, \} . Чтобы отредактировать файл на месте переносимо, вам нужно прибегнуть к временному файлу. Стандартный эквивалент \ t - буквальная вставка символа табуляции.

4
28.01.2020, 02:20

Теги

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