| |
Сам я фрёй занимаюсь совсем немного и уже успел столкнуться с нехваткой путёвых примеров, которые облегчают понимание незнакомой операционки. Но хотелось бы, чтобы люди не повторяли втупую пошаговую инструкцию, а параллельно читали маны.
Итак, начнём. Одно из первых, что я сделал, так это поабгрейдил порты. Этот момент разжёван неплохо, но проблемы я всё равно поимел.
Далее…
Одно из первых, с чем сталкивается человек, установивший фрю это – SAMBA, ибо почти все, мы пришли на фрю из винды. Я ставил SAMBA – 3.0.11 . Но т.к. до этого уже был домен на виндах, то пришлось делать авторизацию юзеров на самбе по существующим доменным аккаунтам. Сразу говорю, что домен у меня на W2k, но в NATIVE моде. В дальнейшем планирую 2000-й сервер убирать к чертям, ибо глюки в системе из-за нарастающей энтропии уже просто достали.
Делаем #make config.
Options for samba 3.0.11,1
[X] LDAP With LDAP support
[X] ADS With Active Directory support
[X] CUPS With CUPS printing support
[X] WINBIND With WinBIND support
[ ] ACL_SUPPORT With ACL support
[X] SYSLOG With Syslog support
[ ] QUOTAS With Quota support
[X] UTMP With UTMP support
[ ] MSDFS With MSDFS support
[ ] SAM_XML With XML smbpasswd backend
[ ] SAM_MYSQL With MYSQL smbpasswd backend
[ ] SAM_PGSQL With PostgreSQL smbpasswd backend
[ ] SAM_OLD_LDAP With Samba2.x LDAP smbpasswd backend
[X] PAM_SMBPASS With SMB PAM module
[ ] EXP_MODULES With experimental module(s)
[X] POPT With installed POPT library
#make install
После установки самбы правим конфиг (smb.conf):
[global]
workgroup = EXAMPLE_DOMAIN
security = domain
bind interfaces only = 10.1.1.5
password server = *
encrypt passwords = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
template homedir = /home/%U
template shell = /bin/tcsh
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
nt acl support = yes
socket options = TCP_NODELAY
wins server = 10.1.1.1
dns proxy = no
#============ Share Definitions ======================
[incoming]
path = /usr/local/ftp/incoming
valid users = EXAMPLE_DOMAIN+user # пользователь user из домена EXAMPLE_DOMAIN
writable = yes
create mask = 0777
Это принципиальные значения, которые могут повлиять на работу.
Теперь надо настроить авторизацию. Первым делом нам необходимо создать файл /etc/nsswitch.conf . По умолчанию его нет в системе, создаём и впишем туда:
passwd: files winbind
group: files winbind
Этот файл объяснит системе, откуда брать пароли и группы пользователей, а именно от winbind.
Далее включаемся в домен:
#net join EXAMPLE_DOMAIN -U example-admin
Где EXAMPLE_DOMAIN – FQDN имя домена, а example-admin - учетная запись с правами администратора в домене Windows. C нетбиос именем домена у меня не прокатило. После выполнения команды запросится пароль, потом фря ругается на какую-то ошибку (не помню, но вроде что-то по поводу АД), но в диспетчере компьютеров фря появляется.
Команда
#net ads join EXAMPLE_DOMAIN -U example-admin
у меня не прокатила, может быть из-за того, что у меня домен в native mode.
Проверяем:
#wbinfo -t
Должны получить:
checking the trust secret via RPC calls succeeded
Значит RPC между фрёй и виндами работает. Далее:
#wbinfo -g
Должны получить что-то типа этого (список групп домена):
BUILTIN+System Operators
BUILTIN+Replicators
BUILTIN+Guests
BUILTIN+Power Users
BUILTIN+Print Operators
BUILTIN+Administrators
BUILTIN+Account Operators
BUILTIN+Backup Operators
BUILTIN+Users
domain admins
domain users
domain guests
domain computers
domain controllers
cert publishers
schema admins
enterprise admins
group policy creator owners
Для очистки совести можно проверить что фря понимает и доменных, и локальных юзеров
Локальный юзер root
#id root
uid=0(root) gid=0(wheel) groups=0(wheel), 5(operator)
Кто-либо из доменных админов.
#id Administrator
uid=10000(Administrator) gid=10000(domain admins) groups=10000(domain admins)
После этого самба на свои шары должна пускать доменных пользователей.
Ещё один момент… После описанных выше настроек и настройки SQUID, описанной ниже, я обнаружил, что при попытке сменить пароль даже локального юзера фря пытается лезть в домен даже за локальным юзером. Соответственно обламывается и не меняет пароль, причём ещё грохает старый. Я вообще не предусматривал себе смену паролей доменных юзеров на фре, поэтому убрал подобные поползновения, закомментировав строчку с pam_winbind в файле /etc/pam.d/passwd. Вот так:
#password sufficient pam_winbind.so
password required pam_unix.so no_warn try_first_pass nullok
Если мы хотим работать под доменными аккаунтами на фре, то надо править конфиги модулей PAM.
Сначала сделайте бекап папки /etc/pam.d и залогиньтесь root-ом либо на консоли, либо по ssh (это надо для того, чтобы обезопасить себя от ошибок в конфигах PAM, т.к. как только конфиг сохранён, то следующий логон идёт в соответствии с новым конфигом).
В папке /etc/pam.d лежат конфиги отвечающие за разные типы авторизации. Правим /etc/pam.d/login
# auth
auth required pam_nologin.so no_warn
auth sufficient pam_winbind.so
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth required pam_unix.so no_warn try_first_pass
# account
account sufficient pam_winbind.so
account required pam_unix.so
# session
session required pam_permit.so
Сохраняем, открываем другую консоль (локально). Логин, пароль. Если залогонились, то значит всё нормально. Но вот если вы запустите pwd, то обнаружите себя не в /smb/samba/_ИМЯ_ПОЛЬЗОВАТЕЛЯ_ , а в корне. Что ж, нам нехватает двух вещей:
#lf / | grep .
.cshrc
.profile
Точнее двух файлов и каталога пользователя. Что ж, создаем каталог, кидаем туда эти два файла.
Теперь, по идее, надо править конфиги некоторых PAM модулей, в частности sshd. Но после долгих экспериментов и чтения статей на opennet.ru, у меня мало чего получилось. Вернее после многочисленных экспериментов с разными конфигами у меня пускало по ssh доменных админов со следующим конфигом:
# auth
auth sufficient pam_winbind.so try_first_pass
auth required pam_unix.so try_first_pass
# account
account sufficient pam_winbind.so
account required pam_unix.so
# session
# password
password sufficient pam_krb5.so no_warn try_first_pass
password required pam_unix.so no_warn try_first_pass
Но после перезагрузки фри, пускать доменных админов она перестала. Причём PAM просто не может получить пароль пользователя. С чем это связано, пока не знаю. Но мне это и не особо надо, т.к. локально работаю я под фрёвым юзером. Может ради спортивного интереса я как-нибудь разберусь с этим.
Далее настройка SQUID.
В каталоге SQUID делаем make install. Не знаю, надо это или нет (т.к. я не супер гуру во фре), но я ставил SQUID со следующими опциями:
--with-samba-sources=/usr/ports/net/samba3/work/samba-3.0.11
Иначе, как написано на opennet SQUID соберёт свои хелперы аутентификации.
Считаем, что сквид вы установили. Для нормальной работы хелпера (программы, которая аутентифицирует пользователей) ему необходим доступ к pipe winbindd, который по умолчанию располагается в /var/db/samba/winbindd_privileged. Собственно pipe имеет права 0777, но каталог, в котором он находится, имеет права 0750. Для решения этой проблемы достаточно изменить группу пользователей каталога winbindd_privileged на squid:
#chown root:squid /var/db/samba/winbindd_privileged
После установки правим конфиг. Хелпер ntlm_auth имеет параметр -require-membership-of="Group", пользуемся этим.
auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="EXAMPLE_DOMAIN+i_users"
auth_param ntlm children 5
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
auth_param basic program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of="EXAMPLE_DOMAIN+i_users"
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
Здесь EXAMPLE_DOMAIN+i_users - это имя вашего домена, «+» это сепаратор из конфига самбы, а i_users это группа, куда должен входить пользователь, чтобы его пустило в и-нет.
Далее я уже по юзерам распределяю доступ:
acl user proxy_auth user_name
http_access allow user
Сначала определяется имя сквидовского акля – “user”, ему ставится в соответствие “user_name” пользователь из виндовой группы i_users из домена EXAMPLE_DOMAIN. А дальше даётся http доступ сквидовскому аклю “user”.
Всё! Всё должно работать. Я думаю, что после этих примеров все поймут, что фря достаточно просто и элегантно конфигурится. И что она без проблем может заменить винду, чего я вам очень советую.
Дальнейшие мои усилия будут направлены на поднятие эмуляции АД домен контроллера и полного отказа от 2000-х виндовсов. |
|