Счетчик

Поисковый анализ сайта
яндекс.ћетрика
Cервер и сайт запущен 2011.02.01 на Debian

И так у нас есть готовая рабочая станция debian 6 и контроллер домена server 2003, наша задача сделать авторизацию пользователей в этой системе и каждый попадал в свой каталог хранилища

1. Настройка файлового сервера.

Устанавливаем Samba и ACL.

apt-get install samba acl



Конфигурация у него будет такая (из комментариев всё и так понятно):

[global]
#Имя файлового сервера
   netbios name = FILES
#Домен, в который он будет включён
   workgroup = LDAP
#комментарий
   server string = FILE SERVER
#Никаких попыток быть контроллером
   local master = no
   domain master = no
   preferred master = no
   os level = 3
   dns proxy = no
#Логи и есть логи
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
#А вот security всё равно domain. Потому что так надо.
   security = domain
   null passwords = false
   encrypt passwords = true
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   wins support = no
   socket options = TCP_NODELAY SO_RCVBUF=524288 SO_SNDBUF=524288



#Тут лежат профили переносимые
[profiles]
path = /domain/profiles
writable = yes
create mask = 0600
directory mask = 0700
browseable = no
guest ok = yes
profile acls = yes

#Это подключаемый HOME-папки
[home]
path = /domain/home/%U
comment = Home Directory
browseable = no
read only = no
create mask = 0600
directory mask = 0700



#Общий файловый ресурс
[share]
path = /domain/share/
valid users = %U
guest ok = yes
writable = yes
create mask = 0770
directory mask = 0770
browseable = no
veto files = /*.exe/*.mp3/*.tiff/*.avi/*.3gp/*.msi/*.bmp/*.vob/*.iso/*.ngr/
delete veto files = yes

#Дополнительный ресурс
[programs]
path = /domain/programs/
valid users = %U
guest ok = yes
writable = yes
create mask = 2770
directory mask = 2770
browseable = no



Из главного: отключаем всё, что можно, делая эту Самбу абсолютно безправной. И ещё profile acls = yes - пока не поставил - не хотел обращаться с сетевому профилю. После этого ответственный шаг: надо ввести эту Самбу в домен LDAP, который держится на другой Самбе.

net rpc join



Если всё правильно получилось, то домен попросит пароль root'a. То есть это тот пользователь, который у нас является админом в Самбе (но не в LDAP'е, не путаем!). Проще говоря, это тот же самый пользователь, от имени которого в домен вводятся windows-машины. Собственно, testparm должен выдать что-то такое:

# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[profiles]"
Processing section "[home]"
Processing section "[share]"
Processing section "[programs]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions



Вот думаете и всё на этом, дескать в домене? Как бы ни так, хренушки! Чтоб всё было совсем хорошо, надо поставить ещё два, моих любимых, пакета:

apt-get install libpam-ldapd libnss-ldapd



Ну и естественно, при пост-инсталляции указать всё подряд, пусть обращается к LDAP. Но и это ещё не всё.

Если бы у нас home-папки хранились на контроллере домена, то их useradd скрипты сами бы и создавали. А тут что? Папки-то на постороннем сервере хранятся. Выход есть! Даже не один:
Прицепить fileserver@home через NFS на место domain@home и пусть эти самые useradd скрипты делают свою работу
Заставить это делать PAM.

Естественно, мы пойдём вторым путём. Редактируем 2 фалика,/etc/pam.d/common-session и /etc/pam.d/common-session-noninteractive, внося в них одну и ту же строку (выделено красным). Важно расположить эту строку именно за строчкой

session required        pam_unix.so



В принципе, более важен именно файл noninteractive, хотя первый тоже поправим, мало ли, придётся логинится в консоли.

#
# /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).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
session    [default=1]            pam_permit.so
# here's the fallback if no module succeeds
session    requisite            pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
session    required    pam_unix.so
session  required        pam_mkhomedir.so skel=/etc/skel umask=0002
session    [success=ok default=ignore]    pam_ldap.so minimum_uid=1000
# end of pam-auth-update config




#
# /etc/pam.d/common-session-noninteractive - session-related modules
# common to all non-interactive 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 all non-interactive sessions.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
session    [default=1]            pam_permit.so
# here's the fallback if no module succeeds
session    requisite            pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
session    required    pam_unix.so
session  required        pam_mkhomedir.so skel=/etc/skel umask=0002
session    [success=ok default=ignore]    pam_ldap.so minimum_uid=1000
# end of pam-auth-update config



Вот теперь больше похоже на истину.

2. Перенастройка сервера домена

Естественно, надо чуток перелопатить конфигурацию домена. Удаляем расшаренные папки, окромя netlogon, оттуда logon-скрипты загружаются, они много места не займут.

dos charset = CP1251
unix charset = UTF8
display charset = UTF8
workgroup = LDAP
realm = OpenLDAP
server string = %h server
#interfaces = eth0:1 ## Необходимо поправить на свой интерфейс, или вообще убрать
#bind interfaces only = Yes ## Убрать, если нет определенного интерфейса на самбу
map to guest = Bad User
passdb backend = ldapsam:ldap://127.0.0.1/
pam password change = Yes
passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*
syslog = 0
time server = Yes
log file = /var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
add user script = /usr/sbin/smbldap-useradd -m %u -d /home/%u %u
delete user script = /usr/sbin/smbldap-userdel %u -r %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
add machine script = /usr/sbin/smbldap-useradd -w %u
logon script = logon.bat
logon path = \\files\profiles\%U
domain logons = Yes
logon drive = U:
logon home = \\files\home
os level = 100
preferred master = Yes
domain master = Yes
dns proxy = No
wins support = Yes
ldap admin dn = cn=admin,dc=ldap
ldap delete dn = Yes
ldap group suffix = ou=group
ldap idmap suffix = ou=idmap
ldap machine suffix = ou=computer
ldap suffix = dc=ldap
ldap ssl = no
ldap user suffix = ou=people
panic action = /usr/share/samba/panic-action %d
map acl inherit = Yes
case sensitive = No
hide unreadable = Yes
map hidden = Yes
map system = Yes

ldap passwd sync = yes



[netlogon]
path = /domain/netlogon
browseable = No




Тут важно что? Тут важно то, чтобы параметры контроллера домена и файлового сервера согласованы были. Не забываем указать в путях нужные имена серверов. Собственно, и всё. Теперь у нас пользователи своими файлами не забивают контроллер домена и вообще под контроллер можно выделить минимум пространства.

fileserverconf.zip

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


Защитный код
Обновить