Portál AbcLinuxu, 10. května 2025 02:19

Dotaz: Hesla ze samby do /etc/shadow

29.7.2008 23:30 psm | skóre: 10
Hesla ze samby do /etc/shadow
Přečteno: 673×
Odpovědět | Admin
Ahoj všichni,

jak by šlo udělat skriptem následující :

Mám server se Sambou - hesla jsou (kolem 400 hesel !) uložena standardně v souboru
/etc/samba/smbpasswd
. Teď je systém rozšířen o NFS/NIS a potřeboval bych naplnit databázi hesel
/etc/shadow
hesly ze Samby.

Je vůbec možné dekódovat zpětně hesla uložená standardním příkazem
smbpasswd -a uzivatel
a pak je uložit do
/etc/shadow   ? 
Nechci to řešit (zatím) generováním nových hesel ... Děkuji za radu :-)
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.7.2008 07:48 Alcor | skóre: 20
Rozbalit Rozbalit vše Re: Hesla ze samby do /etc/shadow
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je vůbec možné dekódovat zpětně hesla uložená standardním příkazem
smbpasswd -a uzivatel
a pak je uložit do
/etc/shadow   ? 
... domnívám se, že hesla jsou jen hash otisky,takže asi nee .

Ale třeba by Ti pomohl tento odkaz
30.7.2008 12:57 VSi | skóre: 28
Rozbalit Rozbalit vše Re: Hesla ze samby do /etc/shadow
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jak jste to napsal, to skutečně nepůjde. Hash v /etc/samba/smbpasswd a v /etc/shadow je jiný a nelze je mezi sebou převést či zaměnit.

Prvním možným řešením je povolit v Sambě synchronizaci hesel (unix password sync). Při změně hesla ve Windows se zapíše nové heslo i do /etc/shadow (při změně hesla má Samba přístup k plaintext novému heslu). Lze vynutit i změnu hesla u všech stávajících uživatelů přes Sambu. To by znamenalo že pomocí NIS se bude možné přihlásit až po změně Samba hesla. V tomto případě také nefunguje opačná synchronizace, tj. při změně unix hesla zůstane Samba heslo původní.

Když jsem řešil podobný problém, použil jsem na linuxových klientech PAM modul pam_smb_auth který umí ověřovat heslo na Samba (nebo i NT) PDC.

V /etc/pam_smb.conf se na prvním řádku uvedl název domény a na 2. řádku IP adresa PDC a případně i BDC.

# /etc/pam_smb.conf
DOMAINNAME
192.168.1.1
192.168.1.5

# /etc/pam.d/common-auth - authentication settings common to all services 
auth	sufficient	pam_smb_auth.so
auth	sufficient	pam_unix.so nullok_secure use_first_pass 

Tohle fungovalo naprosto spolehlivě. Byl jsem ve stejné situaci, kdy jsem u cca 400 uživatelů měl pouze Samba hesla.
30.7.2008 17:25 psm | skóre: 10
Rozbalit Rozbalit vše Re: Hesla ze samby do /etc/shadow
Díky ... a nebylo by tedy řešení vykašlat se na již existující smbpasswd a upravit původní skript,
který z připraveného ascii seznamu name/username/password tehdy generoval pouze
zamčený účet uživatele (z pohledu linuxu - uživateli se jen založil účet bez přístupu do linuxu) + heslo do samby ...

fungovalo to tak, že to načítalo z připraveného seznamu
/progs/USERS.TXT
a generovalo to za pomocí tohoto skriptu požadované
#!/bin/bash
 
# Use $IFS (Internal File Separator variable) to split a line of input to
# "read", if you do not want the default to be whitespace.
 
echo "List of all users:"
OIFS=$IFS; IFS=:       # /progs/USERS.TXT uses ":" for field separator.
while read trida krestni prijmeni name pswd ignore
do
echo "$trida $krestni $prijmeni"
/usr/sbin/useradd -G 100 -c $krestni" "$prijmeni" "$trida -m $name;
(echo $pswd; echo $pswd) | smbpasswd -s -a $name;
done < /progs/USERS.TXT   # I/O redirection.
IFS=$OIFS              # Restore original $IFS.
exit 0
a doplnit do něj sekvenci pro tvorbu unix hesla ? Půjde-li to ? Otázka je, jak donutit ten skript vytvořit nezablokovaného uživatele,
ale naopak funkčního uživatele i s heslem ? Víte někdo, jak to upravit ? Díky.
30.7.2008 17:58 psm | skóre: 10
Rozbalit Rozbalit vše Re: Hesla ze samby do /etc/shadow
Tak jsem si to po sobě ještě přečetl a ještě jedna poznámka:

Má to celé ještě jeden problém, protože v daném případě už těch cca 400 userů linuxově
existuje, včetně jejich home adresářů atd. a samba hesel.

Spíše by ten skript měl NEVYTVÁŘET NOVÉ uživatele (aspoň u těch, co už už existují),
ale dopsat to heslo do shadow a odstranit tu blokaci stávajícího uživatele pro linux.

Samozřejmě ta tvorba všeho nového je zajímavá pro zcela nové uživatele.
30.7.2008 19:32 VSi | skóre: 28
Rozbalit Rozbalit vše Re: Hesla ze samby do /etc/shadow
Nevím, jak je v současné konfiguraci realizováno to "blokování" uživatele. Předpokládám, že tito uživatelé mají nastaven shell na /bin/false. Podle toho vašeho skriptu je to výchozí volba, což nebývá obvyklé. Možná je to někde přenastaveno, ale to se asi v různých distribucích liší.

Takže pro odblokování uživatele by se dalo použít:

# usermod -s /bin/sh $login

A v tom skriptu by bylo:
...
echo "$trida $krestni $prijmeni"
/usr/sbin/useradd -G 100 -c $krestni" "$prijmeni" "$trida -m -s /bin/sh $name;
(echo $pswd; echo $pswd) | smbpasswd -s -a $name;
...
Nejlepší řešení bude, když zprovozníte synchronizaci hesel v Sambě (mělo by stačit povolit v /etc/samba/smb.conf), pak se při opětovném nastavení hesla přes smbpasswd nastaví i totožné unix heslo.

Bude tedy stačit pro všechny stávající uživatele skriptem provést něco jako:

(echo $pswd; echo $pswd) | smbpasswd -s $login;

Problém by mohl být s uživateli, kteří si už heslo změnili. U nově vytvářených budou unix hesla (v /etc/shadow) vytvořena automaticky (tj. není třeba ten váš skript měnit).
30.7.2008 20:06 psm | skóre: 10
Rozbalit Rozbalit vše Re: Hesla ze samby do /etc/shadow
Díky za reakci ... vysvětlím : není to tak - ta blokace je "disable" která vzikla automaticky (viz man useradd) tím,
že ten původní skript založil do passwd jen uživatele, ale nezadal hesla (tehdy nebyly potřeba ani žádoucí)
a passwd příkaz v takové situaci defaultně udělá účet "disable".

Shell mají všichni na /bin/bash. Tudíž by mělo stačit jen ta hesla zadat ... možná pro potřeby doplnění hesel tam, kde nejsou
použít ten skript upraveně a zapisovat hesla pomocí chpasswd.

Tudíž problém "disabled" hesel se asi nemusí řešit (to by měl příkaz chpasswd snad opravit sám tím, že vytvoří nová hesla).

A pouze všechny další nové řešit jinak ... současně se sambou :-)
31.7.2008 01:20 psm | skóre: 10
Rozbalit Rozbalit vše Re: Hesla ze samby do /etc/shadow - vyřešeno
Tak kdyby to někdo potřeboval - už to chodí : takže nejprve samotný skript, který ze souboru "heslo" zapisuje
potřebné :
#!/bin/bash
echo "User passwords change"
OIFS=$IFS; IFS=:;         
while read trida krestni prijmeni name pswd ignore
do
echo "$trida $krestni $prijmeni $name $pswd";
echo "$name":"$pswd" | chpasswd;
done < /root/heslo
IFS=$OIFS
exit 0
přičemž já to měl původně na naplnění celé databáze Samby uživateli,
takže soubor heslo je v následujícím formátu (jde o školu, takže pojmy jako třída atd.):
třída:křestní jméno:příjmení:uživatelské jméno:heslo
a pak je to celé i s tvorbou uživatelů Samby + linuxu komplet
#!/bin/bash
echo "List of all users:"
OIFS=$IFS; IFS=:       # /root/heslo uses ":" for field separator.
while read trida krestni prijmeni name pswd ignore
do
echo "$trida $krestni $prijmeni $name $pswd";
/usr/sbin/useradd -G 100 -c $krestni" "$prijmeni" "$trida -m $name;
(echo $pswd; echo $pswd) | smbpasswd -s -a $name;
echo "$name":"$pswd" | chpasswd;
done < /root/heslo   # I/O redirection.
IFS=$OIFS              # Restore original $IFS.
Pochopitelně se pro účely pouhého doplnění unixových hesel dá načítat tabulka jen se sloupci
username:password  - v našem případě name:pswd
Snad to někdo využije.

Ještě upozornění : příkaz chpasswd se switchem -m ani -e v Mandrivě 2008.1 nechodí
ale četl jsem o problémech i na jiných distrech (Memory overlow a pád !)
31.7.2008 08:52 psm | skóre: 10
Rozbalit Rozbalit vše Re: Hesla ze samby do /etc/shadow - vyřešeno
jo a u toho druhého skriptu na konci chybí :
...
exit 0
viz ten 1. skript - sorry - překlep

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.