Попытка принудительно запустить `su' в ptyLinux

Ответить
Anonymous
 Попытка принудительно запустить `su' в pty

Сообщение Anonymous »

У меня есть оболочка, в которой я переключаюсь на другого пользователя с помощью su -lotheruser, в основном это работает
Но когда для su не выделен pty, возникает ошибка:

Код: Выделить всё

su: must be run from a terminal
Итак, я попытался обернуть su кодом для создания pty:

Код: Выделить всё

#include 
#include 
#include
#include 

int main (int argc, char *argv[])
{
int fd;
char* args[] = {"/bin/su", "-l", "anotheruser", NULL };
char name[16] = {0};
int pid ;

pid = forkpty(&fd, name, NULL, NULL);
if (pid != -1) {
printf("\n pty: [%s]\n", name);
if (execve(args[0], args, NULL) == -1) {
printf("\n execve: failed\n");
}
} else {
printf("\n forkpty: failed \n");
}

return 0;
}

Но, похоже, это не работает..
Я что-то упускаю, но не могу понять.. нужно ли мне
перенаправить стандартный ввод/ stdout перед execve()?


Подробнее здесь: https://stackoverflow.com/questions/788 ... u-in-a-pty
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»