# semanage fcontext -a -t public_content_rw_t "/myftp/pub(/.*)?"
Não se esqueça de incluir o (/.*)? no final do nome do diretório.
I also tried to use audit2allow to generate a policy, but what it does is generate a policy that gives ftpd write access to directories of type public_content_t; this is equivalent to turning on allow_ftpd_full_access, if I understood it correctly
Essencialmente, sim; já que o SELinux permite que diretórios / arquivos rotulados com public_content_t sejam compartilhados entre diferentes serviços. No entanto, o controle de acesso adicional está em vigor por meio do uso de sebooleans (ou sebool , mais precisamente).
Dar "acesso completo ao ftpd" não significa dar-lhe os direitos de fazer / ler / escrever o que e onde quiser. O SELinux designou políticas para os serviços em seu sistema; ou seja, ftpd tem permissão para ler arquivos se o contexto do arquivo do diretório ( fcontext ) for public_content_t . O SELinux dá permissões de gravação para o servidor ftp se o texto do diretório for public_content_rw_t ; outros serviços, como o samba, o apache, etc., devem ter permissões de gravação para esses diretórios por meio dos booleanos, de acordo com os public_content_t , ela basicamente eliminará uma camada de segurança. Portanto, sugiro rotular o diretório com o contexto public_content_rw_t e remover sua política local gerada personalizada.
Para mais informações e detalhes, por favor veja as páginas wiki do SELinux .