Используйте -d '\ n'
с командой xargs
:
cat file | xargs -d '\n' -l1 mkdir
Из справочной страницы:
-d delim
Input items are terminated by the specified character. Quotes and backslash are not special; every
character in the input is taken literally. Disables the end-of-file string, which is treated like any
other argument. This can be used when the input consists of simply newline-separated items, although
it is almost always better to design your program to use --null where this is possible. The specified
delimiter may be a single character, a C-style character escape such as \n, or an octal or hexadecimal
escape code. Octal and hexadecimal escape codes are understood as for the printf command. Multibyte
characters are not supported.
Пример вывода:
$ ls
file
$ cat file
Long Name One (001)
Long Name Two (201)
Long Name Three (123)
$ cat file | xargs -d '\n' -l1 mkdir
$ ls -1
file
Long Name One (001)
Long Name Three (123)
Long Name Two (201)
На самом деле, поскольку использовалось restorecon
, эти команды не требуются для решения проблем SELinux:
# echo 'type=AVC msg=audit(1533595368.668:140747): avc: denied { connectto } for pid=87400 comm="postdrop" path="/var/spool/postfix/public/pickup" scontext=system_u:system_r:postfix_postdrop_t:s0 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=unix_stream_socket' \
| audit2allow -M local_postfix_pickup
# semodule -i local_postfix_pickup.pp
Вот почему и, надеюсь, объяснение, которое может помочь при попытке решить проблемы с аудитом SELinux.
Позаботьтесь о том, чтобы обратить внимание на типы перед действиями по смягчению последствий. В этом случае:
unix _поток _сокет
К сожалению, ls -lZ /var/spool/postfix/public/pickup
не была запущена до запуска команды restorecon
, так как это помогло бы лучше понять проблему.
СОВЕТ:Просмотрите контексты SELinux, прежде чем вносить изменения.
Обратите внимание на тип SELinux после запуска restorecon -R -v /var/spool/postfix/public/pickup
:
постфикс _общедоступный _t
Важно отметить, что изменение типа произошло.
СОВЕТ.:Когда в списке указана как предлагаемая команда restorecon
, так и одно правило allow
, не исключено, что предложения по смягчению последствий являются альтернативными решениями (, которые могут решить проблему ). ].
Обратите внимание, что вывод audit2allow
изменился таким образом, что предлагаемая команда restorecon
больше не присутствует.
Если вывод audit2allow
содержит команду restorecon
и только одно изменение rule
, после попытки устранения проблемы с помощью restorecon
проблема, скорее всего, будет решена. Ключевым моментом здесь является понимание того, что rule
, отображаемый для AVC, больше не актуален, потому что больше нет причин для правила, касающегося типа, который больше не используется.
Например, в этом конкретном случае нет причин для postfix_postdrop_t
предоставлять доступ к unix_stream_socket
, когда этот сокет теперь имеет вершину postfix_public_t
.
В любом другом подобном случае важно помнить, что сам AVC посвящен историческому событию. Поскольку AVC посвящен историческому событию,следует иметь в виду, что альтернативные решения старых проблем могут не потребоваться, если детали в альтернативном решении уже не идентичны состоянию системы в момент возникновения события. Другими словами, после использования команды restorecon
нет необходимости ожидать сообщений «разрешено в текущей политике», когда предложение restorecon
больше не присутствует.
Если вы все еще сомневаетесь, разумно ли не использовать оба способа устранения, утешьте себя тем фактом, что, если на самом деле потребуются оба средства, в будущем произойдет событие аудита.
На самом деле отказ от использования нескольких средств защиты дает дополнительное преимущество. Помните, что весь смысл SELinux заключается в том, чтобы ограничить процессы доступом к вещам, которые им действительно нужны. Если вносятся ненужные принудительные изменения типа, исполняемый файл postfix_postdrop_t
больше не ограничен в доступе к другим unix_stream_socket
ресурсам, которые не имеют ничего общего с запуском postfix
, и законное ограничение времени запуска -на postfix
будет быть ниспровергнутым.
Более подходящим заголовком для этого вопроса может быть :" Требуются ли обе меры по снижению риска, когда audit2allow предлагает как restorecon, так и одно изменение правила? "