Der perfekte Office Server mit Mandriva Directory Server auf Debian Etch

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

Das könnte dich auch interessieren …