Como fazer com que o Mac OS lembre a autenticação anterior. do meu arquivo executável

0

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:

  1. Using root superuser, but it seems overkill - there must be another way
  2. Writing password into .c code directly, but that sounds sketchy, and doesn't scale easily for multiple users
    
por McMath 24.08.2018 / 21:13

1 resposta

0

Outro método (que não deixa a senha por aí nem a expõe a várias listas de processos e ferramentas de diagnóstico) seria definir uma entrada NOPASSWD no arquivo de configuração sudo que permite apenas o comando date ser executado, possivelmente um comando date exato:

fixmeyourusernamehere ALL=(root) NOPASSWD: /bin/date 020821002014

com este conjunto na parte inferior do arquivo /etc/sudoers (melhor editado com sudo visudo , embora), então o usuário fixmeyourusernamehere deve ser capaz de executar a configuração 'sudo date 020821002014 without a password, but not any other commands (unless the sudo' permite-lhes outros comandos ).

    
por 24.08.2018 / 22:12