Portál AbcLinuxu, 10. května 2025 09:49

Dotaz: Samba + pam + MySQL nefunguje

29.1.2008 17:12 samy
Samba + pam + MySQL nefunguje
Přečteno: 1252×
Odpovědět | Admin
Zdavim. Snazim se nastavit sambu tak, aby brala ucty z mysql. Je to pro mne o hodne snazsi nez nastavovat ldap. Problem je v tom, ze me to odmitne prihlasit. Na strane serveru je ale evidentne vsechno ok, nic o spatnem prihlaseni nevypisuje a uzivatele overi. Klient ale vypise
6612: session setup failed: ERRDOS - ERRnoaccess (Access denied.)
SMB connection failed
V sambě jsem nastavil log level na 10. uvedu podstatné části logu:
...
  smb_pam_account: PAM: Account OK for User: pokus
[2008/01/29 17:07:54, 4] auth/pampass.c:smb_pam_setcred(595)
  PAM: Account Management SetCredentials for User: pokus
[2008/01/29 17:07:54, 4] auth/pampass.c:smb_pam_setcred(611)
  smb_pam_setcred: PAM: SetCredentials OK for User: pokus
[2008/01/29 17:07:54, 4] auth/pampass.c:smb_pam_end(440)
  smb_pam_end: PAM: PAM_END OK.
[2008/01/29 17:07:54, 3] smbd/sec_ctx.c:pop_sec_ctx(339)
  pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 0[2008/01/29 17:07:54, 5] auth/auth.c:check_ntlm_password(273)
  check_ntlm_password: unix authentication for user [pokus] FAILED with error NT_STATUS_NO_SUCH_USER
[2008/01/29 17:07:54, 2] auth/auth.c:check_ntlm_password(319)
  check_ntlm_password:  Authentication for user [pokus] -> [pokus] FAILED with error NT_STATUS_NO_SUCH_USER
[2008/01/29 17:07:54, 5] auth/auth_util.c:free_user_info(1867)
  attempting to free (and zero) a user_info structure
[2008/01/29 17:07:54, 10] auth/auth_util.c:free_user_info(1871)
  structure was created for pokus
[2008/01/29 17:07:54, 3] smbd/error.c:error_packet(162)
  error packet at smbd/sesssetup.c(1093) cmd=115 (SMBsesssetupX) eclass=1 ecode=5
[2008/01/29 17:07:54, 5] lib/util.c:show_msg(485)
[2008/01/29 17:07:54, 5] lib/util.c:show_msg(495)
...
[2008/01/29 17:07:54, 10] smbd/process.c:setup_select_timeout(1284)
  change_notify_timeout: -1
[2008/01/29 17:07:54, 10] lib/util_sock.c:read_data(525)
  read_data: read of 4 returned 0. Error = Success
[2008/01/29 17:07:54, 10] lib/util_sock.c:receive_smb_raw(672)
  receive_smb_raw: length < 0!
[2008/01/29 17:07:54, 3] smbd/process.c:timeout_processing(1359)
  timeout_processing: End of file from client (client has disconnected).
[2008/01/29 17:07:54, 5] lib/gencache.c:gencache_shutdown(94)
  Closing cache file
[2008/01/29 17:07:54, 5] libsmb/namecache.c:namecache_shutdown(79)
  namecache_shutdown: netbios namecache closed successfully.
[2008/01/29 17:07:54, 3] smbd/sec_ctx.c:set_sec_ctx(241)
  setting sec ctx (0, 0) - sec_ctx_stack_ndx = 0
[2008/01/29 17:07:54, 5] auth/auth_util.c:debug_nt_user_token(448)
  NT user token: (NULL)
[2008/01/29 17:07:54, 5] auth/auth_util.c:debug_unix_user_token(474)
  UNIX token of user 0
  Primary group is 0 and contains 0 supplementary groups
[2008/01/29 17:07:54, 5] smbd/uid.c:change_to_root_user(283)
  change_to_root_user: now uid=(0,0) gid=(0,0)
[2008/01/29 17:07:54, 3] smbd/connection.c:yield_connection(69)
  Yielding connection to 
[2008/01/29 17:07:54, 3] smbd/server.c:exit_server_common(675)
  Server exit (normal exit)
Pokud to spravne chapu, tak nestaci mit jen zalezitosti pro pam v /etc/pam.d/samba, ale pro home adresare apod. je potreba jeste nss. Nastavil jsem tedy mysql modul pro nss a aktivoval ho v /etc/nsswitch.conf. Postupoval jsem podle prikladu na http://libnss-mysql.sourceforge.net/libnss-mysql/sample/linux/, takze by to melo byt ok. Kde tedy muze byt problem?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.1.2008 18:56 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vypíše vám getent paswd jméno-uživatele správné údaje o zvoleném uživateli (uid, skupina atd.)? Pokud ne, je NSS špatně nakonfigurované, nebo nefunguje. Taky je potřeba dávat pozor na to, že NSS je (myslím) postavené na tom, že změní knihovny, které program používá pro získávání informací o uživatelích – tudíž pro program platí konfigurace platná v době startu programu. Spolu s NSS se taky často používá kešování, v čemž může být další problém. Nebo to řeknu jinak – při konfigurování NSS jsem si nikdy nebyl jistý, jestli to nefunguje kvůli aktuálně špatné konfiguraci, nebo kvůli tomu, že se z nějakého důvodu používají staré údaje…

Ale z toho logu mi to připadá, jako by uživatel v unixu existoval, protože PAM žádnou chybu nehlásí, a k chybě dojde až při ověřování hesla…
29.1.2008 22:16 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Ten getent je ale zavisly i na konfiguraci pamu ne? Takze to mi nebude fungovat. Mam nastaveny pam s mysql jen pro sambu, common-auth apod. jsou defaultni.
30.1.2008 10:19 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Ten getent je ale zavisly i na konfiguraci pamu ne?
Ne.
29.1.2008 23:40 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Odpovědět | | Sbalit | Link | Blokovat | Admin
"getent passwd pokus" nevrati nic
30.1.2008 08:31 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
V tom případě uživatel pokus pro systém neexistuje. PAM podle mne slouží jenom k autentizaci, getent zjištujě informace o uživateli – jméno, domovský adresář, výchozí shell… NSS se používá právě k tomu, aby tyhle informace mohly být uložené i jinde než v klasických souborech /etc/passwd.
30.1.2008 15:13 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Takze to znamena, ze musim zeditovat i systemove pam konfiguraky jako common-auth,common-account, aby ten ucet primo videl sam system? Jaky je duvod toho, ze nestaci mit pam pro sambu a v nsswitch.conf mit pred compat mysql?
30.1.2008 15:30 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Podle mne PAM je autorizaci, tedy ověření přístupových práv. Se samotnou existencí či neexistencí účtu to nemá nic společného. Naopak NSS jsou informace o účtu. Tj. o existenci či neexistenci účtu rozhoduje NSS, o možnosti přihlásit se (nějakým způsobem autorizace – nejčastěji heslem) rozhoduje PAM. Pro Sambu tudíž není PAM potřeba vůbec (Samba ověřuje hash hesel a není schopná PAMu předat původní heslo v plaintextu), naopak je potřeba NSS.
31.1.2008 20:31 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak uz o mysql system vi, dokonce jsem to vyzkousel tak, ze jsem nastavil pam v common-* a nyni se muzu i prihlasit do systemu na ucty, ktere jsou v mysql. Getent vypisuje spravne. Ale samba porad odmita primontovat adresar. V logu jsem tentokrat objevil:
[2008/01/31 20:24:52, 10] smbd/share_access.c:user_ok_token(208)
  User pokus not in 'valid users'
[2008/01/31 20:24:52, 2] smbd/service.c:make_connection_snum(580)
  user 'pokus' (from session setup) not permitted to access this share (pokus)
smb.conf
[global]
        workgroup = WORKGROUP
        server string = samba file services at WORKGROUP
        security = USER
        #must be set to 'no' to use PAM
        encrypt passwords = no
        obey pam restrictions = yes
        pam password change = yes
        update encrypted = No
        allow trusted domains = Yes
        log level = 10

[pokus]
        path = /home/pokus
        valid users = pokus
        admin users = pokus
        writeable = Yes
/home/pokus existuje a ma uid a gid uzivatele pokus. Primarni skupina pro pokus existuje. Tak kde je teda problem?
31.1.2008 20:56 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Ten smb.conf je celý? Zkuste zakomentovat valid users i admin users, pokud není valid users uvedeno, mají ke sdílení přístup všichni. Jakou chybovou hlášku dostanete od Windows při pokusu o přístup na to sdílení? Zkusil bych ještě pro testování to sdílení přejmenovat, aby nedocházelo ke konfliktu s [homes] (i když explicitně pojmenované sdílení by mělo mít přednost).
31.1.2008 21:04 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Ten smb.conf je takhle cely, je to jen zkusebni. Od windows nevim, mam jen linux a mapovat jsem zkousel z localhost.
31.1.2008 21:10 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Aha, a při tom mapování z Linuxu nevypíše mount nebo jádro nějakou hlášku? Zkusil bych pátrat ještě v tom logu dřív, jestli tam nebude třeba seznam uživatelů ve valid users pro dané sdílení, jak ho vidí Samba, nebo něco jiného zajímavého. Při úrovni logování 10 je Samba strašně ukecaná :-)
31.1.2008 21:48 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Pokud zakomentuju valid users a admin users tak to jde.
31.1.2008 21:51 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
A pokud necháte jenom jednu z těch položek? admin users znamená, že uživatel tam bude přistupovat s právy roota, to by snad pro běžný provoz nemělo být potřeba.
31.1.2008 21:54 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Zjistil jsem ze problem dela valid users, pokud tam je, tak to nefunguje a nevim proc. Z logu vypliva ze se to loguje jako uzivatel pokus tak kde hledat problem?
31.1.2008 22:03 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Máte všude správně ID uživatelů? Tj. není možné, že unix vidí uživatele pokus s nějakým uid, a Samba s nějakým jiným? Nebo nemá naopak stejné uid víc uživatelů? Napadá mne jedině možnost, že by Samba po převodu jména pokus u valid users na uid a přihlašovaného uživatele na uid dostala pokaždé něco jiného. Mapování uživatelů podle konfiguráku nepoužíváte… Můžete zkusit s vypnutým valid users nějaký soubor vytvořit, jakého bude mít vlastníka…
31.1.2008 22:26 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Pokud vytvorim soubor na pripojenem smb oddilu, tak ma spravne uid, patri to uzivateli pokus.
31.1.2008 22:28 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
A uid uzivatele pokus je v systemu jen jednou.
31.1.2008 23:08 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Uz vim kde je problem ale nevim jak ho vyresit. Samba totiz pouziva pam pro autentizaci. To sice funguje, ale valid users se overuje proti souboru smbpasswd, protoze jakmile do neho pridal uzivatele pokus, zacne to s valid users fungovat. Jak by se dalo osetrit, aby vse(co asi dela krome valid users) bralo pres pam/nss a ne pres smbpasswd?
1.2.2008 08:11 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Není mi moc jasné, jak může Samba ověřovat hesla přes PAM. Ověřování v sítích Winows funguje tak, že server pošle nějakou výzvu klientovi, ten z hesla a výzvy spočítá hash a ten pošle zpět. Samba z hesla a poslané výzvy spočítá to samé a výsledek porovná s tím, co poslal klient (ve skutečnosti se tedy nepoužívá přímo heslo, ale jeho hash, ale to na principu nic nemění). Samba tedy potřebuje heslo (resp. jeho hash) umět zjistit. PAM funguje na opačném principu – pošlete mu heslo, a PAM vrátí výsledek – zda je správné nebo ne. Takže není způsob, jak z PAMu heslo zjistit. Takže Samba nemůže heslo přes PAM ověřovat.

Může to fungovat opačně – PAM může ověřovat hesla přes Sambu (tj. uživatel v unixu zadá heslo, z toho se udělá hash, ten se zahashuje spolu s výzvou a od serveru dostanu odpověď, zda heslo souhlasí). PAM se dá také použít pro synchronizaci hesel – jediný okamžik, kdy se heslo posílá z klienta v otevřeném formátu, je při změně hesla. Samba umožňuje v tom okamžiku změnit heslo i jinde, např. právě přes PAM.

Není to spíš tak, že ve vaší konfiguraci se uživatel pokus namapoval na hosta, protože k němu Samba nenašla žádný záznam v databázi uživatelů?
1.2.2008 10:05 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Mozne to je, ale bez valid users mi to funguje vse i uid a gid vytvorenych souboru jsou spravne, tak nevim. Ale jak sambu prinutim,aby si seznam uzivatelu stahla pres to nss a nahledala v /etc/samba/smbpasswd?
1.2.2008 10:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
V dokumentaci je seznam možných způsobů uložení údajů o uživatelích popsán pod Password Backends. V případě, že je zakázáno šifrování hesel (encrypt passwords = no), by mělo fungovat i ověřování jen na základě unixových uživatelských účtů (pak to opravdu funguje přes PAM – předtím jsem si nevšiml, že používáte nešifrovaná hesla). Pak ale bude potřeba správně nastavit passdb backend = plaintext.
1.2.2008 10:56 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Takhle to nepujde.
 Error loading module '/usr/lib/samba/pdb/plaintext.so': /usr/lib/samba/pdb/plaintext.so: cannot open shared object file: No such file or directory
[2008/02/01 10:54:20, 0] passdb/pdb_interface.c:make_pdb_method_name(174)
  No builtin nor plugin backend for plaintext found
[2008/02/01 10:54:20, 0] lib/util.c:smb_panic(1599)
  PANIC (pid 14170): pdb_get_methods_reload: failed to get pdb methods for backend plaintext

[2008/02/01 10:54:20, 0] lib/util.c:log_stack_trace(1706)
  BACKTRACE: 7 stack frames:
   #0 /usr/sbin/smbd(log_stack_trace+0x23) [0x822c3c3]
   #1 /usr/sbin/smbd(smb_panic+0x46) [0x822c4b6]
   #2 /usr/sbin/smbd [0x81eafc1]
   #3 /usr/sbin/smbd(initialize_password_db+0xe) [0x81eb00e]
   #4 /usr/sbin/smbd(main+0x591) [0x82c2d11]
   #5 /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xc8) [0xb7c45ea8]
   #6 /usr/sbin/smbd [0x8082b11]
[2008/02/01 10:54:20, 0] lib/fault.c:dump_core(173)
  dumping core in /var/log/samba/cores/smbd
1.2.2008 11:45 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Žkuste se podívat do toho adresáře /usr/lib/samba/pdb/, zda se ten modul nejmenuje nějak jinak. Jinak asi máte Sambu bez podpory tohoto modulu (což není tak překvapivé, ten modul se moc nepoužívá), takže byste buď musel získat/zkompilovat tenhle modulem, nebo použít přihlašování se šifrovanými hesly. Pokud ale používáte MySQL jako databázi účtů, neměl by v tom být problém, prostě použijete pdb-mysql modul (asi bude potřeba jej doinstalovat).
1.2.2008 11:55 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Ta ten jsem koukal. Koluji ale informace, ze neni oficialne podporovan a ze je nestabilni ci co.
1.2.2008 12:01 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
A je do verze 3.0.23, ja mam samba 3.0.24.
1.2.2008 12:22 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Není oficiálně podporován, je to projekt nezávislý na vývojářích Samby. O nestabilitě nevím, používal jsem modul pro PostgreSQL, který je na tom s vývojem a podporou ještě daleko hůř, a fungovalo to :-) Modul pro 3.0.23 by mohlo fungovat i pro 3.0.24, pokud se nezměnilo rozhraní (což by se v setinkových verzích měnit nemělo).
1.2.2008 13:13 samy
Rozbalit Rozbalit vše Re: Samba + pam + MySQL nefunguje
Tak jsem ho zkompiloval a nastavil a uz to jde. Diky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.