Como permitir que o usuário do servidor web acione scripts que precisam de permissões sudo?

Como permitir que o usuário do servidor web acione scripts que precisam de permissões sudo?

É possível fazer com que o usuário do servidor web, lighttpdno meu caso, acione um script específico que precisa ser executado com sudopermissões?

Eu só quero que o lighttpdusuário seja capaz de acionar esse script com sudopermissões.

O script, vamos chamá-lo createFolder.sh, cria uma pasta a partir de um modelo no nível superior de um compartilhamento. Os usuários não têm permissão de gravação no nível superior do compartilhamento, mas devem ter permissão de gravação na estrutura de pastas recém-criada. Portanto, o script configura as permissões corretas nas subpastas e é daí que sudovem a necessidade de usar ( chown, chmode setfacl).

A razão pela qual eu gostaria de usar uma interface web para isso é para que os usuários possam inserir os dados para o nome da pasta e as configurações que definirão a estrutura exata da pasta.

Achei que seria tão simples quanto adicionar uma entrada /etc/sudoerspara permitir que o lighttpdusuário executasse createFolder.shsem senha. Parece que eu estava errado quando recebo o seguinte erro:

sudo: não foi possível mkdir /var/db/sudo/lighttpd: Permissão negada

Esperamos que você tenha recebido a palestra habitual do administrador do sistema local. Geralmente se resume a estas três coisas:

1) Respeite a privacidade dos outros.
2) Pense antes de digitar.
3) Com grande poder vem uma grande responsabilidade.

sudo: nenhum tty presente e nenhum programa askpass especificado

Se fosse possível definir o script para sempre ser executado como um usuário com as permissões corretas, isso resolveria o problema, mas não consegui descobrir como fazê-lo ou se é possível.

Como observação lateral, aprendi Linux sozinho e, mesmo que me sinta confiante em minhas habilidades, não sou especialista e estou sempre em busca de melhorar.

Estou executando uma caixa CentOS 7.

EDITAR: Resolvi o problema usando o inotify para acionar meu createFolder.shscript quando um arquivo de texto é modificado. Veja a resposta correta e seus comentários. Obrigado por me apontar na direção certa, pessoal.

Responder1

Você deve fazer com que o script raiz "puxe" do regular, em vez de fazer com que o último "empurre" para o primeiro. Como exemplo ilustrativo:

  1. Crie um cron job que verifique uma lista de pastas a serem criadas em um arquivo de texto
  2. Faça com que o script do usuário lighttpd anexe a pasta desejada a esse arquivo de texto

Você pode fazer isso de maneira mais elegante com um sistema de filas/mensagens, mas isso depende de você.

informação relacionada