Работая с setenforce 0
, я смог получить следующие разрешающие правила, используяaudit2allow
:
#============= ifconfig_t ==============
allow ifconfig_t net_conf_t:file mounton;
allow ifconfig_t openvpn_etc_t:file { getattr open read };
allow ifconfig_t openvpn_exec_t:file { execute execute_no_trans open read };
allow ifconfig_t openvpn_tmp_t:dir { read write };
Я также получил это правило из тех же журналов
#============= ifconfig_t ==============
#!!!! WARNING: 'tmp_t' is a base type.
allow ifconfig_t tmp_t:dir { read write };
Чтобы не допускать этого, я создал подпапку с меткой openvpn_tmp_t
под /tmp
и запустил openvpn
с аргументом --tmp-dir
, указывающим на этот каталог.
После этого я так и не смог запустить службу. Глядя на journalctl -xe
, я увидел, что возникла проблема с загрузкой файла конфигурации :
.
-- Unit myvpn.service has begun starting up.
Jul 17 06:19:56 castiel ip[22825]: Options error: In [CMD-LINE]:1: Error opening configuration file: /etc/openvpn/profiles/myprofile.ovpn
Jul 17 06:19:56 castiel ip[22825]: Use --help for more information.
Jul 17 06:19:56 castiel systemd[1]: myvpn.service: Control process exited, code=exited status=1
Jul 17 06:19:56 castiel systemd[1]: Failed to start OpenVPN connection to myprofile.ovpn.
Я попробовал еще раз с setenforce 0
, и он смог запуститься. Удивительно, но в журнале аудита ничего об этом не было.
Я искал и наткнулся на старый вопрос в списке рассылки Fedora selinux . По-видимому, существует правило dontaudit
, которое блокирует регистрацию некоторых сообщений. Это можно отключить с помощьюsemodule -DB
(или -, включив с помощью semodule -B
).
При регистрации остальных ошибокУ меня есть еще несколько строк, которые я превратил в правила сaudit2allow
:
#============= ifconfig_t ==============
allow ifconfig_t openvpn_etc_t:dir search;
allow ifconfig_t openvpn_tmp_t:dir search;
#============= init_t ==============
allow init_t ifconfig_t:process noatsecure;
allow init_t kernel_t:unix_stream_socket { read write };
Комбинируя эти политики, я смог запустить openvpn внутри сетевого пространства имен через systemd.
Я до сих пор не уверен, насколько безопасны эти правила и есть ли лучший способ сделать это.
Похоже, вы обрабатываете csv вручную. Я не знаю ни одного встроенного -считывателя csv на каком-либо языке, который не смог бы обрабатывать эти пустые поля без явных кавычек. Возможно, вы захотите переосмыслить способ обработки вашего CSV-файла вместо того, чтобы пытаться его исправить.
Думаю, подойдет простая sed
команда:
sed -e 's/^,/"",/' -e 's/,$/,""/' -e 's/,,/,"",/g' file
Вывод (, если есть ведущая запятая):
1,2,3,4,5,6,7,8
"","AK","87","86","81","83","78","",""
Первое выражение имеет дело с голой запятой в начале строки; второе выражение имеет дело с голой запятой в конце строки; третье выражение имеет дело с отсутствующими полями в середине.