Удивительно, но не удалось найти четкой информации о том, как удалить диапазон портов с помощью semanage port
. Вот список перестановок, которые я пробовал:
semanage port -d -t http_port_t -p tcp 0-60000
semanage port -d -t http_port_t -p tcp [1-60000]
semanage port -d -t http_port_t -p tcp 1,60000
semanage port -d -t http_port_t -p tcp 1-60000
semanage port -d -t http_port_t -p tcp 1 60000
semanage port -d -t http_port_t -p tcp 1,60000
semanage port -d -t http_port_t -p tcp <60000
semanage port -d -t http_port_t -p tcp '1-60000'
semanage port -d -t http_port_t -p tcp '1,60000'
semanage port -d -t http_port_t -p tcp 1000-10000
В справочном сообщении было неясно, как указать диапазон:
root@service1 /etc/yum/pluginconf.d # -> semanage -h
/usr/sbin/semanage:
semanage [ -S store ] -i [ input_file | - ]
semanage [ -S store ] -o [ output_file | - ]
semanage login -{a|d|m|l|D|E} [-nrs] login_name | %groupname
semanage user -{a|d|m|l|D|E} [-LnrRP] selinux_name
semanage port -{a|d|m|l|D|E} [-nrt] [ -p proto ] port | port_range
Что ж, это было впечатляюще, вы заставили меня обратиться к исходному коду, чтобы найти ответ. Вы наткнулись на правильный способ определения диапазона с первой попытки: два числа должны быть разделены дефисом.
Вас подвешивает вот что:
(rc, exists) = semanage_port_exists(self.sh, k)
if rc < 0:
raise ValueError(_("Could not check if port %s/%s is defined") % (proto, port))
if not exists:
raise ValueError(_("Port %s/%s is not defined") % (proto, port))
Если вы указываете диапазон портов при добавлении правила, вы должны указать тот же диапазон портов при удалении правила. Например:
sudo semanage port -l | grep ^http_port_t
http_port_t tcp 80, 443, 488, 8008, 8009, 8443
Чтобы удалить их, вы должны вызвать delete один раз для каждого порта или диапазона портов между запятыми. Они не могут быть непрерывным диапазоном, потому что они не были определены таким образом.
И наоборот, в этом примере:
mysqld_port_t tcp 1186, 3306, 63132-63163
Вы не можете удалить 63132 или 63133 по отдельности. Вы должны указать именно этот диапазон.
Пример добавления и удаления диапазона:
semanage port --add -t http_port_t -p tcp 8899-8902
semanage port --delete -t http_port_t -p tcp 8899-8902