LINUX - Monter un serveur Samba en PDC

Modérateur: Modérateurs

LINUX - Monter un serveur Samba en PDC

Messagepar earendil » Lun 02 Juil, 2007 17:16

Je vais essayer ici d'expliquer sommairement comment faire marcher un serveur Samba en contrôleur de domaine (PDC ou Primary Domain Controller).

On va suivre 2 méthodes différentes :
  • PDC simple avec utilisateurs inscrits sur le serveur
  • PDC plus complexe avec utilisateurs inscrits dans un serveur LDAP

Le tuto est fait pour une distribution Debian (ou une dérivée : Ubuntu par exemple)

Les commandes commençant par "#" sont à exécuter en root, celles commençant par "§" sont à exécuter en utilisateur local.

1. Pour la version simple

En premier lieu, installer Samba
Code: Tout sélectionner
# apt-get install samba

Aux questions qu'il vous pose, gardez les réponses par défaut (on les changera après de toute façon).

Ensuite, pour la méthode 1, on va s'arrêter là pour les programmes.

On va éditer le fichier de configuration de Samba avec un éditeur de texte :
Code: Tout sélectionner
# vim /etc/samba/smb.conf
si votre éditeur de texte est vim

On va alors écrire la configuration suivante dans le fichier (lire les commentaires pour comprendre et remplacer les paramètres en italiques par vos propres paramètres) :
# Fichier de configuration pour Samba

# Partie Globale

[global]
# Le nom du domaine
workgroup = chezmoi # <-- mettre ici le nom de votre domaine
# Le nom NetBIOS du serveur
netbios name = monserveur # <-- mettre ici le nom de votre serveur
# Une phrase expliquant qu'est-ce que cette machine
server string = %h Server (Samba %v) # <-- mettre le texte qui sera afficher dans l'explorateur de
# réseau avec votre serveur. %v est remplacé par la version
# de Samba et %h par le nom de la machine

# Gestion des utilisateurs et des passwords
# emplacement du fichier des utilisateurs et mots de passes de Samba

smb passwd file = /etc/samba/smbpasswd
# indique que les mots de passe sont cryptés (mettre yes par sécurité)
encrypt passwords = yes
security = user
# indique le nom de l'utilisateur invité pour le serveur
guest account = nobody
# liste des utilisateurs qui n'ont pas le droits d'utiliser le serveur.
invalid users = toto,tata
# Gestion des logs
# fichiers de logs (le %m sera remplacé par le nom de la machine distante (où par son adresse IP)

log file = /var/log/samba/log.%m
max log size = 50
# niveau de log (3 est un bon compromis)
log level = 3
# Gestion des connections
# on autorise les machines à l'IP spécifié (ici toutes celle de 192.168.0.2 à 192.168.0.255)

hosts allow = 192.168.0. EXCEPT 192.168.0.1
# on interdit toutes les autres machines
hosts deny = ALL
# Options de connection, de la taille des buffers et autres ...
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192 SO_KEEPALIVE
# nom de l'interface où écouter pour Samba (voir /etc/network/interfaces pour la connaitre)
interfaces = eth0
keepalive = 60
read raw = yes
write raw = yes
oplocks = yes
max xmit = 65535
dead time = 15
getwd cache = yes
wide links = no
# Ordre de résolution des noms NetBIOS
name resolve order = wins host lmhosts bcast
# IMPORTANT car spécifie que root peut joindre le domaine sur
# les clients

admin users = root # spécifie que le root est l'admin sur les machines distantes
# Permets d'utiliser les profils présent sur le serveur Samba
# inidquez yes si vous souhaitez utiliser Samba comme PDC

domain logons = yes
# Options pour battre les autres machines
# le niveau indique la préférence du réseau pour le mettre en maitre du domaine (mettre 64 suffira
# normalement).

os level = 64
# indique que l'on est dans un domaine et que l'on écoute le serveur
preferred master = yes
# indique que l'on veut devenir maitre du domaine.
domain master = yes
# pas de proxy DNS (ou utilisera Wins pour la résulution de nom)
dns proxy = no
# Pour que le serveur Samba soit aussi un serveur WINS
# càd, résout les noms NetBIOS gràce au demon nmbd

wins support = yes
wins proxy = yes
# Répertoire utilisé par WinNT,2K,XP pour stocker les profiles
logon script = \\%L\netlogon\%U.bat # nom du script à éxécuter au démarage (%U sera replacer par
# le nom de l'utilisateur à la connection).

logon path = \\%L\profiles\%U # <-- remplacer par le nom du partage pour les profiles (%L est
# remplacé par le nom du serveur).

logon home = \\%L\%U # <-- idem que ci-dessus.
# Pour pouvoir utiliser Samba comme serveur de temps

time server = yes
# Script d'ajout d'une machine afin qu'elle soit ajouté automatiquement (cela ne fonctionne pas
# toujours, j'indique après comment le faire manuelement).

add user script = /usr/sbin/useradd -d /dev/null -g machines -c 'Machine Account' -s /bin/false -M %u
# indique si l'on doit synchroniser les mot de passe entre le serveur et les clients (donc entre
# Samba et le système).

unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*Unix*password* %n\n *Retype*new*UNIX*password* %n\n *passwd:*all*aythentification*tokens*update*successfully
# Gestion de l'impression (Faire marcher une imprimante marche de manière très aléatoire (vois pas du tout
# chez moi...) par Samba. Je vous conseille plutot de partager via cups.

load printers = yes
printing = cups
printcap name = cups

##################################################################
# Partage pour le contrôleur de domaine

[netlogon]
comment = Repertoires scripts
path = /var/samba/netlogon # <-- répertoire où seront mis les scripts de démarage. Les scripts doivent
# être éxécutable sous Windows. (Mettez un sript bat). De plus, le script
# doit être écrit sous-windows, puis envoyé via sftp, telnet, disquette ou
# usb au serveur.

browseable = no
admin users = root
[profiles]
comment = Homes windows
path = /var/samba/profiles/%U # <-- répertoire où sera stocké le profile de l'utilisateur. Prévoir de la
# place pour le répertoire où seront stockée les profiles
# (le /var/samba/profiles ici). Vous pouvez évidement le mettre où bon vous
# semble, mais je vous conseille soit le /var, soit le /home. De plus,
# prévoyez de le mettre sur une partition à part (un accident est si vite
# arrivée)

browseable = no
read only = no
##################################################################

##################################################################
# Partage des imprimantes
# si vous souhaitez partager des imprimantes (je n'arrive pas à le faire marcher avec Samba, j'utilise plutot Cups # perso).

[printers]
path = /var/spool/cups/tmp
comment = All Printers
browseable = no
guest ok = no
create mode = 0700
writable = no
printable = yes
valid users = @test
printer admin = @test

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
guest ok = no
browseable = yes
read only = yes
valid users = @test
write list = root, @test
##################################################################

##################################################################
# Partage du répertoire personnel de l'utilisateur

[homes]
comment = Home Directories
browseable = no
writable = yes
hide files = /lost+found/ # <-- indique les fichiers qui seront caché sur le partage (mis comme
# fichiers cachés de Windows).


# Partage d'un autre répertoire
[commun]
path = /home/commun # <-- metrtre le chemin d'accès au dossier
comment = Common Directories # <-- commentaire affiché dans l'explorateur
browseable = yes # <-- indique s'il est affiché dans l'explorateur
writable = yes # <-- indique si vous avez le droits d'écrire dedans
guest ok = no # <-- indique si le compte inivité voit le partage
valid users = @test # <-- indique les utilisateurs valides (le @test indique un groupe
# d'utilisateur)

hide files = /lost+found/
create mask = 0770 # <-- indique que les fichiers sont créés avec les droits UNIX suivants
directory mask = 0770 # <-- indique que les dossiers sont créés avec les droits UNIX suivants
force user = toto # <-- indique l'utilisateur pocesseur des fichiers créés
force group = test # <-- indique le groupe pocesseur des fichiers créés
##################################################################


ensuite, vous ajoutez vos utilisateurs via la commande standard sous Linux :
Code: Tout sélectionner
# adduser --shell /dev/null <nom_user>

il va vous demander quelques infos... Et le mot de passe (souvenez-vous en).

Nota : Pour installer une machine, il faut taper :
Code: Tout sélectionner
# useradd -s /dev/null -h /bin/false <nom_workstation>


Votre utilisateur et sa machine entré, tapez les commandes suivantes :
Code: Tout sélectionner
# smbpasswd -am <nom_workstation>
# smbpasswd -a <nom_user>

(Pour l'utilisateur, il vous redemandera le mot de passe).

Normalement, maintenant, vous pouvez ajouter la machine au domaine et l'utilisateur pourra se logger via son login entré dans le serveur ;)


2. Avec un serveur LDAP

Dans ce cas, la gestion des utilisateurs sera faite via le serveur LDAP (et non via les utilisateurs UNIX).
Pour tous les exemples, j'utiliserai un domaine : toto.hd.free.fr

Donc, en plus d'installer Samba comme sur le 1, on va installer LDAP avec la commande suivante :
Code: Tout sélectionner
# apt-get install slapd smbldap-tools libnss-ldap libpam-ldap nscd samba-doc


Il vous demandera les questions suivantes :
Pour SLAPD
  • Domain name : toto.hd.free.fr
  • Name of your organization : Toto
  • Admin password : password administrateur
  • Database backend : LDBM
  • Remove database while slapd is purged : Yes
  • Allow LDAPv2 protocol : No

Pour LIBPAM-LDAP LIBNSS-LDAP
  • Make local root Database admin ? Yes
  • Does the LDAP database require login? No
  • Root login account : cn=admin,dc=toto,dc=hd,dc=free,dc=fr
  • Root login password : (utiliser le password d’admin de ldap)
  • Local crypt to use when changing passwords : crypt
  • Should the libnss-ldap configuration file be readable and writable only by the file owner? Yes

Si certaines questions ne sont pas posées, on s'en chargera plus-tard.

Ensuite, nous allons modifier quelques fichiers :
  1. le fichier ldap.conf (dans /etc/ldap/) :
    ldap.conf a écrit:
    # $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9 2000/09/04 19:57:01 kurt Exp $
    #
    # LDAP Defaults
    #

    # See ldap.conf(5) for details
    # This file should be world readable but not world writable.


    BASE dc=toto,dc=hd,dc=free,dc=fr # <-- remplacer par votre nom de domaine
    HOST 127.0.0.1
    #URI ldap://ldap.example.com ldap://ldap-master.example.com:666

    #SIZELIMIT 12
    #TIMELIMIT 15
    #DEREF never


  2. Le fichier slapd.conf (dans /etc/lapd/) :
    slapd.conf a écrit:# This is the main slapd configuration file. See slapd.conf(5) for more
    # info on the configuration options.

    #######################################################################
    # Global Directives:

    # Features to permit
    #allow bind_v2

    # 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

    # Schema check allows for forcing entries to
    # match schemas for their objectClasses's

    schemacheck on

    # Where the pid file is put. The init.d script
    # will not stop the server if you change this.

    pidfile /var/run/slapd/slapd.pid

    # List of arguments that were passed to the server
    argsfile /var/run/slapd/slapd.args

    # Read slapd.conf(5) for possible values
    loglevel 1024 # suivant le niveau de log voulu, changé cette valeur

    # Where the dynamically loaded modules are stored

    modulepath /usr/lib/ldap
    moduleload back_bdb

    #######################################################################
    # Specific Backend Directives for bdb:
    # Backend specific directives apply to this backend until another
    # 'backend' directive occurs

    backend bdb
    checkpoint 512 30

    #######################################################################
    # Specific Backend Directives for 'other':
    # Backend specific directives apply to this backend until another
    # 'backend' directive occurs
    #backend <other>

    #######################################################################
    # Specific Directives for database #1, of type bdb:
    # Database specific directives apply to this databasse until another
    # 'database' directive occurs

    database bdb

    # The base of your directory in database #1
    suffix "dc=toto,dc=hd,dc=free,dc=fr"
    rootdn "cn=admin,dc=toto,dc=hd,dc=free,dc=fr"
    rootpw {SSHA}ZBEgrE5oNfqFOoFqdmalxNhYpeGvtcS7 # <-- mettre ici le mot de passe généré par la commande slappasswd

    # Where the database file are physically stored for database #1

    directory "/var/lib/ldap"

    # Indexing options for database #1
    index objectClass eq

    # Save the time that the entry gets modified, for database #1
    lastmod on

    # Where to store the replica logs for database #1
    # replogfile /var/lib/ldap/replog

    # The userPassword by default can be changed
    # by the entry owning it if they are authenticated.
    # Others should not be able to see it, except the
    # admin entry below
    # These access lines apply to database #1 only

    access to attrs=userPassword
    by dn="cn=admin,dc=toto,dc=hd,dc=free,dc=fr" write
    by anonymous auth
    by self write
    by * none

    # Ensure read access to the base for things like
    # supportedSASLMechanisms. Without this you may
    # have problems with SASL not knowing what
    # mechanisms are available and the like.
    # Note that this is covered by the 'access to *'
    # ACL below too but if you change that as people
    # are wont to do you'll still need this if you
    # want SASL (and possible other things) to work
    # happily.

    access to dn.base="dc=toto,dc=hd,dc=free,dc=fr" by * read

    # The admin dn has full write access, everyone else
    # can read everything.

    access to *
    by dn="cn=admin,dc=toto,dc=hd,dc=free,dc=fr" write
    by users write
    by * read

    # For Netscape Roaming support, each user gets a roaming
    # profile for which they have write access to
    #access to dn=".*,ou=Roaming,o=morsnet"
    # by dn="cn=admin,dc=henriette,dc=hd,dc=free,dc=fr" write
    # by dnattr=owner write

    #######################################################################
    # Specific Directives for database #2, of type 'other' (can be bdb too):
    # Database specific directives apply to this databasse until another
    # 'database' directive occurs
    #database <other>

    # The base of your directory for database #2
    #suffix "dc=debian,dc=org"



    de plus, il faut ajouter le schéma de samba dans la liste des schémas de LDAP. Donc, entrez la commande suivante :
    Code: Tout sélectionner
    # gunzip -c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

  3. ensuite, on va modifier le ficher libnss-ldap.conf (dans /etc/)
    libnss-ldap.conf a écrit:###DEBCONF###
    # the configuration of this file will be done by debconf as long as the
    # first line of the file says '###DEBCONF###'
    #
    # you should use dpkg-reconfigure libnss-ldap to configure this file.
    #

    @(#)$Id: ldap.conf,v 2.41 2005/03/23 08:30:16 lukeh Exp $
    #
    # This is the configuration file for the LDAP nameservice
    # switch library and the LDAP PAM module.
    #
    # PADL Software
    # http://www.padl.com
    #

    # Your LDAP server. Must be resolvable without using LDAP.
    # Multiple hosts may be specified, each separated by a
    # space. How long nss_ldap takes to failover depends on
    # whether your LDAP client library supports configurable
    # network or connect timeouts (see bind_timelimit).
    #host 127.0.0.1

    # The distinguished name of the search base.

    base dc=toto,dc=hd,dc=free,dc=fr

    # Another way to specify your LDAP server is to provide an
    # uri with the server name. This allows to use
    # Unix Domain Sockets to connect to a local LDAP Server.

    uri ldap://127.0.0.1/
    #uri ldaps://127.0.0.1/
    #uri ldapi://%2fvar%2frun%2fldapi_sock/
    # Note: %2f encodes the '/' used as directory separator


    # The LDAP version to use (defaults to 3
    # if supported by client library)

    ldap_version 3

    # The distinguished name to bind to the server with.
    # Optional: default is to bind anonymously.
    #binddn cn=proxyuser,dc=padl,dc=com

    # The credentials to bind with.
    # Optional: default is no credential.
    #bindpw secret

    # The distinguished name to bind to the server with
    # if the effective user ID is root. Password is
    # stored in /etc/ldap.secret (mode 600)

    rootbinddn cn=admin,dc=toto,dc=hd,dc=free,dc=fr

    # The port.
    # Optional: default is 389.
    #port 389

    # The search scope.
    #scope sub
    #scope one
    #scope base

    # Search timelimit
    #timelimit 30

    # Bind/connect timelimit
    #bind_timelimit 30

    # Reconnect policy:
    # hard_open: reconnect to DSA with exponential backoff if
    # opening connection failed
    # hard_init: reconnect to DSA with exponential backoff if
    # initializing connection failed
    # hard: alias for hard_open
    # soft: return immediately on server failure

    bind_policy soft

    # Idle timelimit; client will close connections
    # (nss_ldap only) if the server has not been contacted
    # for the number of seconds specified below.
    #idle_timelimit 3600

    # Pagesize: when configured with --enable-paged-results allow
    # to set the pagesize to a custom value
    #pagesize 1000

    # Filter to AND with uid=%s
    #pam_filter objectclass=account

    # The user ID attribute (defaults to uid)
    #pam_login_attribute uid

    # Search the root DSE for the password policy (works
    # with Netscape Directory Server)
    #pam_lookup_policy yes

    # Check the 'host' attribute for access control
    # Default is no; if set to yes, and user has no
    # value for the host attribute, and pam_ldap is
    # configured for account management (authorization)
    # then the user will not be allowed to login.
    #pam_check_host_attr yes

    # Check the 'authorizedService' attribute for access
    # control
    # Default is no; if set to yes, and the user has no
    # value for the authorizedService attribute, and
    # pam_ldap is configured for account management
    # (authorization) then the user will not be allowed
    # to login.
    #pam_check_service_attr yes

    # Group to enforce membership of
    #pam_groupdn cn=PAM,ou=Groups,dc=padl,dc=com

    # Group member attribute
    #pam_member_attribute uniquemember

    # Specify a minium or maximum UID number allowed

    pam_min_uid 0
    pam_max_uid 0

    # Template login attribute, default template user
    # (can be overriden by value of former attribute
    # in user's entry)
    #pam_login_attribute userPrincipalName
    #pam_template_login_attribute uid
    #pam_template_login nobody

    # HEADS UP: the pam_crypt, pam_nds_passwd,
    # and pam_ad_passwd options are no
    # longer supported.
    #
    # If you are using XAD, you can set pam_password
    # to racf, ad, or exop. Make sure that you have
    # SSL enabled.

    # Do not hash the password at all; presume
    # the directory server will do it, if
    # necessary. This is the default.
    #pam_password clear

    # Hash password locally; required for University of
    # Michigan LDAP server, and works with Netscape
    # Directory Server if you're using the UNIX-Crypt
    # hash mechanism and not using the NT Synchronization
    # service.
    #pam_password crypt

    # Remove old password first, then update in
    # cleartext. Necessary for use with Novell
    # Directory Services (NDS)
    #pam_password nds

    # RACF is an alias for the above. For use with
    # IBM RACF
    #pam_password racf

    # Update Active Directory password, by
    # creating Unicode password and updating
    # unicodePwd attribute.
    #pam_password ad

    # Use the OpenLDAP password change
    # extended operation to update the password.
    #pam_password exop

    # Redirect users to a URL or somesuch on password
    # changes.
    #pam_password_prohibit_message Please visit http://internal to change your password.

    # RFC2307bis naming contexts
    # Syntax:
    # nss_base_XXX base?scope?filter
    # where scope is {base,one,sub}
    # and filter is a filter to be &'d with the
    # default filter.
    # You can omit the suffix eg:
    # nss_base_passwd ou=People,
    # to append the default base DN but this
    # may incur a small performance impact.

    nss_base_passwd ou=People,dc=toto,dc=hd,dc=free,dc=fr?one # dans ces cas, remplacez le domaine par le votre, et le suffix de recherche pa le votre,
    nss_base_shadow ou=People,dc=toto,dc=hd,dc=free,dc=fr?one # (si vous n'avez rien changé, laissez celui-là).
    nss_base_group ou=Group,dc=toto,dc=hd,dc=free,dc=fr?one
    nss_base_hosts ou=Hosts,dc=toto,dc=hd,dc=free,dc=fr?one
    #nss_base_servicesou=Services,dc=padl,dc=com?one
    #nss_base_networksou=Networks,dc=padl,dc=com?one
    #nss_base_protocolsou=Protocols,dc=padl,dc=com?one
    #nss_base_rpc ou=Rpc,dc=padl,dc=com?one
    #nss_base_ethersou=Ethers,dc=padl,dc=com?one
    #nss_base_netmasksou=Networks,dc=padl,dc=com?ne
    #nss_base_bootparamsou=Ethers,dc=padl,dc=com?one
    #nss_base_aliasesou=Aliases,dc=padl,dc=com?one
    #nss_base_netgroupou=Netgroup,dc=padl,dc=com?one

    # attribute/objectclass mapping
    # Syntax:
    #nss_map_attributerfc2307attribute mapped_attribute
    #nss_map_objectclassrfc2307objectclass mapped_objectclass

    # configure --enable-nds is no longer supported.
    # NDS mappings
    #nss_map_attribute uniqueMember member

    # Services for UNIX 3.5 mappings
    #nss_map_objectclass posixAccount User
    #nss_map_objectclass shadowAccount User
    #nss_map_attribute uid msSFU30Name
    #nss_map_attribute uniqueMember msSFU30PosixMember
    #nss_map_attribute userPassword msSFU30Password
    #nss_map_attribute homeDirectory msSFU30HomeDirectory
    #nss_map_attribute homeDirectory msSFUHomeDirectory
    #nss_map_objectclass posixGroup Group
    #pam_login_attribute msSFU30Name
    #pam_filter objectclass=User
    #pam_password ad

    # configure --enable-mssfu-schema is no longer supported.
    # Services for UNIX 2.0 mappings
    #nss_map_objectclass posixAccount User
    #nss_map_objectclass shadowAccount user
    #nss_map_attribute uid msSFUName
    #nss_map_attribute uniqueMember posixMember
    #nss_map_attribute userPassword msSFUPassword
    #nss_map_attribute homeDirectory msSFUHomeDirectory
    #nss_map_attribute shadowLastChange pwdLastSet
    #nss_map_objectclass posixGroup Group
    #nss_map_attribute cn msSFUName
    #pam_login_attribute msSFUName
    #pam_filter objectclass=User
    #pam_password ad

    # RFC 2307 (AD) mappings
    #nss_map_objectclass posixAccount user
    #nss_map_objectclass shadowAccount user
    #nss_map_attribute uid sAMAccountName
    #nss_map_attribute homeDirectory unixHomeDirectory
    #nss_map_attribute shadowLastChange pwdLastSet
    #nss_map_objectclass posixGroup group
    #nss_map_attribute uniqueMember member
    #pam_login_attribute sAMAccountName
    #pam_filter objectclass=User
    #pam_password ad

    # configure --enable-authpassword is no longer supported
    # AuthPassword mappings
    #nss_map_attribute userPassword authPassword

    # AIX SecureWay mappings
    #nss_map_objectclass posixAccount aixAccount
    #nss_base_passwd ou=aixaccount,?one
    #nss_map_attribute uid userName
    #nss_map_attribute gidNumber gid
    #nss_map_attribute uidNumber uid
    #nss_map_attribute userPassword passwordChar
    #nss_map_objectclass posixGroup aixAccessGroup
    #nss_base_group ou=aixgroup,?one
    #nss_map_attribute cn groupName
    #nss_map_attribute uniqueMember member
    #pam_login_attribute userName
    #pam_filter objectclass=aixAccount
    #pam_password clear

    # Netscape SDK LDAPS
    #ssl on

    # Netscape SDK SSL options
    #sslpath /etc/ssl/certs/cert7.db

    # OpenLDAP SSL mechanism
    # start_tls mechanism uses the normal LDAP port, LDAPS typically 636
    #ssl start_tls
    #ssl on

    # OpenLDAP SSL options
    # Require and verify server certificate (yes/no)
    # Default is to use libldap's default behavior, which can be configured in
    # /etc/openldap/ldap.conf using the TLS_REQCERT setting. The default for
    # OpenLDAP 2.0 and earlier is "no", for 2.1 and later is "yes".
    #tls_checkpeer yes

    # CA certificates for server certificate verification
    # At least one of these are required if tls_checkpeer is "yes"
    #tls_cacertfile /etc/ssl/ca.cert
    #tls_cacertdir /etc/ssl/certs

    # Seed the PRNG if /dev/urandom is not provided
    #tls_randfile /var/run/egd-pool

    # SSL cipher suite
    # See man ciphers for syntax
    #tls_ciphers TLSv1

    # Client certificate and key
    # Use these, if your server requires client authentication.
    #tls_cert
    #tls_key

    # Disable SASL security layers. This is needed for AD.
    #sasl_secprops maxssf=0

    # Override the default Kerberos ticket cache location.
    #krb5_ccname FILE:/etc/.ldapcache


    et dans le fichier libnss-ldap.secret, vérifiez que votre mot de passe apparait en clair et qu'il est seulement accessible pour le root (droit suivant : -rw-------)
  4. les fichiers de configurations pour les smbldaptools (dans /etc/smbldap-tools/)
    smbldap.conf a écrit: SID="S-1-5-21-1966686447-193709834-2223203770" # mettre votre SID réseau en exécutant la commande net rpc getsid -S localhost -W TOTO

    slaveLDAP="127.0.0.1"
    slavePort="389"
    masterLDAP="127.0.0.1"
    masterPort="389"
    ldapTLS="0"
    verify="require"
    ### A changer ==>
    suffix="dc=toto,dc=hd,dc=free,dc=fr"
    usersdn="ou=Users,${suffix}"
    computersdn="ou=Machines,${suffix}"
    groupsdn="ou=Groups,${suffix}"
    idmapdn="ou=Idmap,${suffix}"
    sambaUnixIdPooldn="sambaDomainName=TOTO,dc=toto,dc=hd,dc=free,dc=fr"
    scope="sub"
    hash_encrypt="SSHA"
    crypt_salt_format="%s"

    userLoginShell="/bin/bash"
    userHome="/home/%U"
    userHomeDirectoryMode="700"
    userGecos="System User"
    defaultUserGid="513"
    defaultComputerGid="515"
    skeletonDir="/etc/skel"
    #defaultMaxPasswordAge="45"

    with_smbpasswd="0"
    smbpasswd="/usr/bin/smbpasswd"

    with_slappasswd="0"
    slappasswd="/usr/sbin/slappasswd"

    # Default mode used for user homeDirectory
    userHomeDirectoryMode="700"

    et
    smbldap_bind.conf a écrit:slaveDN="cn=admin,dc=toto,dc=hd,dc=free,dc=fr"
    slavePw="monmotdepasse"
    masterDN="cn=admin,dc=toto,dc=hd,dc=free,dc=fr"
    masterPw="monmotdepasse"

Vous allez alors redémarer le serveur ldap :
Code: Tout sélectionner
# /etc/init.d/slapd restart


Si vous n'avez pas de message d'erreur au démarage, votre base est lancée et fonctionnelle
On exécute alors la commande suivante :
Code: Tout sélectionner
# smbldap-populate


et, pour mettre le mot de passe administrateur
Code: Tout sélectionner
# smbldap-passwd Administrator


Vous pouvez maintenant ajouter des utilisateurs dans la base avec les commandes suivantes
Code: Tout sélectionner
# smbldap-useradd –a –m –c "Jean Pince" jpince
pour ajouter l'utilisateur jpince
Code: Tout sélectionner
# smbldap-passwd jpince
pour changer le mot de passe de jpince

Je vous conseille là de redémarrer votre serveur ldap (on ne sait jamais...)
Maintenant, on va rendre ces compte accessibles par l'authentification Unix.
Pour cela, on va modifier le fichier /etc/nsswitch.conf
nsswitch.conf a écrit:# /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: files ldap #compat
group: files ldap #compat
shadow: files ldap #compat

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

ATTENTION, une erreur dans le fichier nsswitch.conf peut empécher l'authentification sur votre machine

Vous pouvez tester le bon fonctionnement de votre authentification avec les commandes
Code: Tout sélectionner
§ getent group
et
Code: Tout sélectionner
§ getent passwd

Vous devriez voir vos comptes locaux ainsi que les comptes dans la base LDAP. Si cela n'est pas le cas, bidouillez votre configuration jusqu'à y arriver ;).

Une fois cela marchant, on attaque le fichier de conf de samba comme suivant :
smb.conf a écrit:[global]
### A changer: pas d'espace, ni point === >
workgroup = toto

log file = /var/log/samba/%m.log
max log size = 1024
### A changer, mettre le meme nom que le nom de votre machine === >
netbios name = monserveur
server string = Samba-LDAP PDC Server
domain master = Yes
local master = Yes
domain logons = Yes
os level = 95
passwd program = /usr/sbin/smbldap-passwd ?u %u
ldap passwd sync = Yes
passdb backend = ldapsam:ldap://127.0.0.1/tdbsam guest
### A changer === >
ldap admin dn = cn=admin,dc=toto,dc=hd,dc=free,dc=fr
### A changer === >
ldap suffix = dc=toto,dc=hd,dc=free,dc=fr
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Machines
add user script = /usr/sbin/smbldap-useradd -m "%u"
ldap delete dn = Yes
delete user script = /usr/sbin/smbldap-userdel "%u"
add machine script = /usr/sbin/smbldap-useradd -w "%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"
logon path = \\%L\profile\%U
logon drive = P:
logon home = \\%L\%U
logon script = \\%L\netlogon\logon.bat
guest ok = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
case sensitive = No
default case = lower
preserve case = yes
short preserve case = Yes
#character set = iso8859-1
#domain admin group = @admin

dns proxy = No
wins support = Yes
### A changer si vous n'utilisez pas ce réseau === >
hosts allow = 192.168.0.1 192.168.0.2 192.168.0.3 192.168.1. 127. # mettre liste d'IP autorisées
winbind use default domain = Yes
nt acl support = Yes
msdfs root = Yes
hide files = /desktop.ini/ntuser.ini/NTUSER.*/

printcap name = cups
printing = cups
#printer admin = root @Administrateurs
load printers = yes
### FIN DE LA PARTIE GLOBALE #####

(NB : je mets juste la partie globale, le principe reste le même pour les partage que dans le fichier précédent)

Normalement, maintenant, vous devriez avoir un serveur Samba en PDC avec les utilisateurs distants sur le serveur LDAP.

Pour faire l'essai, prenez une machine Windows, entrez-là dans le domaine (si elle est déjà dans le domaine avec le même nom, sortez-là d'abord puis re-rentrez-la), puis essayez de vous authentifier avec un nom d'utilisateur distant.



Bonne chance ;)

LDAP - Lightweight Directory Access Protocol est un protocole permettant l'interrogation et la modification des services d'annuaire dans un réseau.
Image

le x264 vaincra
Avatar de l’utilisateur
earendil
Modérateur
Modérateur
 
Messages: 2357
Inscription: 06 Fév 2007
Localisation: Dans la BAO...

Messagepar earendil » Mer 04 Juil, 2007 15:21

MAJ :

Ajout du cas avec authentification sur serveur LDAP ;)
Image

le x264 vaincra
Avatar de l’utilisateur
earendil
Modérateur
Modérateur
 
Messages: 2357
Inscription: 06 Fév 2007
Localisation: Dans la BAO...

Messagepar lauden » Mer 04 Juil, 2007 20:05

Beau boulot Earendil. :yeap:

J'ajouterais qu'il est indispensable d'effectuer une sauvegarde des fichiers de configuration, avant toute modification.

Pour les profanes, Samba est un logiciel, compatible avec windows, sous licence GNU (gratuit) permettant de créer un serveur de fichiers, d'impression et de gérer les utilisateurs.
Dernière édition par lauden le Mer 04 Juil, 2007 20:08, édité 1 fois.
lauden
Administrateur
Administrateur
 
Messages: 6893
Inscription: 12 Nov 2006

Messagepar KadicK » Mer 04 Juil, 2007 20:06

Yep beau boulot Earendil ;)
Avatar de l’utilisateur
KadicK
Ghost member
Ghost member
 
Messages: 5202
Inscription: 03 Fév 2007

Messagepar Underground78 » Mer 04 Juil, 2007 20:26

Ouep ! :)
Avatar de l’utilisateur
Underground78
Administrateur
Administrateur
 
Messages: 11267
Inscription: 06 Fév 2007
Localisation: France


Retourner vers Tutoriels

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités