Как запустить процесс с правами rootа, зная его пароль?

Тема в разделе "WASM.UNIX", создана пользователем SoftCreator, 8 ноя 2010.

  1. SoftCreator

    SoftCreator New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2010
    Сообщения:
    36
    Под Убунту у меня в такой редакции заработало:

    Код (Text):
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <unistd.h>
    4. #include <sys/wait.h>
    5. #include <pty.h>
    6. #include <string.h>
    7. #include <time.h>
    8. #include <errno.h>
    9.  
    10. volatile bool shouldExit = false;
    11.  
    12. void sigchld_hdlr (int /*signum*/)
    13. {
    14.     wait (NULL);
    15.     shouldExit = true;
    16. }
    17.  
    18. int main ()
    19. {
    20.     int fd;
    21.     int pid;
    22.     static const char passwd[] = "123456\n";
    23.     size_t len;
    24.  
    25.     struct sigaction act;
    26.     act.sa_handler = sigchld_hdlr;
    27.     sigemptyset(&act.sa_mask);
    28.  
    29.     pid = forkpty(&fd, NULL, NULL, NULL);
    30.     if(pid == 0) {
    31.         execlp("su", "su", "wtf", "-c", "whoami", NULL);
    32.         perror("execlp() error: ");
    33.         exit(1);
    34.     }
    35.     if(pid < 0) {
    36.         perror("forkpty() error: ");
    37.         return -1;
    38.     }
    39.  
    40.     sigaction(SIGCHLD, &act, NULL);
    41.     char buf[1024];
    42.     do
    43.     {
    44.         usleep(100000);
    45.         write(fd, passwd, strlen (passwd));
    46.         memset(buf, 0, sizeof(buf));
    47.         len = read(fd, buf, sizeof(buf));
    48.         if (len > 0)
    49.             write(STDOUT_FILENO, buf, len);
    50.     }
    51.     while (!shouldExit);
    52. }
    P.S. А с заменой pty.h на util.h и добавлением signal.h работает и на Хакинтоше. Сейчас буду пробовать на айфоне, если не усну.
    P.P.S. И даже на iPhone у меня su -c заработал!!! Спасибо огромное!!!