требует GNU grep:
grep -oP '(?<=^|,)[^!]+(?=,|$)'
на основе Вашего входа, который сообщает:
test
column
no
column
Если Вы не хотите, чтобы "столбец" появился дважды: grep -oP '(?<=^|,)[^!]+(?=,|$)' | sort -u
ACL по умолчанию является ACL, который применяется к недавно созданным файлам в том каталоге. Это также копируется как ACL по умолчанию для подкаталогов, созданных в соответствии с тем каталогом, поэтому если Вы не делаете что-то для переопределения его, это применялось рекурсивно.
ACL по умолчанию не имеет никакого эффекта на сам каталог, или ни на какие файлы, которые существуют, когда Вы изменяете ACL по умолчанию.
Таким образом в Вашей ситуации необходимо оба установить ACL на каталоге (для самого каталога) и установить ACL по умолчанию (для файлов, которые Вы создадите в каталоге).
Семантика списков управления доступом является сложной, извлечена здесь из man -s 5 acl
1. If the effective user ID of the process matches the user ID of the
file object owner, then
if the ACL_USER_OBJ entry contains the requested permissions,
access is granted,
else access is denied.
2. else if the effective user ID of the process matches the qualifier
of any entry of type ACL_USER, then
if the matching ACL_USER entry and the ACL_MASK entry contain
the requested permissions, access is granted,
else access is denied.
3. else if the effective group ID or any of the supplementary group IDs
of the process match the file group or the qualifier of any entry of
type ACL_GROUP, then
if the ACL contains an ACL_MASK entry, then
if the ACL_MASK entry and any of the matching ACL_GROUP_OBJ
or ACL_GROUP entries contain the requested permissions,
access is granted,
else access is denied.
else (note that there can be no ACL_GROUP entries without an
ACL_MASK entry)
if the ACL_GROUP_OBJ entry contains the requested permis‐
sions, access is granted,
else access is denied.
4. else if the ACL_OTHER entry contains the requested permissions,
access is granted.
5. else access is denied.
Я знаю, что испытываю затруднения, понимающие, какое правило относится к Вашей конкретной проблеме. Если бы Вы поняли их полностью, то Вы не задали бы вопрос здесь. В частности, трудно определить, подают ли пользователь, группа или другой заявку, и имеет ли значение по умолчанию приоритет по определенному. Вот пример с помощью ACL:
$ ls -ld mysite
drwxr-x---+ 2 www-data www-data 4096 Sep 6 08:22 mysite
$ getfacl mysite
# file: mysite
# owner: www-data
# group: www-data
user::rwx
group::r-x
other::---
default:user::rwx
default:group::rwx
default:group:www-data:r-x
default:mask::rwx
default:other::r-x
$ ls -l mysite
total 4
-rw-rw-r--+ 1 www-data www-data 56 Sep 6 08:15 example.html
использование параметров ACL, все прекрасно, так как я работаю с www-данными в моих группах. Но, если я изменяю режим на mysite/
Я отключаю свой доступ:
$ sudo chmod 000 mysite
$ ls -ld mysite
d---------+ 2 www-data www-data 4096 Sep 6 08:22 mysite
$ ls mysite
ls: cannot open directory mysite: Permission denied
обратите внимание, что я не изменил acl вообще.
На связанной ноте корень никогда не должен, никогда владеть каталогами, которые будут частью веб-сервиса. Когда-либо.В самом деле. Вот почему существуют непривилегированные учетные записи и группы как www-data
.
Что необходимо сделать, чтобы заставить вещи работать способ, которым Вы думаете, что хотите их к?Понятия не имею.