Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2010, 15:58   #1
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию Аутентификация рута в GNU/Linux

Здравствуйте.

Есть такая тема: программа вызывается от имени юзера. Она создаёт дочерний процесс как обычно fork'ом. В нём нужны права рута только для выполнения chroot, потом права юзера нужно вернуть. Пароль рута известен. Как можно реализовать аутентификацию в программе, чтоб всё было супер?

ЗЫ Было мнение запускать от имени рута, только после chroot делать setuid на юзера. Хотя надо ещё попробовать вариант делать на старте программы seteuid на юзера, а в дочернем процессе вернуть опять же через seteuid на рута и обратно через setuid.
Carbon вне форума Ответить с цитированием
Старый 31.08.2010, 18:45   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Так что, ни у кого нету мыслей???
Carbon вне форума Ответить с цитированием
Старый 31.08.2010, 19:42   #3
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

можно попробовать вызвать system( "тут команда bash" );, предварительньно подключив unistd.h. Оно?
nowaalex вне форума Ответить с цитированием
Старый 31.08.2010, 20:17   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Зачем мне вызывать system ?
Carbon вне форума Ответить с цитированием
Старый 31.08.2010, 20:24   #5
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Зачем мне вызывать system ?
Ну ведь ясно же написали, передаете туда команду для баша (текстовая строка).

Код:
system("chroot + что-то еще, ну как будто вы в командной строке пишете что-то");
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 31.08.2010, 20:29   #6
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

идея примерно такая
system("su -l -cкоманда");
только остался ньюанс с паролем...
А его вы введете прямо в bash)

Последний раз редактировалось nowaalex; 31.08.2010 в 20:31.
nowaalex вне форума Ответить с цитированием
Старый 31.08.2010, 20:52   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Я бы ввёл, да консоль недоступна. Да и ввод пароля нужно автоматизировать.
Carbon вне форума Ответить с цитированием
Старый 31.08.2010, 21:44   #8
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

советовал бы погуглить в сторону expect. Эта утилита позволяет сделать что-то подобное
mysql -uuser -ppassword в su. Другого способа я не вижу. Вообще сохранение пароля в текстовом виде для su или sudo - дыра. Поэтому они не учитывают такой опции. Expect, как я понял - TCL - подобная утилита. В TCL не силён, на данный момент помочь с expect не могу(
nowaalex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти GNU c++ Brakus Общие вопросы C/C++ 6 15.02.2012 16:08
Что такое GNU? mike_tihomirov Свободное общение 16 20.04.2010 13:21
Кто юзает GNU/Linux? Levsha100 Свободное общение 6 11.02.2010 23:04
Литература по GNU PASCAL Utkin Qt и кроссплатформенное программирование С/С++ 1 03.07.2009 10:22