Às vezes, a execução de um processo do crontab do root pode causar problemas com a propriedade inicial do arquivo e rwx mode; esses podem não ser corretamente preservados.
Em qualquer caso:
1) para criar um novo usuário, simplifique:
$ sudo deluser my-user # if "my-user" is a regular user
$ adduser my-user
$ sudo gpasswd -a my-user sudo
2) para incluir uma nova entrada com uma tag NOPASSWD em sudoers ou em um arquivo (por exemplo, /etc/sudoers.d/60_my-user_rules ), faça os dois pontos ficarem na tag, ou seja, NOPASSWD:
Eu não vi isso antes com espaço intercalado e a regra do ano se torna:
my-user my-host = NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
A adição de (ALL) antes do NOPASSWD: é opcional, já que a regra é padronizada como (ALL:ALL) . No entanto, você pode querer não apenas executar seu cmd / script com privilégio de root, mas também executá-lo como um determinado usuário ( spec-user ) ou como um membro de um determinado grupo ( spec-group ) ou ambos. Nesse caso, a regra se torna:
my-user my-host = ([spec-user][:spec-group]) NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
Isso na verdade restringirá a eliminação de sudo sem senha a um usuário, um host e um comando. Você pode endurecer essa regra especificando o (s) parâmetro (s) opcional (is) para esse comando. Nesse caso, a regra será aplicada somente para aquele (s) parâmetro (s) exato (s).
Para scripts, você pode reforçar ainda mais essa regra, garantindo que a regra se aplique somente se o script não foi modificado de alguma forma . Esta é uma maneira de evitar o seqüestro de script. Isso é feito por meio do aliasing de cmd e da especificação de somas de SHA em /etc/sudoers.d/60_my-user_rules .
HTH. Por favor, informe se você tiver problemas com essa resposta.