令人惊讶的是,找不到任何关于如何通过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
那是令人印象深刻的,你让我去源代码find答案。 你在第一次尝试的时候就碰到了定义范围的正确方法:两个数字必须用连字符分开。
什么挂你是这样的:
(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