Ola, Estou desenvolvendo uma aplicação web de uso interno em que e necessário fazer o upload de um arquivo. A parte que processar o upload esta em php (devido a ser mais fácil), e funcionando. O problema e que, o arquivo precisa ser gravado ou ter as permissões de um outro usuário, que não seja o www-data:www-data. Pelo que me lembre, isso pode ser feito via um suid wrapper. O webserver e o lighttpd. Achei duas soluções possíveis: O Execwrap http://stbuehler.de/debianserver/execwrap.html Não tem pacote debian, precisaria compilar. E o pacote debian sbox-dtc, e esse que estou tentando configurar. O problema e que as configurações exemplo são para o apache, e estou usando o lighttpd. Pelo que entendi, preciso reescrever a url de /cgi-bin/algo.php para /cgi-bin/sbox/algo.php E o .php ser interpretado pelo sbox. A configuração ficou assim:
alias.url += ( "/cgi-bin/" => "/usr/lib/cgi-bin/" ) url.rewrite = ( "^/cgi-bin/(.*)" => "/cgi-bin/sbox/$1" ) $HTTP["url"] =~ "^/cgi-bin/" { cgi.assign = ( ".php" => "/usr/lib/cgi-bin/sbox" ) } Só que, vem vez de executar o sbox, e feito o download arquivo sbox, com o nome do script php. Ou o sbox reporta o seguinte no log: [Mon Sep 21 11:23:40 2015] sbox[22024]: Please specify the script to run with the format: "/cgi-bin/sbox/script/to/run". O exemplo para o apache e esse: <VirtualHost 10.0.0.1:80> ServerName www.example.com ScriptAlias /cgi-bin /usr/lib/cgi-bin AddHandler php-cgi-wrapper .php Action php-cgi-wrapper /cgi-bin/sbox AddHandler python-cgi-wrapper .py Action python-cgi-wrapper /cgi-bin/sbox AddHandler ruby-cgi-wrapper .rb Action ruby-cgi-wrapper /cgi-bin/sbox AddHandler ruby-cgi-wrapper .pl Action ruby-cgi-wrapper /cgi-bin/sbox Options +ExecCGI DocumentRoot /var/www/example.com/html RewriteEngine on RewriteCond %{REQUEST_URI} ^!/cgi-bin.* RewriteRule ^(.*) /cgi-bin/sbox/$1 [PT] DirectoryIndex index.php index.cgi index.pl index.py index.rb index.htm index.html index.php4 </VirtualHost> Sugestões de como fazer o sbox rodar no lighttpd? Ou, outra solução para gravar o arquivo. Outras opções que já considerei, além do wrapper. fast-cgi (um daemon a mais rodando) ftp (precisa de um ftpd) scp (autenticação por chave) samba (php tem cliente?) cron copiando o arquivo para o destino final e com as permissões necessárias. (atraso na disponibilidade do arquivo) mudar o grupo que o ligthttpd roda. (segurança) Além da mais trabalhosa, um httpd (C, perl, python, php, etc) especifico para a tarefa. Ainda não tentei com o Execwrap. -- Paulino Kenji Sato