Мне нужно написать программу на C, которая открывает оболочку bash как root. Я не мог найти функцию, которая бы это сделала. Я пытаюсь что-то вроде этого:Open bash shell как root -script
system("bash");
, но я не знаю, что дальше
Мне нужно написать программу на C, которая открывает оболочку bash как root. Я не мог найти функцию, которая бы это сделала. Я пытаюсь что-то вроде этого:Open bash shell как root -script
system("bash");
, но я не знаю, что дальше
По умолчанию программа будет открывать оболочку и запускать другие программы, как тот же пользователь, который сам по себе работает, как. То есть, если вы запустите свою программу из учетной записи root, она будет выполнять другие программы с правами root. В противном случае вы можете попробовать это:
system("echo \"password\" | sudo -S bash"); # note the different quotes
Но имейте в виду, что жесткое кодирование пароль является весьма нежелательным.
Я пытаюсь использовать вашу идею, но ее ошибка, команда «mypassword» не найдена – Rysiek64
Поскольку вы спросили, как сделать это в C, вот идея, как вы могли бы сделать это на Linux:
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void)
{
int pid = fork();
if (pid == 0)
{
# first argument: command to start ("sudo")
# second argument: program name for sudo ("$0" in shell)
# third argument: first argument to sudo, name of the command to execute as root
execlp("sudo", "sudo", "bash", NULL);
}
int status;
// wait for bash to finish
wait(&status);
return 0;
}
Проверено на Ubuntu 15.04.
Командой оболочки, которую вы, вероятно, хотите, является 'su', но для этого потребуется пароль. Вы не указали, должна ли ваша программа давать вам оболочку, не требуя пароля. Возможно, если ваш пользователь находится в списке _sudoers_, вы можете запустить 'sudo bash'. Или (опасно), вы могли бы иметь свою программу, принадлежащую root, с разрешением * setuid *. – paddy
Я изменяю файл прав собственности на root, chown и permisson от chmod 777, и он не работает. Программа должна открывать bash как root без «sudo» или пароля. – Rysiek64
@ Rysiek64 Как вы запускаете bash с правами root * без * программы C? – immibis