terça-feira, 21 de julho de 2015

Pacote do thttpd para o CentOS 7


Seguindo a mesma linha anterior, este pacote contém o servidor web minimalista thttpd compilado no CentOS 7. Não está presente nem no repositório oficial nem no EPEL. Está no Fedora, porém seu estado é (novidade!) deplorável.

Removi todos os programas extras. Tem apenas o daemon e mais nada. Refiz o sistema de compilação com um Makefile simples. Binário é PIE + Full RELRO.

Trata-se da versão 2.27 com patches diversos vindos do openSUSE e do Gentoo, mais uma pequena modificação minha para evitar logs duplicados — em algumas partes mensagens iguais eram enviadas tanto para stderr quanto syslog. /etc/thttpd.conf é mínimo e configura apenas o arquivo de log (/var/log/thttpd.log). Várias configurações padrão do daemon são definidas na hora da compilação atrás de defines. No pacote, está o config.h usado, cujas modificações principais listo abaixo. A man page é bastante útil.

ALWAYS_CHROOT: chama sempre chroot() na pasta de dados. Pode ser desativado com nochroot no arquivo de configuração — não recomendado.
USE_USER_DIR: automaticamente usa a pasta home do usuário sobre o qual o daemon roda como pasta de dados. Pode ser alterado colocando dir= no arquivo.
ERR_DIR não definido: apenas mensagens de erro internas são exibidas.
GENERATE_INDEXES: habilita geração de páginas listando conteúdo dos diretórios.

A pasta de dados é /var/www/thttpd (root:root, 0755). O que importa para o servidor são as permissões para os outros. Em diretórios, r-x ativa a geração de índices, --x desativa e --- proíbe acesso (conteúdo descendente incluso). Em arquivos, r-- disponibiliza-os e --- proíbe acesso. Permissão de execução em arquivos (r-x) proíbe acesso a menos que o nome encaixe-se no padrão usado em cgipat (em branco se não for especificado: CGI_PATTERN não é definido em config.h).

Este RPM não verifica (rpm -V) as permissões de /var/www/thttpd caso você retire a permissão de leitura para outros ali. Apenas cuide que, ao reinstalar ou atualizar o pacote, o RPM redefinirá as permissões, consequentemente será necessário refazer a modificação.

Para mudar a pasta de dados de lugar, configure dir=/bla/bla e coloque o rótulo do SELinux httpd_sys_content_t nela. Exemplo:

# semanage fcontext -a -e /var/www /bla/bla

É necessário ativar o boleano httpd_run_stickshift do SELinux, do contrário o deamon falhará ao mudar as permissões do arquivo de log:

# setsebool -P httpd_run_stickshift 1

Servidorzinho superleve e sem frescuras, que uso internamente para conteúdo estático. Sua única dependência binária é a glibc.

Download:
(este post será atualizado com novas versões à medida que saírem)

SRPM: thttpd-2.27-2.src.rpm (73,1 KiB)
RPM: thttpd-2.27-2.x86_64.rpm (60,7 KiB)

MD5:

74b4f02f5a236e852cae086cf86f582a  thttpd-2.27-2.src.rpm
413e47616df97d462c1d59372815398a  thttpd-2.27-2.x86_64.rpm

Changelog:

* Qua Jul 13 2016 XXX - 2.27-2
- Adicionados alguns tipos MIME
  (7z, ico, iso, webm, webp, xps)

* Qua Jul 13 2016 XXX - 2.27-1
- thttpd 2.27
- Removido patch obsoleto

* Qui Dez 17 2015 XXX - 2.26-4
- Requerer explicitamente systemd >= 209, melhor prevenir
  do que remediar
- Adicionar tag Group

* Qua Dez 16 2015 XXX - 2.26-3
- KillMode=mixed, requer systemd 209 ou superior
  (CentOS 7.2.1511+)
- Descrever usuário thttpd

* Qua Out 07 2015 XXX - 2.26-2
- .dat como application/x-ns-proxy-autoconfig
- Usar %autosetup

* Seg Jul 20 2015 XXX - 2.26-1
- Reempacotamento inicial

Nenhum comentário:

Postar um comentário