Der perfekte Office Server mit Mandriva Directory Server auf Debian Etch - Seite 2

5 SAMBA

5.1 Basis-Konfiguration

Beende SAMBA zuerst.

/etc/init.d/samba stop

Kopiere die SAMBA Beispiel-Konfigurationsdatei in das SAMBA Verzeichnis ...

cp /usr/share/doc/python-mmc-base/contrib/samba/smb.conf /etc/samba/

... und passe sie Deinen Wünschen an.

vi /etc/samba/smb.conf

Richte im Bereich [global] folgende Werte ein:

workgroup = EXAMPLE
netbiosname = PDC-SRV-EXAMPLE
ldap admin dn = cn=admin,dc=example,dc=com
ldap suffix = dc=example,dc=com
logon path = %Nprofiles%U

Füge folgende Zeilen dem Bereich [global] hinzu:

preferred master = yes
os level = 65
wins support = yes
timeserver = yes
socket options = SO_KEEPALIVE IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
logon drive = H:
passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = "Changing password for*nNew password*" %nn "*Retype new password*" %nn
add user script = /usr/sbin/smbldap-useradd -m "%u"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
add group script = /usr/sbin/ambldap-groupadd -p "%g"
delete user script = /usr/sbin/smbldap-userdel "%u"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
obey pam restrictions = no
ldap idmap suffix = ou=Users
ldap delete dn = yes
security = user

Füge folgende Zeile im Bereich [homes] ein:

hide files = /Maildir/

Entferne folgende Zeile aus den Bereichen [printers] und [print$]:

printer admin = root,@lpadmin

Stelle folgende Werte im Bereich [print$] ein:

write list = Administrator,root,@lpadmin

Füge folgende Zeile dem Bereich [profiles] hinzu:

hide files = /desktop.ini/ntuser.ini/NTUSER.*/

Stelle folgende Werte im Bereich [archives] ein:

path = /home/samba/archives

Nun sollte die SAMBA Konfigurationsdatei wie folgt aussehen:
     [global]
workgroup = EXAMPLE netbiosname = PDC-SRV-EXAMPLE preferred master = yes os level = 65 wins support = yes enable privileges = yes timeserver = yes socket options = SO_KEEPALIVE IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192 log level = 3 null passwords = yes security = user # unix charset = ISO8859-1 name resolve order = bcast host domain logons = yes domain master = yes printing = cups printcap name = cups logon path = %Nprofiles%U logon script = logon.bat logon drive = H: map acl inherit = yes nt acl support = yes passdb backend = ldapsam:ldap://127.0.0.1/ obey pam restrictions = no ldap admin dn = cn=admin,dc=example,dc=com ldap suffix = dc=example,dc=com ldap group suffix = ou=Groups ldap user suffix = ou=Users ldap machine suffix = ou=Computers ldap idmap suffix = ou=Users ldap passwd sync = yes ldap delete dn = yes passwd program = /usr/sbin/smbldap-passwd -u %u passwd chat = "Changing password for*nNew password*" %nn "*Retype new password*" %nn add user script = /usr/sbin/smbldap-useradd -m "%u" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" add group script = /usr/sbin/ambldap-groupadd -p "%g" add machine script = /usr/lib/mmc/add_machine_script '%u' delete user script = /usr/sbin/smbldap-userdel "%u" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" delete group script = /usr/sbin/smbldap-groupdel "%g" [homes] comment = Home directories browseable = no writeable = yes create mask = 0700 directory mask = 0700 hide files = /Maildir/ [public] comment = Public share path = /home/samba/shares/public browseable = yes public = yes writeable = yes [archives] comment = Backup share path = /home/samba/archives browseable = yes public = no writeable = no [printers] comment = Printers path = /tmp browseable = no public = yes guest ok = yes writeable = no printable = yes [print$] comment = Drivers path = /var/lib/samba/printers browseable = yes guest ok = yes read only = yes write list = Administrator,root,@lpadmin [netlogon] path = /home/samba/netlogon public = no writeable = no browseable = no [profiles] path = /home/samba/profiles writeable = yes create mask = 0700 directory mask = 0700 browseable = no hide files = /desktop.ini/ntuser.ini/NTUSER.*/ [partage] comment = aucun path = /home/samba/partage browseable = yes public = no writeable = yes
Wenn alles geklappt hat, sollte der Befehl ...

testparm

... keine Fehler anzeigen.

Teile nun SAMBA die benötigten Zugangsdaten mit in LDAP schreiben zu können.

smbpasswd -w %ldap_admin_password%

Z.B.:

smbpasswd -w howtoforge

Die Ausgabe sollte wie folgt aussehen:

Setting stored password for "cn=admin,dc=example,dc=com" in secrets.tdb

Als Nächstes musst Du eine SID für Deine Arbeitsgruppe erstellen.

net getlocalsid %your_workgroup%

Z.B.:

net getlocalsid EXAMPLE

Die Ausgabe sollte wie folgt aussehen - notiere es, Du wirst es in wenigen Minuten brauchen:

SID for domain EXAMPLE is: S-1-5-21-3159899821-123882392-54881133

Überprüfe, ob die SID in LDAP tatsächlich aufgezeichnet wurde.

slapcat | grep sambaDomainName

Die Ausgabe sollte wie folgt aussehen:

dn: sambaDomainName=EXAMPLE,dc=example,dc=com
sambaDomainName: EXAMPLE

Starte nun SAMBA

/etc/init.d/samba start


5.2 LDAP Verzeichnis

Zuerst musst Du die smbldap-tools Konfigurationsdatei erstellen - sie definiert, wie mit dem LDAP Server kommuniziert wird.

vi /etc/smbldap-tools/smbldap_bind.conf

Der Inhalt sollte wie folgt aussehen:
slaveDN="cn=admin,dc=example,dc=com"
slavePw="howtoforge" masterDN="cn=admin,dc=example,dc=com" masterPw="howtoforge"
Erstelle nun die Hauptkonfigurationsdatei.

vi /etc/smbldap-tools/smbldap.conf

Der Inhalt sollte wie folgt aussehen:
SID="S-1-5-21-3159899821-123882392-54881133"
sambaDomain="EXAMPLE" ldapTLS="0" suffix="dc=example,dc=com" usersdn="ou=Users,${suffix}" computersdn="ou=Computers,${suffix}" groupsdn="ou=Groups,${suffix}" idmapdn="ou=Idmap,${suffix}" sambaUnixIdPooldn="sambaDomainName=EXAMPLE,${suffix}" scope="sub" hash_encrypt="SSHA" userLoginShell="/bin/bash" userHome="/home/%U" userHomeDirectoryMode="700" userGecos="System User" defaultUserGid="513" defaultComputerGid="515" skeletonDir="/etc/skel" defaultMaxPasswordAge="45" userSmbHome="PDC-SRV-EXAMPLE%U" userProfile="PDC-SRV-EXAMPLEprofiles%U" userHomeDrive="H:" userScript="logon.bat" mailDomain="example.com" smbpasswd="/usr/bin/smbpasswd"
Es wird Zeit das LDAP Verzeichnis zu füllen. Somit wird auch das Domain Administrator Konto erstellt (Administrator)

smbldap-populate -m 512 -a Administrator

Merke: Du wirst gebeten, ein Passwort für das Domain Administrator Konto einzugeben.

Danach musst Du die uid-Nummer für dieses Konto modifizieren - sonst kannst Du mit diesem Konto den Mailserver nicht benutzen. Zusätzlich fügen wir dieses Konto der Gruppe "Domain Users" hinzu:

smbldap-usermod -u 3000 -G "Domain Users" Administrator

Als Nächstes gewähren wir der Gruppe "Domain Admins" das Recht, der Domain Maschinen hinzuzufügen.

net -U Administrator rpc rights grant 'DOMAINDomain Admins' SeMachineAccountPrivilege


5.3 NSS LDAP Konfiguration

In diesem Schritt konfigurieren wir das System so, dass es das LDAP Verzeichnis verwendet, um Benutzer- und Gruppenlisten zu beziehen.

Bearbeite die nsswitch Konfiguration.

vi /etc/nsswitch.conf

Der Inhalt sollte wie folgt aussehen:
# /etc/nsswitch.conf
# # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis

5.4 SAMBA Verzeichnisse

Erstelle die benötigten Verzeichnisse für den SAMBA Server, ...

mkdir -p /home/samba/shares/public/
mkdir /home/samba/netlogon/
mkdir /home/samba/profiles/
mkdir /home/samba/partage/
mkdir /home/samba/archives/

... ändere den Eigentümer und passe die Rechte an.

chown -R :"Domain Users" /home/samba/
chmod 777 /var/spool/samba/ /home/samba/shares/public/
chmod 755 /home/samba/netlogon/
chmod 770 /home/samba/profiles/ /home/samba/partage/
chmod 700 /home/samba/archives/

6 PAM LDAP Konfiguration

In diesem Schritt fügst Du PAM LDAP-support hinzu.

vi /etc/pam.d/common-account

Der Inhalt sollte wie folgt aussehen:
#
# /etc/pam.d/common-account - authorization settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authorization modules that define # the central access policy for use on the system. The default is to # only deny service to users whose accounts are expired in /etc/shadow. # account required pam_unix.so account sufficient pam_ldap.so

vi /etc/pam.d/common-auth

Der Inhalt sollte wie folgt aussehen:
#
# /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # auth sufficient pam_unix.so nullok_secure auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so

vi /etc/pam.d/common-password

Der Inhalt sollte wie folgt aussehen:
#
# /etc/pam.d/common-password - password-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define the services to be #used to change user passwords. The default is pam_unix # The "nullok" option allows users to change an empty password, else # empty passwords are treated as locked accounts. # # (Add `md5' after the module name to enable MD5 passwords) # # The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in # login.defs. Also the "min" and "max" options enforce the length of the # new password. password sufficient pam_unix.so nullok obscure min=4 max=8 md5 password sufficient pam_ldap.so use_first_pass use_authtok password required pam_deny.so # Alternate strength checking for password. Note that this # requires the libpam-cracklib package to be installed. # You will need to comment out the password line above and # uncomment the next two in order to use this. # (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH') # # password required pam_cracklib.so retry=3 minlen=6 difok=3 # password required pam_unix.so use_authtok nullok md5

vi /etc/pam.d/common-session

Der Inhalt sollte wie folgt aussehen:
#
# /etc/pam.d/common-session - session-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define tasks to be performed # at the start and end of sessions of *any* kind (both interactive and # non-interactive). The default is pam_unix. # session required pam_unix.so session optional pam_ldap.so

9 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: Verlustmeldung

Hi, cooles Howto, aber es fehlt glaube ich ein ganz kleines schnippselchen.

es fehlt eine "/etc/libnss-ldap.conf" mit dem inhalt:


# The distinguished name of the search base.
BASE dc=example,dc=com
URI ldap://127.0.0.1/

# Mandriva Howto: Missing
nss_base_passwd ou=Users,dc=example,dc=com
nss_base_shadow ou=Users,dc=example,dc=com
nss_base_group ou=Groups,dc=example,dc=com


wenn diese existiert dann werden die ldap-user auch per "getent passwd" angezeigt.
ohne diese zeilen gibt der befehl "net -U Administrator rpc rights grant ‘DOMAINDomain Admins’ SeMachineAccountPrivilege" immer einen fehler.

btw: es fehlen bei allen windows-pfaden die backslashes wie z.b. in der smb.conf und smbldap.conf

mfg RR


Von: Verlustmeldung

nss_base_passwd ou=Computers,dc=example,dc=com?one

Das noch dabei dann stehen auch computer$ im getent passwd


Von: uwe wicki

Hallo, ein sehr gutes Howto.
Bei 4.2 Basis-Konfigurationmöchte ich einen kleinen Verbesserungsvorschlag machen:

Anstatt slappasswd -s %ldap_admin_password%

slappasswd >> /etc/ldap/slapd.conf
Nach dieser Eingabe wirst du aufgefordert dein Passwort einzugeben und zu bestätigen.

2 Vorteile:
Das Passwort steht nicht im Klartext in der History.
Der Hash wird am Ende der Datei slapd.conf eingefügt. Man muss nichts abschreiben.

Grüße Uwe


Von: uwe wicki

Hallo,
in der smb.conf fand ich einen Druckfehler
Statt add group script = /usr/sbin/ambldap-groupadd -p “%g”
heißt es: add group script = /usr/sbin/smbldap-groupadd -p “%g”
Grüße Uwe


Von: uwe wicki

Hallo

erneut ein kleiner Verbesserungsvorschlag, der einem die Konfiguration erleichert.
Entsprechen Kommentar 3 geht in 5.1 Basis-Konfiguration nach dem Test der smb.conf

Statt net getlocalsid EXAMPLE
net getlocalsid EXAMPLE >> /etc/smbldap-tools/smbldap.conf

Vorteil: Die Datei wird gleich erstellt und enthält die SID fehlerfrei, ohne sie abzuschreiben

Grüße Uwe


Von: uwe wicki

Hallo,

Zwei kleine Bemerkungen:

1: Auch wenn es unsicher erscheint, aber man sollte bei den Passwörtern keine Sonderzeichen verwenden.
2: Am Ende von 5.2 heißt es:
Als Nächstes gewähren wir der Gruppe “Domain Admins” das Recht, der Domain Maschinen hinzuzufügen.
net -U Administrator rpc rights grant ‘DOMAINDomain Admins’ SeMachineAccountPrivilege
Dieser Schritt gelang mir erst am Ende von 6.


Von: uwe wicki

Hallo,

auch heute fand ich wieder einige Kleinigkeiten.

beim Update müsste es statt
dpkg-statoverride –update –add root dovecot 4755 /usr/lib/dovecot/deliver

dpkg-statoverride –-update –-add root dovecot 4755 /usr/lib/dovecot/deliver
heißen.

Ein größeres Problem hat sich jetzt mit dem dcc-client ergeben.
Auf Seite 1 wird man aufgefordert das Paket dcc-client zu installieren. Dies funktionierte nicht.
Auf Seite 4 soll der dcc-client in spamAssassin eingebunden werden, was natürlich nicht funktioniert.
Anschließend versuchte ich dcc-client direkt zu installieren. Die Anleitung dazu findet man unter
http://konabi.de/artikel/artikel_content.php?artikel=dcc
Beim Ausführen der Konfiguration ./configure... erhielt ich folgenden Fehler.
checking for cc... (cached) no
error: no acceptable cc found in $PATH
An dieser Stelle gab ich auf und schaltete in der local.cf dcc aus, indem ich die beiden entsprechenden Zeilen einkommentierte.
Über Hilfe würde ich mich freuen.

Grüße Uwe


Von: badfur

FINALY! Hab dieses Howto jetzt zum dritten mal auf Lenny(!) durchgearbeitet und endlich läuft es *dance*. Ein paar Dinge gehen auf Lenny nicht wie beschrieben und manchmal haut die Reihenfolge einfach nicht hin, aber im großen und ganzen klappt es. Vielleicht kann ich mich durchringen dieses Howto auf Lenny zu aktualisieren, wenn der Author nichts dagegen hat ;) Auf jeden Fall würde ich ohne dieses Howto immer noch wie Kuh ins Uhrwerk schauen. Vielen Dank! ;)


Von: andreea

@Badfur - wie eine Kuh ins Uhrwerk?! Cooler Spruch :-D Freut mich!