Вы не упоминаете, что такое «ожидаемый результат». Я предполагаю, что это файлы, имеющие 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
.
В системе GNU вы можете использовать это:
sed -i '/^#[[:blank:]]Person/{n;s/#root:[[:blank:]]\+marc/root:\tsomeone@something.tld/;}' file
Он ищет строку, начинающуюся с # Person
. Затем переключается на следующую строку и заменяет #root:
на root:
. Флаг -i
редактирует файл на месте.
-i
, \ +
и \ t
являются расширениями GNU. Стандартный эквивалент \ +
- более многословный \ {1, \}
. Чтобы отредактировать файл на месте переносимо, вам нужно прибегнуть к временному файлу. Стандартный эквивалент \ t
- буквальная вставка символа табуляции.