hasło synchronizacji samby z hasłem uniksowym w debian wheezy


11

Zainstalowałem sambę na swoim serwerze i próbuję napisać skrypt, aby oszczędzić mi dwóch kroków dodawania użytkownika, np .:

adduser username
smbpasswd -a username

Moje smb.confstany:

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

Dalsze czytanie doprowadziło mnie do pdbeditstrony man, która stwierdza:

   -a     This option is used to add a user into the database.  This  com-
          mand needs a user name specified with the -u switch. When adding
          a new user, pdbedit will also ask for the password to be used.

          Example: pdbedit -a -u sorce
          new password:
          retype new password

          Note

          pdbedit does not call the unix password syncronisation script if
          unix password sync has been set. It only updates the data in the
          Samba user database.

          If you wish to add a user and synchronise the password that  im-
          mediately, use smbpasswd’s -a option.

Więc ... teraz postanowiłem spróbować dodać użytkownika z smbpasswd:

Pierwsza próba, użytkownik unix nadal nie istnieje:

root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.

Druga próba, użytkownik unix istnieje:

root@raspberrypi:/home/pi# useradd mag
root@raspberrypi:/home/pi# smbpasswd -a mag
New SMB password:
Retype new SMB password:
Added user mag.
# switch to user pi, and try to switch to mag
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag
Password: 
su: Authentication failure

Więc teraz zadaję sobie pytanie:

  1. jak mogę synchronizować hasła samby z hasłami uniksowymi?
  2. gdzie są przechowywane hasła samby?

Czy ktoś może mi pomóc oświecić?


Hasła są przechowywane w bazach danych w /var/lib/samba/, myślę, że hasła są, secrets.tdbale nie jestem pewien. Co do twojego poprzedniego pytania, wątpię, aby istniał prosty sposób.
Zoredache,

Odpowiedzi:


10

Cóż ... brakującym linkiem było:

 libpam-smbpass

Po zainstalowaniu tych pakietów działa zgodnie z oczekiwaniami. Pamięć długoterminowa Internetu czasami po prostu dostarcza częściowych informacji. Aby więc temu przeciwdziałać, publikuję tutaj poprawny link do synchronizacji haseł samby z hasłami unixowymi , a także własny test.

root@raspberrypi:/home/pi# passwd mag2
passwd: user 'mag2' does not exist
root@raspberrypi:/home/pi# useradd mag2
root@raspberrypi:/home/pi# echo "mag2:12345" | chpasswd
root@raspberrypi:/home/pi# smbclient -L localhost -U mag2
Enter mag2's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (raspberrypi server)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

    Server               Comment
    ---------            -------
    RASPBERRYPI          raspberrypi server

    Workgroup            Master
    ---------            -------
    WORKGROUP            
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag2
Password: 
Added user mag2.

mag2@raspberrypi:/home/pi$ 

Mam nadzieję, że to pomaga komuś innemu.

aktualizacja 2017:

libpam-smbpassjest przestarzałe . Wygląda na to, co go zastąpiło pam_winbindd. Aby zainstalować, możesz zainstalować pakiet libpam-winbind. To jednak nadal nie synchronizuje haseł samby z hasłami uniksowymi. Zamiast tego umożliwia uwierzytelnianie w systemie UNIX za pomocą serwera uwierzytelniania systemu Windows (AD). Informacje na ten temat można znaleźć tutaj: https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller


2
Link jest zerwany, dlatego w odpowiedzi umieszczamy cenne informacje: /
ubiquibacon

@ubiquibacon Zredagowałem tę odpowiedź, dzięki czemu link wskazuje teraz zarchiwizowaną wersję z Wayback Machine (dzięki dobrej pracy wykonanej przez osoby z Archiwum Internetowego).
Anthony Geoghegan

1
pam_smbpass wydaje się być przestarzały
alex.forencich,

Tak, nie mogę już znaleźć libpam-smbpassw systemie Debian 9.1 i to też nie działa dla mnie. Jak to możliwe, że tak proste pytanie zadawano tyle razy i wciąż nie ma odpowiedzi?
Frank Breitling,

@ Oz123 Żaden z nich libpam-winbindNIE może być znaleziony w CentOS7.
CHENJIAN

3

Chciał skomentować poprzednią odpowiedź, ale nie mógł tego zrobić z powodu braku punktów reputacji. Próbowałem umieścić całą treść tej odpowiedzi, ale nie mogłem, ponieważ napisano, że wygląda jak spam. Oto dostęp do pełnej zawartości na maszynie powrotnej, a poniżej jest krótka wersja głównych punktów:

Synchronizacja haseł w systemach Unix i Samba na Debian Etch

Zainstaluj następujące pakiety:

# apt-get install libpam-smbpass smbclient

Unix -> Samba

Aby zaktualizować hasło Samby za każdym razem, gdy użytkownik zmieni swoje hasło uniksowe, zmień

/etc/pam.d/common-password: z

password   required   pam_unix.so nullok obscure min=4 max=8 md5

do

password   requisite**  pam_unix.so nullok obscure min=4 max=8 md5
password   required   pam_smbpass.so nullok use_authtok try_first_pass

Zmiana „wymagane” na „wymagane” dla pam_unix sprawi, że jeśli zmiana hasła uniksowego się nie powiedzie, wykonanie wtyczek kończy się natychmiast.

Aby to zadziałało, użytkownicy muszą już mieć konta Samba, a ich hasła Samby muszą pasować do haseł Uniksa. Ponieważ niekoniecznie tak jest, musimy się zmienić

/etc/pam.d/common-auth: from

auth    required        pam_unix.so nullok_secure

do

auth    requisite       pam_unix.so nullok_secure
auth    optional        pam_smbpass.so migrate

Spowoduje to utworzenie użytkownika Samby, jeśli jeszcze nie istnieje, i zmianę hasła na hasło uniksowe za każdym razem, gdy użytkownik zaloguje się przy użyciu SSH lub innej usługi korzystającej z domyślnego uwierzytelnienia systemowego (common-auth).

Powinieneś zobaczyć komunikat Dodano użytkownika podczas logowania przy użyciu SSH z kontem, które nie ma jeszcze konta Samba.

Ponieważ spowoduje to również utworzenie konta Samba dla roota, możesz chcieć wyłączyć dostęp do roota w Sambie (Debian Etch ma to domyślnie wyłączone):

/etc/samba/smb.conf:

invalid users = root

Zastrzeżenie : To nie zadziała, jeśli użytkownik zaloguje się za pośrednictwem SSH lub innych usług bez użycia hasła (na przykład przy użyciu uwierzytelniania za pomocą klucza publicznego / prywatnego). W takim przypadku PAM nie będzie mieć hasła w postaci zwykłego tekstu, które jest potrzebne do utworzenia hasła Samby.

Uwaga : Po zmodyfikowaniu wspólnego hasła, aby wymagało również aktualizacji haseł Samby, wszyscy zalogowani użytkownicy nie będą mogli zmienić swojego hasła przy użyciu „passwd”, dopóki się nie zalogują, chyba że mają już istniejące konto Samba z hasłem równym na swoje hasło uniksowe.

Samba -> Unix

Polecamy Sambie używać PAM podczas zmiany haseł:

/etc/samba/smb.conf:

unix password sync = yes
pam password change = yes

Zrestartuj Sambę, używając /etc/init.d/samba restart.

Skonfiguruj PAM do obsługi zmiany hasła przez Sambę, dodając @include wspólne hasło:

/etc/pam.d/samba:

@include common-auth
@include common-account
@include common-session
@include common-password

Użyje tego samego mechanizmu do zmiany haseł podczas korzystania z Samby, jak przy korzystaniu z „passwd”. Oznacza to, że będzie wymagać aktualizacji hasła uniksowego przed próbą zmiany hasła Samby.

Tworzenie nowych użytkowników

użyj chpasswd, aby uniknąć błędu:

# useradd test
# echo “test:newpass” | chpasswd

pam_smbpass wydaje się być przestarzały
alex.forencich

@Joru Dzięki kompilacji źródłowej samby 4.9.1 na CentOS7 nie ma pliku pam_smbpass.so. Możesz mi pomóc? link: stackoverflow.com/questions/52932070/…
CHENJIAN

@CHENJIAN SAMBA.ORG usunął pam_smbpass.so ze źródeł z SAMBA 4. Tak więc w ostatniej wersji Samby udało mi się znaleźć to samba 3.9.16
Axel Werner
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.