Portál AbcLinuxu, 30. dubna 2025 15:26
Cil:
Samba PDC + overovani v LDAP
Dokumentace:
Tento zapis vychazi z OpenLDAP-SambaPDC-OrgInfo-Posix. Dalsim zdrojem informaci bylo skoleni LNX04 - Samba 3.0 + LDAP. Uzivatelum Windows Vista doporucuji dokument Samba 3 and Windows Vista Clients.
Vychozi stav:
minimalni instalace Debian Lenny - ridime se stylem cim mene sluzeb bezi, tim je potencionalne vetsi bezpecnost, a ja mam rad jednoduche a funkcni nastaveni serveru.
Priprava:
apt-get install openssh-server
- instalace OpenSSH serveru
apt-get install mc
- instalace duleziteho administracniho nastroje
hostname -f
- kontrola nazvu serveru
debian.firma.cz
- vysledek
Instalace LDAP serveru
apt-get install slapd ldap-utils
- instalace LDAP serveru - zadat heslo admina LDAP - napr. "heslo"
Inslalace LDAP schema pro Sambu
apt-get install samba-doc
- v dokumentaci jsou ulozeny schemata pro podporu Samby v LDAP
/usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz
rozbalit do
/etc/ldap/schema
Nastaveni LDAP serveru
generovani SSHA klice admin hesla - potrebujeme pro zapis do konfiguracniho souboru
slappasswd New password: Re-enter new password: {SSHA}pIvoDvRnYaqX7nfwlMIZD8vjxMRXC6Rn
edit /etc/ldap/slapd.conf
... # Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema # The base of your directory in database #1 suffix "dc=firma,dc=cz" # rootdn directive for specifying a superuser on the database. This is needed # for syncrepl. rootdn "cn=admin,dc=firma,dc=cz" rootpw {SSHA}pIvoDvRnYaqX7nfwlMIZD8vjxMRXC6Rn ...
edit /etc/ldap/ldapd.conf
... BASE dc=firma,dc=cz ...
Restart LDAP serveru a kontrola nastaveni
/etc/init.d/slapd restart Stopping OpenLDAP: slapd. Starting OpenLDAP: slapd
ldapsearch -xLLL -b "dc=firma,dc=cz" dn: dc=firma,dc=cz objectClass: top objectClass: dcObject objectClass: organization o: firma.cz dc: firma dn: cn=admin,dc=firma,dc=cz objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator
v tuto chvili je v LDAP databazi ulozeny jen admin
Instalace Samby
apt-get install samba smbclient libpam-smbpass
priprava sdilenych systemovych adresaru
mkdir -v /var/lib/samba/profiles chmod 777 /var/lib/samba/profiles mkdir -v -p /var/lib/samba/netlogon
edit /etc/samba/smb.conf
[global] # Domain name .. workgroup = FIRMA # Server name - as seen by Windows PCs .. netbios name = DEBIAN # Be a PDC .. domain logons = Yes domain master = Yes # Be a WINS server .. wins support = true obey pam restrictions = Yes dns proxy = No os level = 35 log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d pam password change = Yes # Allows users on WinXP PCs to change their password when they press Ctrl-Alt-Del unix password sync = no ldap passwd sync = yes # Printing from PCs will go via CUPS .. load printers = yes printing = cups printcap name = cups # Use LDAP for Samba user accounts and groups .. passdb backend = ldapsam:ldap://localhost # This must match init.ldif .. ldap suffix = dc=firma,dc=cz # The password for cn=admin MUST be stored in /etc/samba/secrets.tdb # This is done by running 'sudo smbpasswd -w'. ldap admin dn = cn=admin,dc=firma,dc=cz # 4 OUs that Samba uses when creating user accounts, computer accounts, etc. # (Because we are using smbldap-tools, call them 'Users', 'Computers', etc.) ldap machine suffix = ou=Computers ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap idmap suffix = ou=Idmap # Samba and LDAP server are on the same server in this example. ldap ssl = no # Scripts for Samba to use if it creates users, groups, etc. add user script = /usr/sbin/smbldap-useradd -m '%u' delete user script = /usr/sbin/smbldap-userdel %u add group script = /usr/sbin/smbldap-groupadd -p '%g' delete group script = /usr/sbin/smbldap-groupdel '%g' add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g' delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g' set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u' # Script that Samba users when a PC joins the domain .. # (when changing 'Computer Properties' on the PC) add machine script = /usr/sbin/smbldap-useradd -w '%u' # Values used when a new user is created .. # (Note: '%L' does not work properly with smbldap-tools 0.9.4-1) logon drive = H: logon home = \\debian\%U logon path = \\debian\Profiles\%U logon script = logon.bat # This is required for Windows XP client .. server signing = auto server schannel = Auto [homes] comment = Home Directories valid users = %S read only = No browseable = No [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon admin users = root guest ok = Yes browseable = No [Profiles] comment = Roaming Profile Share # would probably change this to elsewhere in a production system .. path = /var/lib/samba/profiles read only = No profile acls = Yes browsable = No [printers] comment = All Printers path = /var/spool/samba use client driver = Yes create mask = 0600 guest ok = Yes printable = Yes browseable = No public = yes writable = yes admin users = root write list = root [print$] comment = Printer Drivers Share path = /var/lib/samba/printers write list = root create mask = 0664 directory mask = 0775 admin users = root
testparm
- test konfigurace Samby
touch /etc/samba/smbusers
- vytvoreni souboru s aliasy uzivatelu Samby
edit /etc/samba/smbusers
root = administrator admin nobody = guest pcguest smbguest
/etc/init.d/samba restart
- restart Samby
vlozeni admin LDAP hesla do Samby
smbpasswd -W Setting stored password for "cn=admin,dc=firma,dc=cz" in secrets.tdb New SMB password: Retype new SMB password:
Kontrola nastaveni Samby
smbclient -L debian -U anonymous% Anonymous login successful Domain=[FIRMA] OS=[Unix] Server=[Samba 3.2.5] Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers Share IPC$ IPC IPC Service (Samba 3.2.5) Anonymous login successful Domain=[FIRMA] OS=[Unix] Server=[Samba 3.2.5] Server Comment --------- ------- DEBIAN Samba 3.2.5 Workgroup Master --------- ------- FIRMA DEBIAN
Instalace smbldap-tools
apt-get install smbldap-tools
balik scriptu pro pripravu LDAP databaze pro Sambu, prace s uzivateli, skupinami Samby, atd.
obsahuje tyto prikazy
# smbldap-groupadd - add a new group # smbldap-groupdel - delete a group # smbldap-groupmod - modify a group, including adding or removing members # smbldap-groupshow - show the properties of a group, including members # smbldap-passwd - change a user password # smbldap-populate - populate LDAP database, provide stucture necessary for Samba - see below # smbldap-useradd - add a new user account # smbldap-userdel - delete a user account # smbldap-userlist - list users or machines with some info # smbldap-usershow - show information for one user account # smbldap-usermod - modify the Unix and Samba properties of a user account (many properties) # smbldap-userinfo - modify gecos information in a user account (only a few properties)
Konfigurace smbldap-tools
zjisteni SID domeny - pro kontrolu - bude obsazeno v konfiguracnim souboru
net getlocalsid SID for domain DEBIAN is: S-1-5-21-1241301704-697112910-253100804
soubor /usr/share/doc/smbldap-tools/configure.pl.gz
rozbalit, nastavit prava pro spusteni - chmod +x configure.pl
a spustit
tento script vytvori soubory v adresari /etc/smbldap-tools
- kde je ulozena konfigurace pro smbldap-tools. Zkontrolovat nastaveni - vetsinou nabizene/zapsane vychozi hodnoty pri behu scriptu jsou spravne
Priprava LDAP databaze pro Sambu
vygenerovani potrebneho nastaveni Samby v LDAP databazi, vytvoreni zakladnich uzivatelu a skupin potrebnych pro Sambu v PDC modu. POZOR - zde se zadava heslo uzivatele root - ne admin LDAP !!! smbldap-populate
smbldap-populate Populating LDAP directory for domain FIRMA (S-1-5-21-1241301704-697112910-253100804) (using builtin directory structure) entry dc=firma,dc=cz already exist. adding new entry: ou=Users,dc=firma,dc=cz adding new entry: ou=Groups,dc=firma,dc=cz adding new entry: ou=Computers,dc=firma,dc=cz adding new entry: ou=Idmap,dc=firma,dc=cz adding new entry: uid=root,ou=Users,dc=firma,dc=cz adding new entry: uid=nobody,ou=Users,dc=firma,dc=cz adding new entry: cn=Domain Admins,ou=Groups,dc=firma,dc=cz adding new entry: cn=Domain Users,ou=Groups,dc=firma,dc=cz adding new entry: cn=Domain Guests,ou=Groups,dc=firma,dc=cz adding new entry: cn=Domain Computers,ou=Groups,dc=firma,dc=cz adding new entry: cn=Administrators,ou=Groups,dc=firma,dc=cz adding new entry: cn=Account Operators,ou=Groups,dc=firma,dc=cz adding new entry: cn=Print Operators,ou=Groups,dc=firma,dc=cz adding new entry: cn=Backup Operators,ou=Groups,dc=firma,dc=cz adding new entry: cn=Replicators,ou=Groups,dc=firma,dc=cz entry sambaDomainName=FIRMA,dc=firma,dc=cz already exist. Updating it... Please provide a password for the domain root: Changing UNIX and samba passwords for root New password: Retype new password:
prikaz ldapsearch -xLLL -b "dc=firma,dc=cz"
, by mel jiz vypsat vygenerovane polozky v LDAP databazi
Name Service and PAM
apt-get install libnss-ldap libpam-ldap
- instalace Name Service and PAM - zajisti podporu prihlaseni uzivatelu ulozenych v LDAP databazi.
konfiguracni udaje pri instalaci:
ldap://127.0.0.1/ dc=firma,dc=cz 3 cn=admin,dc=firma,dc=cz LDAP heslo !!! ne root cn=admin,dc=firma,dc=cz LDAP heslo !!! ne root
edit /etc/nsswitch.conf
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap ...
edit /etc/pam.d/common-account
... account sufficient pam_ldap.so account required pam_unix.so
edit /etc/pam.d/common-auth
... auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure
edit /etc/pam.d/common-password
... password sufficient pam_ldap.so password required pam_unix.so nullok obscure md5
edit /etc/pam.d/common-account
... session sufficient pam_ldap.so session required pam_unix.so
Pro kontrolu nastaveni se pokuste prihlasit na linuxovou konzoli - az vytvorite uzivatele v LDAP databazi - viz nize.
Kontrola nastaveni, vytvoreni uzivatelu v LDAP databazi
reboot
- doporucuji po nastaveni reboot serveru (Samba mi nechtela pripojit uzivatele)
prikaz getent group
- vypis skupin jak z /etc/group
, tak i z databaze LDAP
... crontab:x:102: ssh:x:103: openldap:x:104: sambashare:x:105: Domain Admins:*:512:root Domain Users:*:513: Domain Guests:*:514: Domain Computers:*:515: Administrators:*:544: Account Operators:*:548: Print Operators:*:550: Backup Operators:*:551: Replicators:*:552:
smbldap-useradd -a -m -P test
- vytvoreni uzivatele "test"
getent passwd
- vypis uzivatelu jak z /etc/group
, tak i z databaze LDAP
... sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin openldap:x:102:104:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false root:x:0:0:Netbios Domain Administrator:/home/root:/bin/false nobody:x:65534:65534:nobody:/nonexistent:/bin/sh test:x:1000:513:System User:/home/test:/bin/bash
pdbedit -Lw, pdbedit -Lv test, nebo smbldap-usershow test
- vypis udaju o uzivateli test
smbldap-usershow test dn: uid=test,ou=Users,dc=firma,dc=cz objectClass: top,person,organizationalPerson,inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount cn: test sn: test givenName: test uid: test uidNumber: 1000 gidNumber: 513 homeDirectory: /home/test loginShell: /bin/bash gecos: System User sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 displayName: test sambaSID: S-1-5-21-1241301704-697112910-253100804-3000 sambaPrimaryGroupSID: S-1-5-21-1241301704-697112910-253100804-513 sambaLogonScript: logon.bat sambaProfilePath: \\debian\Profiles\test sambaHomePath: \\debian\test sambaHomeDrive: H: sambaLMPassword: 9FDFA4280126E140AAD3B435B51404EE sambaAcctFlags: [U] sambaNTPassword: C5CE8A3C7FF82CC9F22E0B958BA247D5 sambaPwdLastSet: 1235604253 sambaPwdMustChange: 1239492253 userPassword: {SSHA}5BWDqk4P5GzeTxaCjUOBFiD/jlhyenVV shadowLastChange: 14300 shadowMax: 45
kontrola pripojeni uzivatele "test" - vypis info Samba serveru
smbclient -L debian -U test Enter test's password: Domain=[FIRMA] OS=[Unix] Server=[Samba 3.2.5] Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers Share IPC$ IPC IPC Service (Samba 3.2.5) test Disk Home Directories Domain=[FIRMA] OS=[Unix] Server=[Samba 3.2.5] Server Comment --------- ------- DEBIAN Samba 3.2.5 Workgroup Master --------- ------- FIRMA DEBIAN
smbclient //debian/test -U test
- kontrola pripojeni uzivatele "test" - pripojeni domovskeho adresare uzivatele "test" - konzole programu smbclient - dostupne prikazy "help"
smbclient //debian/test -U test Enter test's password: Domain=[FIRMA] OS=[Unix] Server=[Samba 3.2.5] smb: \> help ? allinfo altname archive blocksize cancel case_sensitive cd chmod chown close del dir du echo exit get getfacl hardlink help history iosize lcd link lock lowercase ls l mask md mget mkdir more mput newer open posix posix_encrypt posix_open posix_mkdir posix_rmdir posix_unlink print prompt put pwd q queue quit rd recurse reget rename reput rm rmdir showacls setmode stat symlink tar tarmode translate unlock volume vuid wdel logon listconnect showconnect .. ! smb: \>
Nastaveni Windows klienta:
Po pripojeni Windows XP do "Samba" domeny, se vytvori v LDAP databazi ucet pocitace, ktery bude mit nazev "Nazev pocitace" + znak $ - v nasem pripade xp$. Domovsky adresar je pripojen jako disk H:\, bylo by vhodne nastavit zastupce "Dokumenty" tak, aby "ukazovaly na tento disk (H:\).
Dale jen obrazkove
.
.
.
.
LDAP prohlizece:
Pro kontrolu a zobrazeni LDAP databaze je vhodne pouzit nejaky LDAP prohlizec, napr. LDAP Admin pro Windows, nebo Luma pro Linux. Nemam rad prohlizece postavene na webovem rozhrani a bezici na serveru, ale existuji a je jich nekolik.
Co dal:
Na serveru se Sambou by bylo vhodne mit presny cas "ntpdate"
. Resit omezeni diskoveho prostoru uzivatelum "quota"
. Nastavit tiskovy server "CUPS"
. Resit zalohovani "napr. rsync + tar"
. Zavest politiky nastaveni - pozor, pry nefunguje s Windows Vista - viz Samba 3 and Windows Vista Clients. Pozornost venujte kapitole Index the LDAP Database for Speed ve vyse zminovanem dokumentu.
Zaver:
Cilem tohoto zapisku bylo "zesumirovat" si vedomosti nabyte skolenim (viz sekce Dokumentace). Sambu jako PDC nepouzivam a ani asi nebudu. Tato konfigurace vytvari alternativu srovnatelnou s Windows NT 4.0 Server coz je dnes jak uznate dost stara zalezitost (1996). Navic nevidim prinos pouziti NT domeny s poctem klientu do 50 uzivatelu. Spokojene pouzivam Sambu jiz od roku 2000 v roli souboroveno serveru, kde uzivatele jsou ulozeni v lokalnim souboru, profily na klientech a politiky neresim. Coz dle meho nazoru plne dostacuje a trapit se s domenou (a hlavne resit nefunkcnost Vist na teto konfiguraci) mi za to nestoji. Jedine v pripade, ze serveru by bylo vice - ale s 50 klienty? Na druhou stranu bych byl rad, kdyby zkusenejsi uzivatele napsali do diskuze sve postrehy a rady ohledne teto problematiky, pripadne upozornili na chyby v tomto zapisku. Dekuji
Soucasny smb.conf bez PCD a LDAP, uzivatele ulozeni v smbpasswd
# SAMBA config FIRMA [global] workgroup = FIRMA server string = Samba Linux security = user encrypt passwords = true passdb backend = smbpasswd lanman auth = yes log level = 0 log file = /var/log/samba/log.%m max log size = 1000 socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 local master = yes os level = 255 preferred master = yes wins support = yes hosts allow = 192.168.1., localhost load printers = no printing = bsd printcap name = /dev/null show add printer wizard = no disable spoolss = yes [homes] comment = Home browseable = No read only = No create mask = 0700 directory mask = 0700 delete readonly = Yes [programy] path = /home/groups/programy read only = No create mask = 0770 directory mask = 0770 delete readonly = Yes
Tiskni
Sdílej:
Tenhle blog - to je prostě perfektní práce. Mimochodem kdo to školil ? Petr Staněk ?
No já byl před třemi týdny na jeho týdenní školeni Linux - poštovní server a bylo to opravdu perfektní. Člověk zjistí, že se má pořád co učit a mnoho věcí jde udělat elgantněji, než si myslel A přesně jak říkáš, až na tom školení člověku mnohdy věci zapadnou pěkně do sebe.
Jo, pochopit LDAP jsem mel taky trosku problem, ale pak to prislo a vidim, jak je to easy:)
Jste si jist ze to byl javascript -neni to spis hostscript, csript, vbscript nebo jak se ten M$ bazmeg menuje.
Do nastavení DHCP serveru si nezapomeňte přidat WINS server nebo se začnou rojit kecy o tom jak Windows nenašly doménu. Po přidání nastavení se budou objevovat také, ale v menší míře ... Windows je v tomhle na**** - naběhne a přitom ani neví co se kde v síti nachází (není "rozkoukaný"), no a další problém pak nastává v okamžiku kdy mu přeskočí kolečko (problém mezi nebem a zemí).
Problémy s tím, že Windows nemůžou najít doménu, jsem měl také. Nicméně WINS server se nakonec neukázal jako dobré řešení. Při větším počtu klientů (cca přes 100) v různých subnetech se to začínalo chovat dost divně problémy s přihlašováním byly pořád.
WINS hlavně udržuje tzv. browse-listy. Moc jsem ale nepochopil jejich význam - asi slouží jen k tomu, že lze zobrazit "okolní počítače", a tomu ve větší síti přikládám nulový význam. Pokud mám všechny stroje zanesené v DNS, tak se na ně dostanu naprosto spolehlivě podle názvu...
Problémy s nalezením domény jsou způsobeny tím, že Windows nemůžou najít PDC. Ten hledají broadcastem, z WINS, nebo z lokálního LMHOSTS souboru. Nastavení WINS nám nakonec jen přineslo další problémy. Teď na všech PC, které jsou v doméně, napevno nastavujeme adresu PDC v LMHOSTS. Po více jak roce provozu a > 100 PC mám zkušenost, že to pak funguje na 100%, i když je PC za routerem.
Obsah LMHOSTS na klientech lze generovat třeba takovýmhle skriptem:
REM vytvoreni noveho lmhosts souboru
echo 192.168.1.5 NETBIOS_JMENO_SERVERU #PRE #DOM:DOMENA > %systemroot%\system32\drivers\etc\lmhosts
REM nutno dodrzet delku retezce v uvozovkach
echo 192.168.1.5 "DOMENA \0x1b" #PRE >> %systemroot%\system32\drivers\etc\lmhosts
REM nucene znovunacteni zaznamu z lmhosts
nbtstat -R
Díky moc, zkusím... Počítačů mám v síti asi 150 a funguje si to jak chce ...
Výhody domény se až tak neprojeví, pokud každý uživatel stabilně pracuje na jednom počítači. Pokud je nastavená doména, může se přihlásit každý na libovolném PC se svým jménem a heslem. To je třeba ve škole docela nutnost.
Další výhoda domény může být, když chcete např. nějakou složku z jednoho PC nasdílet, ale jen některým uživatelům. S doménou máte na každém PC k dispozici seznam všech uživatelů a hned jim můžete přidělit ACL. Ověřování jde přes PDC, takže nemusíte mít všude lokální účty, které by ještě k tomu musely mít všeude stejná hesla.
Pokud jsou nastaveny cestovní profily, pak má uživatel kdekoliv svoje stejné prostředí - nastavení programů ap. Samozřejmě jsou s tím ale i problémy - je třeba nastavit kvóty a upozorňovat uživatele, pokud profil moc narostl - jinak přihlášení může trvat opravdu dlouho. Taky se občas stane, že se profil úplně rozsype a je potřeba ho smazat.
Celkově s tím ale mám dobré zkušenosti. Máme Sambu jako PDC s cestovními profily + další 2 Samba servery napojené na LDAP, cca 120 PC s WinXP a asi 600 uživatelů, je to ve škole, takže se k tomu nikdo nechová zrovna dobře - za rok a půl nebyl jedinný problém.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.