Установка Samba
Samba 3.0, в отличие от более ранних версий Samba, имеет возможность работать в сетях Wndows, работающих в режиме Active Directory (или Windows 2000 native mode). Если требуется эта функциональность, следует установить пакет samba3-3.0 вместо samba-2.2.
Active Directory имеет другую схему именования доменов, компьютеров и пользователей, основанную на DNS. Допустим, существует сеть с именем my.firm.com и компьютерами host1.my.firm.com,host2.my.firm.com, host3.my.firm.com; тогда домен Active Directory будет называться my.firm.com, а пользователи Active Directory будут иметь имена вида user@my.firm.com.
/etc/krb5.conf должен содержать по крайней мере следующие строки:
[realms]
MY.FIRM.COM = {
kdc = your.kerberos.server
}
где MY.FIRM.COM - имя домена (или “царства”, в терминологии Kerberos; задается обязательно в верхнем регистре), а your.kerberos.server — имя или IP-адрес KDC (Kerberos Domain Controller), аналог PDC (Primary Domain Controller) в доменах Windows NT — например, server.my.firm.com или 192.168.117.11.
Правильность указания параметров можно проверить, выполнив команду (замените имя пользователя на актуальное — например, administrator@MY.FIRM.COM):
# kinit username@REALM
и убедившись, что пароль был принят сервером. REALM всегда задается в верхнем регистре.
Вы также должны убедиться, что возможно получить имя KDC по его IP адресу (так называемый Reverse DNS lookup). Имя KDC должно либо совпадать с NetBIOS-именем компьютера (имя машины в сети Windows без указания домена) либо состоять из NetBIOS-имени и имени домена. Если получить имя KDC по адресу невозможно, вы получите ошибку “local error” при попытке войти в домен.
Если ваш DNS не поддерживает Reverse lookup либо KDC не зарегистрирован в DNS, вы можете указать соответствие IP-адреса и имени в /etc/hosts.
Для работы в Active Directory smb.conf должен содержать следующие параметры:
[global] # Задает Kerberos realm, обычно совпадает с именем домена в # верхнем регистре, например realm = MY.FIRM.COM realm = <REALM> # Это обычно часть реалма до первой точки, например # workgroup = MY workgroup = <WORKGROUP> # Тип домена - Active Directory. security = ADS # В случае Active Directory пароли всегда шифруются. encrypt passwords = true # Обычно этот параметр указывать не обязательно, т.к. Samba сама # определяет адрес KDC, если в сети есть WINS-сервер и он указан # в smb.conf ads server = <your.kerberos.server>
Убедитесь что Samba не запущена. Если запущена, ее нужно остановить:
# service smb stop; service winbind stop
Чтобы включить компьютер в домен, выполните команду:
# net ads join -U administrator
где administrator — имя пользователя домена, имеющего право создавать новые учетные записи.
Если не было выдано сообщение об ошибке, то машина успешно зарегистрирована в домене — иначе проверьте правильность задания параметров в /etc/samba/smb.conf и /etc/krb5.conf. Убедитесь, что пользователь, указанный после -U в net ads join, имеет необходимые права на создание новых учетных записей.
Теперь можно запустить необходимые службы:
# service smb start; service winbind start
Для работы с компьютерами, зарегистрированными в Active Directory, не требуется указывать имя пользователя и пароль. Попробуйте выполнить команду:
$ smbclient -k -L <имя компьютера в домене>
Вы должны получить список доступных ресурсов, при этом smbclient не должен запрашивать имя пользователя и пароль.
Чтобы проверить, что доступ к ресурсам вашей машины возможен с других машин домена, вы можете попробовать выполнить все ту же команду:
$ smbclient -k -L <имя вашего компьютера в домене>
и получить список доступных ресурсов. Можно также попробовать открыть какой-нибудь ресурс на вышей машине с Windows-машины, входящей в домен. В любом случае имя пользователя и пароль запрашиваться не должны.
В отличие от доменов Windows NT, авторизация в Active Directory производится не по имени и паролю, а c помощью билетов протокола Kerberos. Из-за этого работа с smbclient может поначалу показаться необычной.
Во-первых, при вызове smbclient нужно указывать опцию -k. Во-вторых, билеты Kerberos даются на определенное время (обычно на сутки, но это зависит от настроек сервера). Поэтому их нужно периодически обновлять с помощью команды kinit:
# kinit username@REALM
где username — ваше имя в Actiev Directory домене REALM.
Так что если smbclient вдруг перестает подключаться к доменным ресурсам, попробуйте обновить билет — скорее всего, дело именно в этом.
При создании директорий в папке share они должны иметь права 770, файлы в них 660 и быть также доступны для user.
Используем acl.
Делаем chmod g+s share ... чтобы создаваемые файлы и папки имели группу project
Делаем setfacl -m u:user:rx для все директорий до share ... для того, чтобы user мог дойти до этой директории
Делаем setfacl -m u:user:rwx для директории share и всех ее поддиректорий... для того, чтобы пользователь мог что-то создавать в этой директории
Делаем setfacl -m u:user:rw для всех подфайлов директории share
В samba пишем
directory mask = 770
create mask = 660
inherit acls = yes
inherit permissions = yes # без этого предыдущая строка не работает!!!
map acl inherit = yes
map archive = no
map system = no
map hidden = no
После пробуем создать папку и файл в директории share через samba из под user.
Получаем
Папку с правами 770 и владельцем user:project (все как и надо)
и Файл с правами 670 и владельцем user:project
