The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Создание пользователей из программы на С"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Создание пользователей из программы на С"  
Сообщение от Pavel.D email on 10-Авг-08, 18:01 
Друзья имеется следующая задача:
Есть программа на языке Си. Нужно реализовать возможность создания пользователя системы FreeBSD, возможность изменения пароля какого-либо пользователя.

Каким образом это можно сделать?
Сейчас даже не особо важно посредством чего это будет сделано - функциями Си или системным вызовом (exec).

Если речь пойдет про системный вызов, какую команду можно использовать для этого?
Уточню, необходима команда в один пресест, ну то есть чтобы не запрашивала дополнительных действий как например passwd, которая просит указать пароль, повторить его.

Заранее благодарен за ответы

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Создание пользователей из программы на С"  
Сообщение от angra (ok) on 10-Авг-08, 19:46 
Это же open source, глянь исходники useradd и passwd.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Создание пользователей из программы на С"  
Сообщение от Pavel.D email on 10-Авг-08, 20:13 
>Это же open source, глянь исходники useradd и passwd.

к сожалению не получилось их найти. Подскажите пожалуйста, как их посмотреть.

а если системным вызовом делать так (для юзера тестер):
execle("/usr/bin/passwd","passwd","tester",NULL);


можно ли как-нибудь указать что именно "отдать" на запрос пароля и повтора пароля?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Создание пользователей из программы на С"  
Сообщение от v.i.t (??) on 10-Авг-08, 22:12 
>>Это же open source, глянь исходники useradd и passwd.
>
>к сожалению не получилось их найти. Подскажите пожалуйста, как их посмотреть.
>
>а если системным вызовом делать так (для юзера тестер):
>execle("/usr/bin/passwd","passwd","tester",NULL);
>
>
>можно ли как-нибудь указать что именно "отдать" на запрос пароля и повтора
>пароля?

` useradd  ...  -p пароль `        для создания пользователя  с указанием пароля

` echo tester:пароль | chpasswd -e `          для изменения пароля без повтора

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Создание пользователей из программы на С"  
Сообщение от Pavel.D email on 10-Авг-08, 23:07 
>[оверквотинг удален]
>>
>>можно ли как-нибудь указать что именно "отдать" на запрос пароля и повтора
>>пароля?
>
> ` useradd  ...  -p пароль `    
>    для создания пользователя  с указанием пароля
>
>
> ` echo tester:пароль | chpasswd -e `    
>     для изменения пароля без повтора

оно же для Линукса?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Создание пользователей из программы на С"  
Сообщение от Pavel.D on 11-Авг-08, 11:58 
>>>можно ли как-нибудь указать что именно "отдать" на запрос пароля и повтора
>>>пароля?

Оказалось просто.
echo "pass" | pw usermod -u 1005 -h 0

Каким бразом эту конструкцию можно использовать в execl() ?

Подскажите, где посмотреть исходники pw ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Создание пользователей из программы на С"  
Сообщение от phpcoder email(??) on 11-Авг-08, 12:01 
>Подскажите, где посмотреть исходники pw ?

http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/pw/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Создание пользователей из программы на С"  
Сообщение от Pavel.D on 11-Авг-08, 15:15 
>>>>можно ли как-нибудь указать что именно "отдать" на запрос пароля и повтора
>>>>пароля?
>
>Оказалось просто.
>echo "pass" | pw usermod -u 1005 -h 0
>
>Каким бразом эту конструкцию можно использовать в execl() ?

Получилось сделать таким образом

#include <stdio.h>
#include <string.h>
#include <unistd.h>


int main()
{
int fds[2];
pid_t pid;
if(pipe(fds)<0)
{
  perror("pipe failed");
  exit(1);
}
if((pid=fork())<0)
{
  perror("fork failed");
  exit(2);
}
if(pid==0)
{
  close(fds[1]);
  dup2(fds[0], 0);
  execl("/usr/sbin/pw", "pw","usermod","-u","1005","-h","0", NULL);
  perror("failed to run pw");
}
else
{
  close(fds[0]);
  dup2(fds[1], 1);
  execl("/bin/echo", "echo","zxcv", NULL);
  perror("failed to run ls");
}
exit(0);
}


Скорее всего есть способ намного прощее. Если кто знает, прошу подсказать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Создание пользователей из программы на С"  
Сообщение от vodz email on 11-Авг-08, 15:55 
>  dup2(fds[1], 1);
>  execl("/bin/echo", "echo","zxcv", NULL);
>  perror("failed to run ls");

Даа...

эти 3 строки заменить на write(fds[1], "zxcv", 4);

> exit(0);

return 0;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Создание пользователей из программы на С"  
Сообщение от Pavel.D email on 11-Авг-08, 18:37 
>[оверквотинг удален]
>>  execl("/bin/echo", "echo","zxcv", NULL);
>>  perror("failed to run ls");
>
>Даа...
>
>эти 3 строки заменить на write(fds[1], "zxcv", 4);
>
>> exit(0);
>
>return 0;

да, благодарю.

Друзья, не порекомендуете книги по программированию в unix?
Есть очень неплохая
"Хрестоматия по программированию на Си в Unix"
но, к сожалению, не настолько подробная, как хотелось бы.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Создание пользователей из программы на С"  
Сообщение от Michelnok (??) on 11-Авг-08, 19:20 
>
>Друзья, не порекомендуете книги по программированию в unix?

Стивенс У., Раго С., "UNIX. Профессиональное программирование"
http://www.symbol.ru/catalog/book/503720

или

Рочкинд М., "Программирование для UNIX"
http://www.bhv.ru/books/book.php?id=10141

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
MIRhosting
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру