Dependendo do tipo de uso do servidor ftp, algumas personalizações devem ser feitas:
- Caso o ftp tiver capacidade de distribuir arquivos de forma anônima, os arquivos e diretórios compartilhados via ftp devem ser do tipo public_content_t, através da ferramenta chcon:
chcon -R -t public_content_t /var/ftp.
- Caso seja necessário um diretório onde pode ser feito upload de arquivos, esses arquivos e diretórios devem ser do tipo public_content_rw_t:
chcon -t public_content_rw_t /var/ftp/incoming
Também é necessário habilitar a escrita de arquivos via ftp anônimo através da variável booleana allow_ftpd_anon_write:
setsebool -P allow_ftpd_anon_write=1
Para que essa configuração seja permanente, por exemplo, sobreviver a um relabel, é necessário adicionar uma entrada no arquivo
/etc/selinux/targeted/contexts/files/file_contexts.local:
/var/ftp(/.*)? system_u:object_r:public_content_t
/var/ftp/incoming(/.*)? system_u:object_r:public_content_rw_t
- Por padrão, a política SELinux não habilita que os usuários leiam seus arquivos do seu diretório home. Para habilitar isso, a variável booleana ftp_home_dir deve ser configurada:
setsebool -P ftp_home_dir 1
- O serviço de ftp pode funcionar como um daemon ou através do xinetd. Para rodar o servidor ftp como um daemon, configurar a variável booleana ftpd_is_daemon:
setsebool -P ftpd_is_daemon 1
service vsftpd restart
- Se o servidor ftp publicar arquivos acessados através de NFS ou CIFS, as variáveis booleanas allow_ftp_use_nfs e allow_ftp_use_cifs devem ser habilitadas.
- Se for desejado que todos os arquivos do sistema sejam lidos ou escritos através do servidor ftp, com o controle de permissão verificado somente pelo DAC, a variável booleana allow_ftpd_full_access deve ser configurada com o valor 1.
Para maior documentação sobre o uso de servidores ftp com SELinux habilitado, o comando ``man ftpd_selinux'' traz mais informações.
Jeronimo Zucco
2008-04-26