Автор Гілка: Єдина база даних користувачів та паролів  (Прочитано 3981 раз)

Відсутній vanessa

  • Графоман
  • ****
  • дописів: 468
  • Карма: +0/-0
Почав я копати і дещо мені не подобається. В системи - своя база користувачів та паролів (/etc/password та /etc/shadow) у самби своя (/etc/samba/smbpasswd) у mysql'a своя (таблиця в базі mysql) у cyrus'a теж вроді своя (sasl якийсь) із ним ще не розібрався. Як із цим можна боротися? хотілося б щоб всі сервіси використовували системну базу паролів. І взагалі - яка в цьому логіка ?

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1925
  • Карма: +4/-0
є декілька шляхів:
- використовувати для аутентифікації LDAP-каталог
- використовувати для аутентифікації Kerberos (можна разом з LDAP)
- використовувати для аутентифікації PAM

SASL - це лише шар безпеки, що забезпечує підтримку автентифікаціх для протоколів, орієнтовних на з'єднання - він може використовувати декілька варіантів аутентифікації (напр., LDAP або pwcheck, тобто типові паролі Unix)

логіка різних систем була в тому, що
- системи шифрування паролів в Unix та Віндовс несумісні
- а) користувачі системи не завжди прийнятні кандидати бути користувачами БД
  б) автентифікація ОС не завжди прийтнятна для БД
- LDAP дещо заскладний (порівняно з паролями Unix) і був створений пізніше

можу також зазначити, що PostgrteSQL вміє підтримувати системну автентифікацію, тобто є режим, в якому користувачі бази автентифікуються через систему, тобто база паролів єдина (користувач ОС все рівно має бути зареєстрований в БД через CREATE USER), також PgSQL підтримує декілька інших систем аутентифікації, включно з LDAP і Kerberos
http://www.postgresql.org/docs/8.2/static/auth-methods.html

підозрюю що mysql має мати щось схоже

Ось по samba та LDAP
http://www.ibm.com/developerworks/edu/l-dw-linux-ldapsamba-i.html

окрім того навіть без LDAP можна синхронізувати створення користувачів для Linux та Samba, тобто при стовренні нового користувача його пароль буде шифруватись у двох базах - shadow та samba, якщо це прийнятно, тобто нові користувачі будуть створюватись після інсталяції всіх служб - це найпростіший варіант
Fedora 35 (x86-64)

Відсутній vanessa

  • Графоман
  • ****
  • дописів: 468
  • Карма: +0/-0
окрім того навіть без LDAP можна синхронізувати створення користувачів для Linux та Samba, тобто при стовренні нового користувача його пароль буде шифруватись у двох базах - shadow та samba, якщо це прийнятно, тобто нові користувачі будуть створюватись після інсталяції всіх служб - це найпростіший варіант
Ось з цього місця можна більш детально.

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1925
  • Карма: +4/-0
man smb.conf

параграфи по
unix password sync
та
passwd program
Fedora 35 (x86-64)

Відсутній vanessa

  • Графоман
  • ****
  • дописів: 468
  • Карма: +0/-0
Це я читав, але незовсімзрозумів як воно працює. Я так розумію що це працює коли із віндовс користувач міняє свій пароль. А от яке відношення це має до adduser незрозуміло

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1925
  • Карма: +4/-0
adduser немає ніякого відношення

1. додаєте нових користувачів через adduser
2. задаєте їх паролі через smbpasswd - якщо опції у smb.conf встановлені автоматично будуть задані паролі для ОС
Fedora 35 (x86-64)

Відсутній vanessa

  • Графоман
  • ****
  • дописів: 468
  • Карма: +0/-0
тобто ставити і міняти паролі не за допомогою passwd а за допомогою smbpasswd ?

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1925
  • Карма: +4/-0
саме так
Fedora 35 (x86-64)

Відсутній vanessa

  • Графоман
  • ****
  • дописів: 468
  • Карма: +0/-0
спробував
в smb.conf написано
  unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n
перезапустив сабу, перевіряю
$ smbpasswd
Old SMB password:
New SMB password:
Retype new SMB password:
rpc_api_pipe: Remote machine 127.0.0.1 pipe \samr fnum 0x774freturned critical error. Error was Call timed out: server did not respond after 20000 milliseconds
cli_rpc_pipe_close: cli_close failed on pipe \samr, fnum 0x774f to machine 127.0.0.1.  Error was Call timed out: server did not respond after 20000 milliseconds
machine 127.0.0.1 rejected the password change: Error was : NT_STATUS_IO_TIMEOUT.
Failed to change password for vanо_vvv
хоча якщо зробити sudo smbpasswd vano_vvv тоді пароль підповідного користувача змінюється


Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1925
  • Карма: +4/-0
перепрошую за паузу, вчора нашвидкуруч пробував - вийшло щось схоже на Ваші повідомлення
сьогодні врешті спробував по серйозному
цікаво, що коли я поставив
pam password change = yes
замість програми паролю і воно не запрацювало, але потім повернув все до

# The following are needed to allow password changing from Windows to
# NOTE: Use these with 'encrypt passwords' and 'smb passwd file' above.
# NOTE2: You do NOT need these to allow workstations to change only
#        the encrypted SMB passwords. They allow the Unix password
#        to be kept in sync with the SMB password.
unix password sync = yes
# You either need to setup a passwd program and passwd chat, or
# enable pam password change
# pam password change = yes
passwd program = /usr/bin/passwd '%u'
passwd chat = *New*UNIX*password* %n\n *Re*ype*new*UNIX*password* %n\n \
*passwd:*all*authentication*tokens*updated*successfully*
перезапустив самбу і все працює під звичайним користувачем, як через
smbpasswd
так і через
smbpasswd -r localhost -U test

перевірив декілька разів

дистрибутив Mandriva, версія самби:
samba-common-3.0.24-2.2mdv2007.1

переконайтеся, що перед тим, як ви міняєте пароль користувачем, що його samba та linux паролі встановлені в одне й те саме
Fedora 35 (x86-64)