Использованиеsed
:
$ sed '2,$s/,/.1,/2' file
ip,time,name
1.1.1.1,2018-08-31 10:01:03.1,postgres
2.1.1.1,2018-08-31 12:51:13.1,oracle
3.1.1.1,2018-08-31 14:32:53.1,sql
Это применяет замену к строке 2 и далее(2,$
). Замена s/,/.1,/2
заменяет вторую запятую на .1,
. Именно /2
в конце команды подстановки заставляет ее перейти ко второму совпадению.
Во-первых, обратите внимание, что ACL файлов, которые имеют записи ACL для именованных пользователей или групп, также имеют запись маски ACL , которая ограничивает разрешения, предоставляемые этими записями ACL и записью владельца группы. Запись маски показывает групповые разрешения на ls
и другие утилиты, которые смотрят только на традиционные биты разрешений.
Таким образом, если ваш ls
показывает -rw-r--r--+
, маска ACL — r--
, что означает, что ACL разрешений u:usernamehere:rwx
будет действовать как u:usernamehere:r--
. Это может быть не то, что вы хотите. С другой стороны, обратите внимание, что u:usernamehere:rwx
отличается от u::rwx
даже для файлов, принадлежащих usernamehere
. Первая — это именованная запись, ограниченная маской, а вторая — запись для владельца файла, которая не ограничена .
Идея маски заключается в том, что инструмент, работающий по аналогии с chmod go-rwx
, может сделать файл недоступным для всех, кроме владельца. Вы можете удалить запись маски с помощью setfacl -x m:: filename
, но это работает только в том случае, если нет записей именованных пользователей или групп.
В любом случае вы можете добавить более одной записи по умолчанию для одной и той же команды. Это установит записи по умолчанию, чтобы владелец файла получил разрешения rwx
, маска была установлена на r--
, а разрешения для «других» были установлены на r--
:
$ setfacl -R -d -m u::rwx -m m::r-- -m o::r-- /path
Возможно, вы также захотите явно установить ACL по умолчанию для владельца группы (g::
), так как запись появляется в любом случае (со значениями, вероятно, взятыми из битов разрешения ). Например. здесь запись для владельца группы действует не полностью, так как маска ограничивает его:
default:user::rwx
default:group::r-x #effective:r--
default:mask::r--
default:other::r--
Файл, созданный в каталоге, отображается в ls
как -rw-r--r--+
.
Опять же, если вы просто хотите, чтобы указанный пользователь получил указанные вами разрешения, вы можете не указывать поле маски,и setfacl
установит его для вас на основе разрешений, которые вы использовали для фактических записей ACL:
setfacl -R -d -m u::rwx -m u:usernamehere:rwx -m o::r-- /path
Файл, созданный в каталоге, теперь отображается в ls
как -rw-rw-r--+
, а вgetfacl
:
user::rw-
user:usernamehere:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
В маске отсутствует x
, так как я создал файл с touch
, и он использует разрешения 0666
, маскируя биты x
.