É possível fazer com que o usuário do servidor web, lighttpd
no meu caso, acione um script específico que precisa ser executado com sudo
permissions?
Eu só quero que o usuário lighttpd
seja capaz de acionar esse script com sudo
de permissões.
O script, vamos chamá-lo de 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ões 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 é aí que a necessidade de usar sudo
vem de ( chown
, chmod
e setfacl
).
O motivo pelo qual eu gostaria de usar uma interface da 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 simples adicionar uma entrada em /etc/sudoers
para permitir que o usuário lighttpd
executasse o createFolder.sh
sem senha. Parece que eu estava errado quando recebi o seguinte erro:
sudo: unable to mkdir /var/db/sudo/lighttpd: Permission denied
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
1) Respect the privacy of others.
2) Think before you type.
3) With great power comes great responsibility.
sudo: no tty present and no askpass program specified
Se fosse possível definir o script para sempre ser executado como um usuário com as permissões corretas, ele seria classificado, mas não consegui encontrar como fazer isso ou se é possível.
Como nota a parte, aprendi Linux por conta própria e, mesmo que me sinta confiante em minhas habilidades, não sou especialista e estou sempre procurando melhorar.
Estou executando uma caixa do CentOS 7.
EDIT : Eu resolvi o problema usando o inotify para acionar meu script createFolder.sh
quando um arquivo de texto é modificado. Veja a resposta correta e seus comentários. Obrigado por me apontar na direção certa, pessoal.