Bem, isso foi impressionante, você me fez ir ao código-fonte para encontrar uma resposta. Você tropeçou na maneira correta de definir um intervalo com sua primeira tentativa: dois números devem ser separados por um hífen.
O que está acontecendo é isso:
(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))
Se você especificar um intervalo de portas ao adicionar uma regra, deverá especificar o mesmo intervalo de portas ao excluir uma regra. Por exemplo:
sudo semanage port -l | grep ^http_port_t
http_port_t tcp 80, 443, 488, 8008, 8009, 8443
Para excluí-los, você deve chamar delete uma vez para cada porta ou intervalo de portas entre as vírgulas. Eles não podem ser um intervalo contíguo porque não foram definidos dessa maneira.
Por outro lado, com este exemplo:
mysqld_port_t tcp 1186, 3306, 63132-63163
Você não pode excluir individualmente 63132 ou 63133. Você deve especificar esse intervalo exato.
Exemplo de adição e exclusão de um intervalo:
semanage port --add -t http_port_t -p tcp 8899-8902
semanage port --delete -t http_port_t -p tcp 8899-8902