IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Servidor_de_comunicacions_Institut_les_Planes

Instal·lació samba

  • Per instal·lar samba farem el següent:
# apt-get install samba
  • Podem reiniciar el servei, amb:
# /etc/init.d/smbd restart

  • I també, amb:
# service smbd restart
smbd start/running, process 1759

Instal·lació SWAT

  • Eina gràfica per administrar el samba.
  • Per instal·lar swat hem fet el següent:
# apt-get install swat xinetd
  • Podem reiniciar el servei:
# /etc/init.d/xinetd restart
  • Per configurar el xinetd per que utilitzi swat, farem el següent:
  1. Anirem a /etc/xinetd.d/swat
  2. Si no existeix el fitxer el crearem
  3. I li introduïm el següent contingut:
service swat
{
     port = 901
     socket_type = stream
     wait = no
     #Si es treu el comentari sols conneca amb local.
     #only_from = localhost
     user = root
     server = /usr/sbin/swat
     log_on_failure += USERID
     disable = no
}
  • SWAT requereix d'un servidor web, nosaltres utilitzem apache2
  • Finalment, per accedir-hi, farem:
http: //IP DEL SERVIDOR : 901
Davidginovartinstalacioswat.png

Configurar Samba amb LDAP

  • El primer que farem serà instal·lar el paquet:
# apt-get install samba-doc
  • Després el descomprimeixo:
# gunzip /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz 
  • Ara el copiem a:
# cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema /etc/ldap/schema/
  • Ara ens farà falta canviar el tipus d'arxiu de .schema a .ldif. Per fer-ho crearem un fitxer amb el següent contingut:
# nano convertir.conf
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/samba.schema
  • Després creem un directori, amb:
# mkdir ldif_output
  • I ara executem aquesta comanda per transformar el fitxer.
# slapcat -f convertir.conf -F ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > ldif_output/cn=samba.ldif
  • I després situo el fitxer resultant a /etc/ldap/schema/, amb aquesta comanda:
# cp cn\=samba.ldif /etc/ldap/schema/
  • També tindrem que editar el fitxer cn=samba.ldif, i eliminar l'index {12} de les tres primeres línies, n'hi ha dos. També eliminarem les set ultimes línies del fitxer.
  • Així es troba inicialment:
DavidginovartSamba-Ldap1.png
  • Així ha de quedar:
DavidginovartSamba-Ldap2.png
  • Aquí les línies a eliminar al final del fitxer:
DavidginovartSamba-Ldap.png
  • Un cop fet aquests passos ja podem carregar el fitxer amb aquesta comanda:
# ldapadd -D cn=admin,cn=config -W -f /etc/ldap/schema/cn\=samba.ldif
  • Podem comprovar que tot a sortit correctament, si anem a /etc/ldap/slapd.d/cn=config/cn=schema/ i veiem que tenim l'esquema de nom samba.ldif.
  • Ara creem un fitxer de nom index_samba.ldif, amb aquest contingut:
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub
  • Ara carrego el fitxer amb aquesta comanda:
ldapmodify -D cn=admin,cn=config -W -f /etc/ldap/slapd.d/cn\=config/cn\=schema/index_samba.ldif
  • En un principi hem donava un error:
modifying entry "olcDatabase={1}hdb,cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)
additional info: duplicate index definition for attr "uid"
  • Que l'he solucionat comentant les dos línies on surt uid.
  • Per comprovar que s'han carregat correctament, podem utilitzar aquesta comanda:
ldapsearch -xLLL -D cn=admin,cn=config -b cn=config -W olcDatabase={1}hdb
  • Per últim configuro el samba, vaig al fitxer smb.conf i he afegit aquestes línies:
# LDAP Settings
passdb backend = ldapsam:ldap://localhost
ldap suffix = dc=inslesplanes,dc=santabarbara,dc=cat
ldap user suffix = ou=Usuaris
ldap group suffix = ou=Grups
ldap machine suffix = ou=Maquines
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=admin,dc=inslesplanes,dc=santabarbara,dc=cat
ldap ssl = start tls
ldap passwd sync = yes
add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
  • També he comentat aquesta línia:
DavidginovartSamba-Ldap3.png
  • Per últim reinicio el samba, amb:
# service nmbd restart
# service smbd restart
  • Per a que Samba pugui utilitzar la contrasenya de l'administrador LDAP s'ha d'executar la comanda:
# smbpasswd -w iesebre
Setting stored password for "cn=admin,dc=inslesplanes,dc=santabarbara,dc=cat" in secrets.tdb
  • On iesebre es el password de l'usuari administrador de Ldap.

Instal·lació sambaldap-tools

  • Ara instal·larem el sambaldap-tools.
# apt-get install smbldap-tools
  • El configuro:
# gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz 
# perl /usr/share/doc/smbldap-tools/configure.pl

Exemple de configuració Pas a Pas

  • Primer instal·lem aquests paquets:
$ sudo apt-get install samba samba-doc
  • Ara configurem el fitxer del samba /etc/samba/smb.conf, però abans podem fer una còpia de seguretat del fitxer.
# Samba config file created using SWAT
# from UNKNOWN (192.168.59.5)
# Date: 2011/05/09 21:50:08
[global]
       workgroup = INSLESPLANES
       netbios name = SBRBINSLESPLANESSRVR1
       socket options = SO_KEEPALIVE TCP_NODELAY IPTOS_LOWDELAY
       #  interfaces = 192.168.59.0/24
       #  bind interfaces only = Yes
       time server = Yes
       server string = SBRBINSLESPLANESSRVR1 PDC
       dns proxy = no
       log level = 0
       debug timestamp = yes
       log file = /var/log/samba/log.%m
       max log size = 0
       syslog = 0
       panic action = /usr/share/samba/panic-action %d
       security = user
       encrypt passwords = true
       os level = 99
       preferred master = Yes
       domain master = Yes
       wins support = Yes
       name resolve order = wins host bcast
       local master = yes
       passdb backend = ldapsam:"ldap://localhost"
       map to guest = bad user
       domain logons = yes
       add machine script = /usr/sbin/smbldap-useradd -w "%u"
       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"
       logon path = \\%N\profiles\%U
       logon script = logon.bat
       logon drive = u:
       time server = yes
       usershare allow guests = yes
       ldap admin dn = cn=admin,dc=inslesplanes,dc=santabarbara,dc=cat
       ldap ssl = off
       ldap delete dn = no
       ldap suffix = ou=All,dc=inslesplanes,dc=santabarbara,dc=cat
[netlogon]
       comment = Logon
       path = /etc/samba/netlogon
       browseable = No
       writable = no  
[profiles]
       path = /etc/samba/profiles
       browsable = no
       writable = yes
       create mask = 0600
       directory mask = 0700
[homes]
      root preexec = /etc/samba/scripts/mk_sambadir "/home/%u" "%u" "%g"
      valid users = %S, %D%w%S
      browsable = no
      read only = no
      writable = yes
      printable = no
      guest ok = no 
      map archive = yes
      comment = Home Directories
      create mode = 0755
      directory mode = 0755
[printers]
       comment = All Printers
       path = /var/spool/samba
       create mask = 0700
       printable = Yes   
       browseable = No   
[print$]
       comment = Printer Drivers
       path = /var/lib/samba/printers
[prova]
       comment = Directori de prova compartit per David.
       path = /home/stbarbara/prova/
       read only = No
       create mask = 0666
       directory mask = 0777
       guest ok = Yes
[recurs_david]
       comment = Directori de prova compartit per David.
       path = /home/david/
       read only = No
       create mask = 0666
       directory mask = 0777
       guest ok = Yes
[provaswatcomparticio]
       comment = prova de comparticio des del SWAT
       path = /home/david/
       guest ok = Yes
  • Un cop configurat el fitxer del samba, passem a crear aquesta carpeta, amb aquests permisos.
$ sudo mkdir /etc/samba/netlogon
$ sudo chmod 775 /etc/samba/netlogon
$ sudo mkdir /etc/samba/profiles
$ sudo chmod 777 /etc/samba/profiles
  • Creem un script a /etc/samba/netlogon/logon.bat.unix, amb aquest contingut:
net time \\SBRBINSLESPLANESSRVR1 /set /yes
net use p: \\SBRBINSLESPLANESSRVR1\inslesplanes
net use LPT1: \\MyServer\MyPrinter
  • El fitxer ha d'estar en format DOS. Podeu convertir un fitxer UNIX en un fitxer DOS amb:
# sudo apt-get install tofrodos
# sudo -i
# fromdos -u < /etc/samba/netlogon/logon.bat.unix > /etc/samba/netlogon/logon.bat
  • Podeu comprovar que els fitxers són diferents amb la comanda file:
file /etc/samba/netlogon/logon.bat
/etc/samba/netlogon/logon.bat: ASCII text, with CRLF line terminators
  • També hem de crear una altra carpeta, a:
# mkdir /etc/samba/scripts
  • On dins crearem un script de nom mk_sambadir
#!/bin/bash
if [ ! -d "$1" ];
then
/bin/cp -r /etc/skel "$1"
/bin/chmod -R 755 "$1"
/bin/chown -R "$2" "$1"
/bin/chgrp -R "$3" "$1"
fi
  • Podem comprovar la sintaxi, amb:
# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[netlogon]"
Processing section "[profiles]"
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[prova]"
Processing section "[recurs_david]"
Processing section "[provaswatcomparticio]"
Loaded services file OK.
WARNING: You have some share names that are longer than 12 characters.
These may not be accessible to some older clients.
(Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions
  • Un cop comprovat reiniciem el servidor amb:
# service smbd restart
# service nmbd restart
  • Cal indicar la paraula de pas de l'usuari admin de ldap amb:
# smbpasswd -w parauladepas
  • En aquest punt instal·lem smbldap-tools
# apt-get install smbldap-tools
  • El fitxer de configuració es troba a, /etc/smbldap-tools/smbldap.conf
# joe /etc/smbldap-tools/smbldap.conf
  • Un exemple, el fitxer que estem utilitzant nosaltres:
# see "man Net::LDAP" in start_tls section for more details
verify="require"
# CA certificate
# see "man Net::LDAP" in start_tls section for more details
cafile="/etc/smbldap-tools//ca.pem"
# certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
clientcert="/etc/smbldap-tools//smbldap-tools.pem"
# key certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
clientkey="/etc/smbldap-tools//smbldap-tools.key"
# LDAP Suffix
# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=inslesplanes,dc=santabarbara,dc=cat"
# Where are stored Users
# Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for usersdn
usersdn="ou=People,${suffix}"
# Where are stored Computers
# Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for computersd
computersdn="ou=Computers,${suffix}"
# Where are stored Groups
# Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for groupsdn
groupsdn="ou=Groups,${suffix}"
# Where are stored Idmap entries (used if samba is a domain member server)
# Ex: groupsdn="ou=Idmap,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for idmapdn
idmapdn="ou=Idmap,${suffix}"
# Where to store next uidNumber and gidNumber available for new users and group
# If not defined, entries are stored in sambaDomainName object.
# Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Default scope Used
scope="sub"
# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="MD5"
# if hash_encrypt is set to CRYPT, you may set a salt format.
# default is "%s", but many systems will generate MD5 hashed 
# passwords if you use "$1$%.8s". This parameter is optional!
crypt_salt_format="%s"
##############################################################################
# 
# Unix Accounts Configuration
# 
##############################################################################
# Login defs
# Default Login Shell
# Ex: userLoginShell="/bin/bash"
userLoginShell="/bin/bash"
# Home directory
# Ex: userHome="/home/%U"
userHome="/home/%U"
# Default mode used for user homeDirectory
userHomeDirectoryMode="700"
# Gecos
userGecos="System User"
# Default User (POSIX and Samba) GID
defaultUserGid="513"
# Default Computer (Samba) GID
defaultComputerGid="515"
# Skel dir
skeletonDir="/etc/skel"
# Default password validation time (time in days) Comment the next line if
# you don't want password to be enable for defaultMaxPasswordAge days (be 
# careful to the sambaPwdMustChange attribute's value)
defaultMaxPasswordAge="45"
##############################################################################
#
# SAMBA Configuration
#
##############################################################################
# The UNC path to home drives location (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon home'
# directive and/or disable roaming profiles
# Ex: userSmbHome="\\PDC-SMB3\%U"
userSmbHome="\\PDC-SMB3\%U"
# The UNC path to profiles locations (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon path'
# directive and/or disable roaming profiles
# Ex: userProfile="\\PDC-SMB3\profiles\%U" 
userProfile="\\PDC-SMB3\profiles\%U"
# The default Home Drive Letter mapping
# (will be automatically mapped at logon time if home directory exist)
# Ex: userHomeDrive="H:"
userHomeDrive="H:"
# The default user netlogon script name (%U username substitution)
# if not used, will be automatically username.cmd
# make sure script file is edited under dos
# Ex: userScript="startup.cmd" # make sure script file is edited under dos
userScript="logon.bat"
# Domain appended to the users "mail"-attribute
# when smbldap-useradd -M is used
# Ex: mailDomain="idealx.com"
mailDomain="@inslesplanes.santabarbara.cat"
##############################################################################
#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#
##############################################################################
# Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf.pm) but
# prefer Crypt::SmbHash library
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
# Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_conf.pm)
# but prefer Crypt:: libraries
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"
# comment out the following line to get rid of the default banner
# no_banner="1"
  • Ara editem l'usuari administrador i la paraula de pas, nosaltres utilitzem la mateixa que en tota la instal·lació del servidor de Les Planes.
# cat /etc/smbldap-tools/smbldap_bind.conf
############################
# Credential Configuration #
############################ 
# Notes: you can specify two differents configuration if you use a
# master ldap for writing access and a slave ldap server for reading access
# By default, we will use the same DN (so it will work for standard Samba
# release)
slaveDN="cn=admin,dc=inslesplanes,dc=santabarbara,dc=cat"
slavePw="iesebre"
masterDN="cn=admin,dc=inslesplanes,dc=santabarbara,dc=cat"
masterPw="iesebre"
  • Un cop fet aquest pas podem protegir aquest fitxer contra escriptura.
# chmod 0600 /etc/smbldap-tools/smbldap_bind.conf
  • Ara efectuem aquesta comanda:
# smbldap-populate 
Populating LDAP directory for domain inslesplanes.santabarbara.cat (S-1-5-21-3728237819-584472180-3310891756)

(using builtin directory structure)

entry dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry ou=People,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry ou=Computers,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry ou=Idmap,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry uid=root,ou=People,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry uid=nobody,ou=People,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry cn=Domain Admins,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry cn=Domain Users,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry cn=Domain Guests,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry cn=Domain Computers,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry cn=Administrators,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry cn=Account Operators,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry cn=Print Operators,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist.  
entry cn=Backup Operators,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry cn=Replicators,ou=Groups,dc=inslesplanes,dc=santabarbara,dc=cat already exist. 
entry sambaDomainName=inslesplanes.santabarbara.cat,dc=inslesplanes,dc=santabarbara,dc=cat already exist. Updating it...
Please provide a password for the domain root: 
Changing UNIX and samba passwords for root
New password: 
Retype new password: 
New passwords don't match!
  • Ara fem:
# pdbedit -vL

o

# pdbedit -d 3 -vL
lp_load_ex: refreshing parameters
Initialising global parameters
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
params.c:pm_process() - Processing configuration file "/etc/samba/smb.conf" 
Processing section "[global]"
smbldap_search_domain_info: Searching for:[(&(objectClass=sambaDomain)(sambaDomainName=INSLESPLANES))]
smbldap_open_connection: connection opened
ldap_connect_system: successful connection to the LDAP server
smbldap_search_paged: base => [ou=All,dc=inslesplanes,dc=santabarbara,dc=cat], filter => [(&(uid=*)(objectclass=sambaSamAccount))],scope => [2], pagesize => [1024]
smbldap_search_paged: search was successful
sid S-1-5-21-3728237819-584472180-3310891756-2008 does not belong to our domain
sid S-1-5-21-3728237819-584472180-3310891756-2010 does not belong to our domain
  • Podem comprovar l'usuari, amb:
# ldapwhoami -x -D "cn=admin,dc=inslesplanes,dc=santabarbara,dc=cat" -W
Enter LDAP Password: 
dn:cn=admin,dc=inslesplanes,dc=santabarbara,dc=cat
  • Finalment ara configurem PAM i NSSwitch per tal que el servidor utilitzi com a base de dades d'usuaris no només les locals (fitxers /etc/passwd, /etc/shadow) sinó també el servidor Ldap. Instal·lem:
# apt-get install ldap-auth-config
  • Podem reconfigurar-lo, amb:
# dpkg-reconfigure ldap-auth-config 
  • El reconfiguro d'aquesta manera:
DavidginovartSambaLdap.png
DavidginovartSambaLdap1.png
DavidginovartSambaLdap2.png
DavidginovartSambaLdap3.png
DavidginovartSambaLdap4.png
DavidginovartSambaLdap5.png
DavidginovartSambaLdap6.png
  • L'últim pas es modificat el fitxer /etc/nsswitch.conf:
# nano /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
hosts:          files dns
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis
  • Podem comprovar-ho amb:
# getent passwd cortega
cortega:x:1004:1004:cristian ortega:/home/cortega:/bin/bash
# getent passwd root
root:x:0:0:root:/root:/bin/bash
# getent passwd david
david:x:1001:1001:david,,,:/home/david:/bin/bash
# getent passwd omachi
omachi:x:1005:1005:omar machi:/home/omachi:/bin/bash
  • I també amb:
# getent group admin
admin:x:112:stbarbara,david
  • En aquest exemple tenim dos usuaris del sistema i dos usuaris del Domini, creats amb el Gosa i Ldap.
  • Amb els usuaris del grup tenim un usuari del sistema i un usuari del domini dins del grup admin.
  • Quan dic del sistema vull dir creats o be per línia de comandes o be durant l'instal·lació del sistema operatiu. En aquest exemple tant l'usuari David com el root, són usuaris del sistema i cortega i omachi són els creats per Gosa i Ldap. En l'exemple del grup, l'usuari stbarbara, a sigut l'usuari que s'ha creat durant l'instal·lació del servidor i l'usuari david s'ha creat durant l'instal·lació del client, com ja sabeu els usuaris que és creen durant l'instal·lació són afegits al grup admin.

Enllaços externs