Estou escrevendo um arquivo executável unix minúsculo que altera a hora do sistema do meu macbook manualmente. É claro que isso requer uma senha e, por isso, usei a função system () para fazer interface com o terminal e alterar a data usando echo e sudo.
Veja abaixo:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
// Retrieve password:
printf("Enter Sudo Password:\n");
char *pswrd;
pswrd = getpass("Password: ");
char strA[512];
// Instruction to manually change the date:
char *strA1 = "echo \"";
char *strA2 = "\" | sudo -S date 020821002014";
// Stitch fields into one string:
strcat(strA, strA1);
strcat(strA, pswrd);
strcat(strA, strA2);
// Run string in Terminal:
system(strA);
}
Você pode criar um executável Unix para testar.
Na linha do terminal, é equivalente a: Sudo date 020821002014
> De qualquer forma, minha pergunta:
I don't like that every time I run the executable file, I have to
enter a password. Does anyone have suggestions for a way to input the
admin password once and have my MacBook recognize the executable in
future so I just have to click on the executable and change the date
effortlessly.
Ah, e eu só escolhi a data porque normalmente requer uma senha, mas isso, é claro, seria generalizado para outras instruções do administrador.
Eu sou um iniciante, então você é bem-vindo a ser um idiota para mim, eu não ficarei ofendido.
Coisas que eu considerei:
- Using root superuser, but it seems overkill - there must be another way
- Writing password into .c code directly, but that sounds sketchy, and doesn't scale easily for multiple users