URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 97190
[ Назад ]

Исходное сообщение
"Заведение пользователя линукс через фаил"

Отправлено Doc , 28-Апр-18 14:30 
Господа подскажите как можно заводить пользователей liux черз файл ответов ?

Содержание

Сообщения в этом обсуждении
"Заведение пользователя линукс через фаил"
Отправлено ыы , 28-Апр-18 14:49 
> Господа подскажите как можно заводить пользователей liux черз файл ответов ?

Ответов на что?


"Заведение пользователя линукс через фаил"
Отправлено Doc , 28-Апр-18 15:03 
>> Господа подскажите как можно заводить пользователей liux через файл ответов ?
> Ответов на что?

ну скажи сторонней программой был сформировать файл с нужными параметрами (логином там паролем хомфолдером) и чтобы данными  из этого файла автоматом создать пользователя



"Заведение пользователя линукс через фаил"
Отправлено ыы , 28-Апр-18 15:10 
>>> Господа подскажите как можно заводить пользователей liux через файл ответов ?
>> Ответов на что?
> ну скажи сторонней программой был сформировать файл с нужными параметрами (логином там
> паролем хомфолдером) и чтобы данными  из этого файла автоматом создать
> пользователя

пользователи в linux заводятся с помощью консольной утилиты.
Да, в можете сформировать скрипт на shell, в котором последовательно делать вызовы утилиты создающей пользователя в системе, назначать ему права и так далее.


"Заведение пользователя линукс через фаил"
Отправлено Doc , 28-Апр-18 15:38 
>>>> Господа подскажите как можно заводить пользователей liux через файл ответов ?
>>> Ответов на что?
>> ну скажи сторонней программой был сформировать файл с нужными параметрами (логином там
>> паролем хомфолдером) и чтобы данными  из этого файла автоматом создать
>> пользователя
> пользователи в linux заводятся с помощью консольной утилиты.
> Да, в можете сформировать скрипт на shell, в котором последовательно делать вызовы
> утилиты создающей пользователя в системе, назначать ему права и так далее.

я понимаю что создают с помощью shell
и мне не нужно последовательно спрашивать данные, мне нужно их импортировать из файла



"Заведение пользователя линукс через фаил"
Отправлено PereresusNeVlezaetBuggy , 28-Апр-18 19:30 
>[оверквотинг удален]
>>>> Ответов на что?
>>> ну скажи сторонней программой был сформировать файл с нужными параметрами (логином там
>>> паролем хомфолдером) и чтобы данными  из этого файла автоматом создать
>>> пользователя
>> пользователи в linux заводятся с помощью консольной утилиты.
>> Да, в можете сформировать скрипт на shell, в котором последовательно делать вызовы
>> утилиты создающей пользователя в системе, назначать ему права и так далее.
> я понимаю что создают с помощью shell
> и мне не нужно последовательно спрашивать данные, мне нужно их импортировать из
> файла

man useradd

И цикл «while read ...»


"Заведение пользователя линукс через фаил"
Отправлено Doc , 07-Май-18 15:47 
>[оверквотинг удален]
>>>> паролем хомфолдером) и чтобы данными  из этого файла автоматом создать
>>>> пользователя
>>> пользователи в linux заводятся с помощью консольной утилиты.
>>> Да, в можете сформировать скрипт на shell, в котором последовательно делать вызовы
>>> утилиты создающей пользователя в системе, назначать ему права и так далее.
>> я понимаю что создают с помощью shell
>> и мне не нужно последовательно спрашивать данные, мне нужно их импортировать из
>> файла
> man useradd
> И цикл «while read ...»

подскажите    -p password    Encrypted password as returned by crypt(3)
как я понимаю необходимо указывать уже зашифрованный пароль , в какой системе его необходимо зашифровать и есть ли возможность указывать пароль обычным текстом (не зашифрованным)


"Заведение пользователя линукс через фаил"
Отправлено lavr , 07-Май-18 16:09 
>[оверквотинг удален]
>>> я понимаю что создают с помощью shell
>>> и мне не нужно последовательно спрашивать данные, мне нужно их импортировать из
>>> файла
>> man useradd
>> И цикл «while read ...»
> подскажите    -p password    Encrypted password as
> returned by crypt(3)
> как я понимаю необходимо указывать уже зашифрованный пароль , в какой системе
> его необходимо зашифровать и есть ли возможность указывать пароль обычным текстом
> (не зашифрованным)

чтение man'ов никто не отменял, остальное зависит от того механизма
авторизация пользователей: локальные (в системе) или в ldap/kerberos и тд и тп
если системные - см shadow и поддерживаемые hash методы: des, md5 based, sha256 based ...

ну например так:

useradd -m -p $(openssl passwd -1 ${PASSWORD}) -s /bin/bash ${USERNAME}

ps. поиск linux batch useradd должен помочь


"Заведение пользователя линукс через фаил"
Отправлено Doc , 07-Май-18 17:28 

> ну например так:
> useradd -m -p $(openssl passwd -1 ${PASSWORD}) -s /bin/bash ${USERNAME}
> ps. поиск linux batch useradd должен помочь

вот что получилось


i=$(cat user.txt)
set -- $i
useradd -d $2 -s /bin/false -g ftp -c $3 $1
mkdir $2
chown -R -f -v $1:ftp $2
echo "$1:$4" | chpasswd

вроде работает


"Заведение пользователя линукс через фаил"
Отправлено PereresusNeVlezaetBuggy , 07-Май-18 17:56 

>> ну например так:
>> useradd -m -p $(openssl passwd -1 ${PASSWORD}) -s /bin/bash ${USERNAME}
>> ps. поиск linux batch useradd должен помочь
> вот что получилось
> i=$(cat user.txt)
> set -- $i

Вот это — ужасно.

Во-первых, вы читаете весь файл целиком и держите в памяти.

Во-вторых, его содержимое, включая пароль пользователя, теперь светится в выводе ps.

Если надо читать из файла — сделайте простой цикл:

while read user dir gecos pw; do
...
done <user.txt

Если заведомо известно, что строчка одна, можно сделать просто read, без цикла.


"Заведение пользователя линукс через фаил"
Отправлено Doc , 07-Май-18 21:17 
>>> ну например так:
>>> useradd -m -p $(openssl passwd -1 ${PASSWORD}) -s /bin/bash ${USERNAME}
>>> ps. поиск linux batch useradd должен помочь
>> вот что получилось
>> i=$(cat user.txt)
>> set -- $i
> Вот это — ужасно.
> Во-первых, вы читаете весь файл целиком и держите в памяти.

не вижу проблемы , там за раз одна строчка
> Во-вторых, его содержимое, включая пароль пользователя, теперь светится в выводе ps.

сколько смотрел , но так и не поймал чтобы useradd  там засветился
> Если надо читать из файла — сделайте простой цикл:

я изначально не селен в написание скрипта sell , это то целый день гуглил
> while read user dir gecos pw; do

а эту строку вообще не понимаю  :)



"Заведение пользователя линукс через фаил"
Отправлено PereresusNeVlezaetBuggy , 08-Май-18 09:56 
>>>> ну например так:
>>>> useradd -m -p $(openssl passwd -1 ${PASSWORD}) -s /bin/bash ${USERNAME}
>>>> ps. поиск linux batch useradd должен помочь
>>> вот что получилось
>>> i=$(cat user.txt)
>>> set -- $i
>> Вот это — ужасно.
>> Во-первых, вы читаете весь файл целиком и держите в памяти.
> не вижу проблемы , там за раз одна строчка

Вопрос формирования привычек. Чтобы потом не было мучительно больно. Можете считать это преподавательским занудством. :)

>> Во-вторых, его содержимое, включая пароль пользователя, теперь светится в выводе ps.
> сколько смотрел , но так и не поймал чтобы useradd  там
> засветился

Ручками не поймаете, а вот нехорошая прога (например, сломанный браузер, или какой-нибудь тухлый сервис) — поймает.

>> Если надо читать из файла — сделайте простой цикл:
> я изначально не селен в написание скрипта sell , это то целый
> день гуглил
>> while read user dir gecos pw; do
> а эту строку вообще не понимаю  :)

read VAR1 VAR2 VAR3 ...

Считывает строку со стандартного ввода и записывает каждое найденное слово в указанные переменные VAR1, VAR2 и так далее. В последнюю из перечисленных переменных (в данном случае VAR3) попадает весь оставшийся текст в строке. Команда read возвращает 0 при успешном чтении, не-0 при ошибке (например, достигнут конец файла). Поэтому она легко кладётся в цикл — получается «читать строку и разбивать на четыре части до конца файла».

В приведённом мной примере четыре переменные названы user, dir, gecos и pw, по аналогии с вашим скриптом выше.


"Заведение пользователя линукс через фаил"
Отправлено Doc , 08-Май-18 10:46 
>[оверквотинг удален]
>> а эту строку вообще не понимаю  :)
> read VAR1 VAR2 VAR3 ...
> Считывает строку со стандартного ввода и записывает каждое найденное слово в указанные
> переменные VAR1, VAR2 и так далее. В последнюю из перечисленных переменных
> (в данном случае VAR3) попадает весь оставшийся текст в строке. Команда
> read возвращает 0 при успешном чтении, не-0 при ошибке (например, достигнут
> конец файла). Поэтому она легко кладётся в цикл — получается «читать
> строку и разбивать на четыре части до конца файла».
> В приведённом мной примере четыре переменные названы user, dir, gecos и pw,
> по аналогии с вашим скриптом выше.

спасибо за разъяснение, буду пробовать


"Заведение пользователя линукс через фаил"
Отправлено Doc , 08-Май-18 15:04 
>[оверквотинг удален]
>> read VAR1 VAR2 VAR3 ...
>> Считывает строку со стандартного ввода и записывает каждое найденное слово в указанные
>> переменные VAR1, VAR2 и так далее. В последнюю из перечисленных переменных
>> (в данном случае VAR3) попадает весь оставшийся текст в строке. Команда
>> read возвращает 0 при успешном чтении, не-0 при ошибке (например, достигнут
>> конец файла). Поэтому она легко кладётся в цикл — получается «читать
>> строку и разбивать на четыре части до конца файла».
>> В приведённом мной примере четыре переменные названы user, dir, gecos и pw,
>> по аналогии с вашим скриптом выше.
> спасибо за разъяснение, буду пробовать

что-то не могу понять - read
вроде параметр -u должен считывать из файла , но что-то он возвращает пустые значения

read -u /home/user.txt user dir pw gecos
useradd -d $dir -s /bin/false -g ftp -c $gecos $user
mkdir $dir
chown -R -f -v $user:ftp $dir
echo "$user:$pw" | chpasswd

read: /home/user.txt: invalid file descriptor specification


"Заведение пользователя линукс через фаил"
Отправлено VladimirV , 08-Май-18 18:37 
> что-то не могу понять - read
> вроде параметр -u должен считывать из файла , но что-то он возвращает
> пустые значения
> read -u /home/user.txt user dir pw gecos
> useradd -d $dir -s /bin/false -g ftp -c $gecos $user
> mkdir $dir
> chown -R -f -v $user:ftp $dir
> echo "$user:$pw" | chpasswd
>  read: /home/user.txt: invalid file descriptor specification

во-первых
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
-u fd  Read input from file descriptor fd.
что такое дескриптор файла?
http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.htm...
почитать
http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.htm...


"Заведение пользователя линукс через фаил"
Отправлено Doc , 20-Сен-18 14:38 
>[оверквотинг удален]
>> echo "$user:$pw" | chpasswd
>>  read: /home/user.txt: invalid file descriptor specification
> во-первых
> read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars]
> [-p prompt] [-t timeout] [-u fd] [name ...]
> -u fd  Read input from file descriptor fd.
> что такое дескриптор файла?
> http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.htm...
> почитать
> http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.htm...

как говорится для потомков , вот что получилось рабочие

#!/bin/sh
exec 10< /ftp/user.txt
read -u 10 user pw dir da gecos
data=`date -d "+$da day+" "+%F"`
echo $user $pw $dir $data $gecos
useradd -d $dir -m -s /bin/false -g ftp -c "$gecos" -e $data $user
echo "$user:$pw" | chpasswd
rm /srv/ftp/add_users/user.txt


формат файла который обрабатывается

user pass home_dir время жизни описание