A questão parecia estar relacionada ao SELinux. Depois de conceder o acesso remove_name de acordo com a segunda atualização da minha mensagem, ele começou a funcionar.
No caso de alguém precisar disso aqui, é o arquivo te que eu usei para configurar o SELinux para cups-pdf. É baseado em um dos links fora da página do produto: link .
module cups_pdf 3.0beta2;
require {
class dir { add_name create getattr remove_name search setattr write };
class file { create getattr read setattr unlink write open};
type cupsd_t;
type home_root_t;
type user_home_dir_t;
type user_home_t;
type print_spool_t;
type unconfined_home_dir_t;
type unconfined_home_t;
type var_spool_t;
}
allow cupsd_t home_root_t:dir { getattr search };
allow cupsd_t user_home_dir_t:dir { getattr search };
allow cupsd_t user_home_t:dir { add_name create getattr remove_name search setattr write };
allow cupsd_t user_home_t:file { create getattr open read setattr unlink write };
allow cupsd_t unconfined_home_dir_t:dir { getattr search };
allow cupsd_t unconfined_home_t:dir { add_name create getattr remove_name search setattr write };
allow cupsd_t unconfined_home_t:file { create getattr open read setattr unlink write };
allow cupsd_t var_spool_t:dir { add_name create getattr remove_name search setattr write };
allow cupsd_t var_spool_t:file { create getattr open read setattr unlink write };