Samba + LDAP

Потребовалось на предприятии поставить сервер, который будет раздавать шары. Решил пойти таким путем: поставить самбу и лдап сервер, в котором будут группы и пользователи самбы. На сервере стоит ОС FreeBSD 8.1.

Вначале ставим LDAP:

# cd /usr/ports/net/openldap24-server
# make install clean

Все параметры я оставил как есть. После успешной установки идем править конфиг - /usr/local/etc/openldap/slapd.conf. У меня он получился такого содержания

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include        /usr/local/etc/openldap/schema/core.schema
include        /usr/local/etc/openldap/schema/cosine.schema
include        /usr/local/etc/openldap/schema/inetorgperson.schema
include        /usr/local/etc/openldap/schema/misc.schema
include        /usr/local/etc/openldap/schema/nis.schema
include        /usr/local/etc/openldap/schema/openldap.schema

# Define global ACLs to disable default read access.

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral    ldap://root.openldap.org

pidfile        /var/run/openldap/slapd.pid
argsfile    /var/run/openldap/slapd.args

# Load dynamic backend modules:
modulepath    /usr/local/libexec/openldap
moduleload    back_bdb
# moduleload    back_hdb
# moduleload    back_ldap

# Sample security restrictions
#    Require integrity protection (prevent hijacking)
#    Require 112-bit (3DES or better) encryption for updates
#    Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
#    Root DSE: allow anyone to read it
#    Subschema (sub)entry DSE: allow anyone to read it
#    Other DSEs:
#        Allow self write access
#        Allow authenticated users read access
#        Allow anonymous users to authenticate
#    Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
#    by self write
#    by users read
#    by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!

access to attrs=userPassword
    by self write
    by anonymous auth
    by * none

access to *
    by self write
    by users read
    by anonymous read
    by * none

#######################################################################
# BDB database definitions
#######################################################################

database    bdb
suffix        "dc=dush4,dc=ru"
rootdn        "cn=root,dc=dush4,dc=ru"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw        {SSHA}*****
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory    /var/db/openldap-data
# Indices to maintain
index    objectClass    eq
index    cn        eq

Пароль для админа в OpenLDAP генерируется командой slappasswd, полученный результат работы команды нужно просто скопировать в конфиг.
Добавляем следующие записи в /etc/rc.conf

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://127.0.0.1/"'

Далее пробуем запустить сервис

# /usr/local/etc/rc.d/slapd start

Проверяем запустился ли сервис:

# sockstat | grep slapd
ldap     slapd      693   3  dgram  -> /var/run/logpriv
ldap     slapd      693   6  stream /var/run/openldap/ldapi
ldap     slapd      693   7  tcp4   127.0.0.1:389         *:*

Если вы видите что-то на подобии этого, то значит - все прошло нормально.
Наполняем лдап начальными данными, для этого создаем файл main.ldif следующего содержания:

dn: dc=dush4,dc=ru
objectClass: dcObject
objectClass: organization
objectClass: top
dc: dush4
o: dush4

dn: cn=root,dc=srv-home,dc=local
objectClass: organizationalRole
ou: root

dn: ou=users,dc=dush4,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: users

dn: ou=groups,dc=dush4,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: groups

dn: ou=computers,dc=dush4,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: computers

Чтобы добавить записи, выполняем следующую команду:

# ldapadd -x -D "cn=root,dc=dush4,dc=ru" -W -f main.ldif

С настройкой OpenLDAP пока закончили, переходим к установке Samba.

# cd /usr/ports/net/samba
# make install clean

Из всех опций я оставил следующие:

  • LDAP
  • ACL_SUPPORT
  • QUOTAS
  • POPT

После установки самбы нужно добавить новую схему в OpenLDAP, для этого делаем следующее

# cp /usr/local/share/examples/samba/LDAP/samba.schema /usr/local/etc/openldap/schema

Далее правим конфиг, добавляем следующую строчку

include        /usr/local/etc/openldap/schema/samba.schema

И перезапускаем сервер

# /usr/local/etc/rc.d/slapd restart

После этих не сложных действий правим конфиг самбы - /usr/local/etc/smb.conf. У меня он получился таким:

#======================= Global Settings =====================================
[global]
  workgroup = DUSH-4
  server string = DUSH-4 File Server
  netbios name = srv-data.local

  security = user
  hosts allow = 192.168.4. 127.
  load printers = no
;   printcap name = /etc/printcap
;   printcap name = lpstat
;   printing = cups
;  guest account = pcguest

  log file = /var/log/samba/log.%m
  max log size = 50

  encrypt passwords = yes
  passdb backend = ldapsam:ldap://localhost/
  ldap suffix = dc=dush4,dc=ru
  ldap user suffix = ou=users
  ldap group suffix = ou=groups
  ldap machine suffix = ou=computers
  ldap admin dn = "cn=root,dc=dush4,dc=ru"
  ldap delete dn = no
  ldap ssl = no

  socket options = SO_RCVBUF=32768 SO_SNDBUF=32768

  interfaces = 192.168.4.251/24 127.0.0.1/8
  bind interfaces only = yes
  local master = yes
  os level = 65
  domain master = yes 
  preferred master = yes
  domain logons = no
  wins support = yes
  dns proxy = no
  hide dot files = yes
  hide files = /.*
  dfree cache time = 60
  dfree command = /usr/local/bin/dfree

  display charset = koi8-r
  unix charset = koi8-r
  dos charset = cp866

# Use inherited ACLs for directories
;    nt acl support = yes
;    inherit acls = yes
;    map acl inherit = yes

# These scripts are used on a domain controller or stand-alone 
# machine to add or delete corresponding unix accounts
;  add user script = /usr/sbin/useradd %u
;  add group script = /usr/sbin/groupadd %g
;  add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
;  delete user script = /usr/sbin/userdel %u
;  delete user from group script = /usr/sbin/deluser %u %g
;  delete group script = /usr/sbin/groupdel %g


#============================ Share Definitions ==============================
[homes]
  comment = Home Directories
  browseable = no
  writable = yes

# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
;   comment = Network Logon Service
;   path = /usr/local/samba/lib/netlogon
;   guest ok = yes
;   writable = no
;   share modes = no


# Un-comment the following to provide a specific roving profile share
# the default is to use the user's home directory
;[Profiles]
;    path = /usr/local/samba/profiles
;    browseable = no
;    guest ok = yes


# NOTE: If you have a BSD-style print system there is no need to 
# specifically define each individual printer
[printers]
  comment = All Printers
  path = /var/spool/samba
  browseable = no
# Set public = yes to allow user 'guest account' to print
  guest ok = no
  writable = no
  printable = yes

[distrib]
  comment = Distrib
  path = /mnt/media/samba/distrib
  public = no
  writable = yes
  force create mode = 0640
  force directory mode = 0750
  force user = smb_user
  force group = smb_write
  valid users = @smb_read
  read list = @smb_read
  write list = @smb_write

[temp]
  comment = Temporary files
  path = /mnt/media/samba/temp
  public = no
  writable = yes
  force create mode = 0640
  force directory mode = 0750
  force user = smb_user
  force group = smb_write
  valid users = @smb_read
  read list = @smb_read
  write list = @smb_read

После чего нужно сказать пароль самбе от указанной учетной записи лдап, для этого делаем следующее:

# smbpasswd
New password: ***
Retry new password: ***

Вводим пароль за запускаем самбу:

# /usr/local/etc/rc.d/samba start
Starting nmbd.
Starting smbd.

На этом установка и настройка пакетов закончена. Для простоты администрирования учетных записей в LDAP можно дополнительно установить пакет ldapscripts.

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Яндекс.Метрика