Idealmente, se você estiver personalizando quais comandos podem ser executados via sudo
, você deve fazer essas alterações em um arquivo separado em /etc/sudoers.d/
, em vez de editar o arquivo sudoers
diretamente. Você também deve sempre usar visudo
para editar o (s) arquivo (s). Você NUNCA deve conceder os comandos NOPASSWD
on ALL
.
Exemplo:
sudo visudo -f /etc/sudoers.d/myWebScript
Insira sua permissão de concessão de linha:
www-data ALL= NOPASSWD: /home/evermind/scripts/
A maneira como você ligava se quisesse restringir é especificamente para um diretório para sh
que você usaria:
www-data ALL= NOPASSWD: /bin/sh /home/evermind/scripts/
Não sei por que esses scripts exigiriam sudo
access. Normalmente, você poderia usar apenas chmod o+x scriptname.sh
e verificar se eles estavam em um diretório de propriedade do usuário www-data
.
Em seguida, salve e saia e visudo
avisará se você tiver erros de sintaxe.
Você pode executar sudo -l
para ver as permissões concedidas a seu usuário, se qualquer um dos comandos NOPASSWD
específicos do usuário aparecer ANTES de qualquer comando %groupyouarein ALL=(ALL) ALL
na saída, será solicitada sua senha.
Se você estiver criando muitos desses arquivos sudoers.d, talvez queira criá-los com nomes por usuário, para que sejam mais fáceis de visualizar. Tenha em mente que a ordenação dos NOMES DE ARQUIVO e das REGRAS dentro do arquivo é muito importante, o ÚLTIMO carregado carrega, seja MAIS ou MENOS permissivo que as entradas anteriores.
Você pode controlar a ordenação de nomes de arquivos usando um prefixo de 00-99 ou aa / bb / cc, mas lembre-se de que, se tiver ALGUNS arquivos que não tenham prefixo numérico, eles serão carregados após o número arquivos, sobrescrevendo as configurações. Isso ocorre porque, dependendo das configurações de idioma, a "ordenação lexical" do shell usa os primeiros tipos de classificação e, em seguida, pode intercalar maiúsculas e minúsculas ao classificar em ordem "crescente".
Tente executar printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
e printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
para ver se o seu idioma atual imprime AaBbCc
etc ou ABC
then abc
para determinar qual seria o melhor prefixo de letra "último" a usar.