As variáveis do shell são interpretadas pelo seu shell e nunca são vistas pelo sudo ou qualquer outro programa lançado com elas. Ou seja, ao fazer foo=bar; echo "$foo"
, echo
nunca sabe que os dados que foram passados vieram de uma variável chamada "foo", porque o shell o expande antes mesmo de echo
ser executado. Por esse motivo, não é possível fazer com que as variáveis do shell funcionem de maneira transparente em seu arquivo sudoers.
Além disso, como $LOGNAME
pode ser qualquer coisa, o que você deseja fazer é essencialmente equivalente a usar uma estrela depois de /home
no seu sudoers
, independentemente de você usá-lo ou não. Eu não recomendaria fazer isso, porque você pode essencialmente copiar qualquer coisa para qualquer lugar como root, o que é um enorme risco de segurança (já que $LOGNAME
pode conter ..
). Por fim, você diz que não quer usar *
, mas a ação que você está querendo tomar é igualmente perigosa.
A melhor opção é permitir o acesso de leitura para o que estiver em /home/$LOGNAME/file_source
e o acesso de gravação para esses usuários a /var/www
. Você pode ter um grupo www-logs
que tenha leitura de grupo e gravação de grupo para esses caminhos, respectivamente.