Вопрос по shell – Useradd с использованием генерации пароля шифрования

16

Я работаю над тем, что, как мне показалось, было очень простым сценарием для динамического создания пользователя FTP с использованием 'arad; Есть несколько частей этого процесса, с которыми я не знаком, и целый день исследований не дал мне слишком далеко. Вот что у меня есть:

password="pass"
pass=$(perl -e 'print crypt($ARGV[0], "wtf")' $password)
useradd -d HOME_DIR -s /bin/bash -g GROUP -p $pass -f -1 testing

Заметки

  1. HOME_DIR and GROUP are placeholders
  2. I am not having issues with the home/base_dir (-d, -b) or group (-g) functionality of 'useradd'

темы:

  1. Why are my password generation efforts not working?
  2. is /bin/bash the correct shell to use for a purely FTP user, or would I use /bin/false or a different shell?
  3. By default, useradd disables an account until they provide their own password, how do I bypass this?
  4. I do not want to use the passwd utility as it cripples my ability to automagically generate FTP accounts, I found a solution to this here, but I do not understand the solution

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

Ваш Ответ

2   ответа
25

32.3 Encrypting Passwords

Function: char * crypt (const char *key, const char *salt)

The crypt function takes a password, key, as a string, and a salt character array which is described below, and returns a printable ASCII string which starts with another salt. It is believed that, given the output of the function, the best way to find a key that will produce that output is to guess values of key until the original value of key is found.

The salt parameter does two things. Firstly, it selects which algorithm is used, the MD5-based one or the DES-based one. Secondly, it makes life harder for someone trying to guess passwords against a file containing many passwords; without a salt, an intruder can make a guess, run crypt on it once, and compare the result with all the passwords. With a salt, the intruder must run crypt once for each different salt.

For the MD5-based algorithm, the salt should consist of the string $1$, followed by up to 8 characters, terminated by either another $ or the end of the string. The result of crypt will be the salt, followed by a $ if the salt didn't end with one, followed by 22 characters from the alphabet ./0-9A-Za-z, up to 34 characters total. Every character in the key is significant.

For the DES-based algorithm, the salt should consist of two characters from the alphabet ./0-9A-Za-z, and the result of crypt will be those two characters followed by 11 more from the same alphabet, 13 in total. Only the first 8 characters in the key are significant.

The MD5-based algorithm has no limit on the useful length of the password used, and is slightly more secure. It is therefore preferred over the DES-based algorithm.

When the user enters their password for the first time, the salt should be set to a new string which is reasonably random. To verify a password against the result of a previous call to crypt, pass the result of the previous call as the salt.

В зависимости от вашей системы, также может быть семейство Blowfish или SHA-2cryptтакже, и возможно, что традиционный DES может быть отключен для безопасности. PAM также может добавить сюда свои сложности.

     ID       |    Method
  -------------------------------
     1        |  MD5 (Linux, BSD)
     2a       |  Blowfish (OpenBSD)
     md5      |  Sun MD5
     5        |  SHA-256 (Linux, since glibc 2.7)
     6        |  SHA-512 (Linux, since glibc 2.7)

Как говорится,

root# useradd -d / -g users -p $(perl -e'print crypt("foo", "aa")') -M -N foo
user$ su - foo
Password: foo
foo$ ^D
root# userdel foo

прекрасно работает в моей системе.

Что касается оболочки:

/sbin/nologin Традиционно для пользователей с отключенным входом. Вы должны будете дважды проверить конфигурацию вашего демона FTP, чтобы увидеть, исключает ли это их из доступа по FTP.

Что касается отключенной учетной записи:

Как видно выше, у меня работает, как и ожидалось, если дать рабочий пароль.

О другом решении:

Что вы не понимаете по поводу альтернативного решения? Это кажется мне очень понятным.

Просто труба & quot;username:password& Quot; в & quot;chpasswd& Quot ;.

Если вам нужны только пользователи FTP, я бы порекомендовал использовать демон FTP, который поддерживает виртуальных пользователей, таких какglftpd, Pure-FTPd, ProFTPD, Vsftpd... на самом деле кажется, что все обычные делают. Таким образом, учетная запись FTP не требует реальной системной учетной записи.

Извините, я никогда не благодарил вас за ответ 7 месяцев назад. Ваше решение сработало, спасибо :) Sandwich
Вы также можете: useradd -p & quot; $ (echo -n ПАРОЛЬ | openssl passwd -crypt -stdin) & quot; и passwd имеет флаг stdin, поэтому я не пробовал его, но echo -n пароль | passwd --stdin пользователь может работать.
чтоaa?
+1 заJust pipe "username:password" into "chpasswd".
1

FTP only & quot; пользователи, вы должны посмотреть наrssh Установите rssh для своего дистрибутива и установите оболочку для & quot; Только FTP & quot; пользователь в / usr / bin / rssh & quot;

Работает очень хорошо

Спасибо! Это на самом деле не сработает для того, что я делал 7 месяцев назад, но оно сработает для того, над чем я сейчас работаю. : D Sandwich

Похожие вопросы