12. 2. 2. Настройка Samba
12.2.2. Настройка Samba
В этом параграфе будет рассмотрена настройка пакета Samba «вручную», то есть без помощи конфигуратора. Вы же можете использовать конфигуратор (рис. 12.1), однако имейте в виду одно «но»; если вы будете настраивать Samba или любую другую службу сервера в другом дистрибутиве, знакомого вам конфигуратора в нем может не оказаться. Поэтому вы должны знать хотя бы назначение и расположение системных файлов той или иной службы сервера.
Рис. 12.1. Конфигуратор system-config-samba в дистрибутиве Fedora Core 3
Основным конфигурационным файлом сервера Samba является файл /etc/smb.conf. Именно в нем задаются все используемые и предоставляемые ресурсы. Формат данного файла напоминает формат INI-файла Windows.
Файл /etc/smb.conf состоит из нескольких секций, в начале каждой из которых в квадратных скобках указывается ее имя. Параметры в каждой секции указываются в виде записей Имя=Значение.
Основной является секция [global], ее пример приведен в листинге 12.2.
Листинг 12.2. Пример секции global
comment = Linux Server
guest account = guest
printcap name = /etc/printcap
load printers = yes
client code page = 866
character set = koi8-r
encrypt passwords = Yes
log file = /var/log/samba/log.%m
max log size = 50
socket options = TCP_NODELAY
wins support = yes
domain master = yes
interfaces = 192.168.1.1/24 192.168.2.1/24
Директива workgroup определяет рабочую группу или имя домена NT.
Директива comment аналогична параметру NT Description для ОС Windows NT или Description (Описание компьютера) для ОС Windows 9x.
Директива guest account задает имя пользователя. Значение guest означает доступ без регистрации, точнее, под гостевой учетной записью.
Директива security может принимать три значения:
? share — при каждом доступе будет запрашиваться имя пользовательского ресурса;
? user — для аутентификации будут использоваться имя пользователя и пароль, которые служат для входа в сеть Windows. Это значение используется по умолчанию;
? server — для проверки пароля будет использоваться сервер NT.
Директивы printing и printcap name относятся к подсистеме печати. Первая из них задает систему печати типа BSD, а вторая указывает, где расположен файл, содержащий информацию о принтерах. О настройке принтеров мы поговорим немного позже.
Директивы client code page и character set необходимы для корректного отображения русскоязычных имен файлов файловой системы Windows.
В ОС Windows NT, начиная с Service Pack 3, передача паролей по сети происходит в зашифрованном виде. Последние версии Samba поддерживают эту возможность. Чтобы воспользоваться ею, нужно установить значение директивы encrypt password равным yes. Если ваша версия Samba не поддерживает данную возможность, то вы можете отключить использование закодированных паролей в Windows. Правда, вам придется вручную править реестр на всех рабочих станциях Windows, так что проще, по-моему, обновить Samba. Но если вас все же интересует, какой именно параметр реестра Windows нужно изменить, я укажу его:
? В разделе реестра ОС Windows NT: [NT HKEY_LOCAL_MACHINESystemCurrentControlSetServicesRdrParameters] нужно создать ключ EnablePlainTextPassword типа DWORD и установить его значение, равное 1.
? В ОС Windows 9x вам нужно создать тот же ключ, но в разделе [HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDParameters].
? В ОС Windows 2000 нужно внести изменения в раздел реестра [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanWorkStationParameters].
Директивы log file и max log size определяют имя файла протокола (журнала) и его максимальный размер.
Параметры сокетов задаются с помощью директивы socket option. Прежде чем устанавливать эти параметры, рекомендую прочитать man smb.conf.
Если в вашем компьютере установлено несколько сетевых интерфейсов, то вы можете сконфигурировать пакет Samba так, чтобы он использовал все интерфейсы. Как это сделал я, показано в листинге 12.2.
Следующая секция называется [homes] и определяет параметры совместно используемых ресурсов. Пример содержимого этой секции приведен в листинге 12.3.
Листинг 12.3. Секция [homes]
Директива browseable=yes разрешает отображение совместно используемых ресурсов в сети Microsoft. Директива writable=yes разрешает запись в каталоги (тот же эффект будет иметь директива read only=no).
В секции [public] перечисляются расшариваемые каталоги (листинг 12.4).
Листинг 12.4. Секция [public]
comment = VFAT Partition
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРес
Аутентификация Samba в домене Windows
Сначала необходимо настроить службу DNS. Это весьма важно, поскольку от корректного разрешения имен в сети зависит надежная работа нашей сети и сервисов Samba. Наш контроллер домена одновременно является и сервером DNS. Поэтому выберем в разделе Administrative Tools программу управления DNS и вручную введем имя и адрес нового сервера. На рис. 1 уже представлен результат.
Рис. 1. Задание имени и адреса в DNS.
Наш сервер DNS интегрирован с Active Directory. Можно проверить корректность прямого и обратного разрешения имен с использованием утилиты nslookup или host. Уточним: это нужно сделать обязательно, даже несмотря на то, что необходимая запись уже появилась на сервере DNS. Нужно это сделать потому, что такая проверка — лишний тест работоспособности сети и корректности настроек. Проверка с помощью утилиты host выглядит так:
host 192.168.7.10 — определение имени по адресу, и
host test-centos.lab.local — определение адреса по имени.
В результате мы должны получить корректное разрешение имен в обоих случаях.
3.Настройка сетевого адаптера
Теперь этот IP-адрес (192.168.7.10) необходимо присвоить сетевому адаптеру вновь установленного сервера CentOS Linux. Воспользуемся пунктом меню System на рабочем столе и выберем пункт Network Connections (рис. 2).
Рис. 2. Настройка сетевого соединения.
В появившемся окне настроек зададим нужный IP-адрес. В результате мы должны получить следующее — см. рис. 3.
Рис. 3. Настройка сетевого соединения. Задание IP-адреса.
- Connect automatically, что позволяет автоматически подключать сетевой адаптер.
- Available to all users, что разрешает пользоваться этим адаптером всем пользователям.
Рис. 4. Настройка сетевого соединения. Файл настроек.
Ключевое слово NM_CONTROLLED разрешает или запрещает управлять соединением с использованием Network Manager.
При любом способе настроек, следует установить IP-адрес сервера DNS. Это наш контроллер домена с IP-адресом 192.168.7.2.
Для применения настроек сетевого адаптера следует выполнить команду перезапуска:
4.Настройка времени
Как уже говорилось в предыдущих статьях, корректная настройка времени очень важна для работы Active Directory. Настроить время можно с использованием штатных средств системы (см. рис. 5).
Рис. 5. Настройка времени.
Но для того, чтобы полностью избежать проблем с рассинхронизацией часов, следует настроить службу времени (демон ntpd) на синхронизацию времени с контроллером домена (см. рис. 6).
Рис. 6. Настройка службы времени.
Для этого нужно отредактировать файл /etc/ntp.conf , указав в качестве сервера времени контроллер домена. Не забудьте настроить запуск демона ntpd с помощью команды chkconfig ntpd on и перезапустить его командой /etc/init.d/ntpd restart .
5.Проверка настроек
Произведя указанные настройки, следует проверить их корректность. Нужно протестировать соединение с контроллером домена, настройку времени, правильность прямого и обратного разрешения имен (см. рис. 7).
Рис. 7. Проверка настроек.
6.Настройка авторизации в домене
Теперь настала пора настроить членство нашего сервера в домене Windows. В отличие от предыдущих примеров, не будем отдельно настраивать LDAP и Kerberos. Постараемся настроить все сразу, используя утилиту командной строки authconfig, поставляемую в составе дистрибутива CentOS.
Authconfig позволяет настроить сразу все требуемые службы. При этом настраивать можно не только авторизацию в домене Windows 2008, но и использование LDAP, NIS и других способов аутентификации.
Более подробную информацию об утилите authconfig можно получить из встроенного руководства (man authconfig, онлайн-версия), либо из встроенного руководства, набрав в командной строке authconfig -help. Достаточно будет сказать, что authconfig имеет около 50 опций настройки — представляете его возможности и, одновременно, сложности в настройке? Проще воспользоваться графическим интерфейсом к authconfig — утилитой system-config-authentication (рис. 8). Эту утилиту можно вызвать из интерфейса администрирования системы, а можно и командной строкой. Причем второй вариант представляется предпочтительным, поскольку вывод диагностических сообщений будет происходить в окно терминала, что упростит поиск неисправностей.
Рис. 8. Вызов system-config-authentication.
- локальная база данных паролей (файлы /etc/passwd и /etc/shadow);
- подключение к серверу LDAP;
- подключение к серверу NIS;
- использование Winbind — подключение к контроллеру домена Windows;
- использование IPAv2 — интегрированное решение, объединяющее LDAP, Kerberos, NTP, DNS и службу сертификатов.
Рис. 9. Выбор User Account Database.
- Domain — централизованная авторизация с использованием домена Windows 2000/2003;
- Server — используется в тех случаях, когда Samba не является членом домена, но использует централизованное хранение пользовательских аккаунтов и паролей на сервере;
- User — используется локальная база аккаунтов и паролей пользователей. При этом требуется не только пользовательский аккаунт, но и аккаунт рабочей станции.
Рис. 10. Вкладка Advanced Options system-config-authentication.
На этой вкладке нас интересуют два параметра: Create home directories on the first login и Enable local access control.
Enable local access control позволяет нам указать правила регистрации пользователей на нашем сервере. Можно разрешить или запретить определенным пользователям регистрироваться с использованием терминалов или удаленных рабочих столов. Это весьма удобно, если мы хотим, например, запретить пользователям подключаться через консольный терминал. Правила регистрации и их краткое описание содержатся в файле /etc/security/access.conf .
Параметр Create home directories on the first login позволяет снять с администратора обязанность создавать домашние каталоги для пользователей. При указании этого параметра домашний каталог создается автоматически при первом входе пользователя в систему. Но необходимо проверить корректность наличия этой опции. В CentOS Linux за это отвечает модуль pam_oddjob_mkhomedir.so, который должен быть упомянут в файле /etc/pam.d/system-auth в строке session required pam_oddjob_mkhomedir.so skel=/etc/skel/ umask=0022 . Кроме того, домашний каталог для регистрации доменных пользователей на сервере Samba по умолчанию задается как /home/%D/%U . Это указывается параметром template homedir в файле настроек Samba. Если использовать значение по умолчанию, то администратору необходимо создать каталог /home/, где является кратким именем домена. В нашем случае необходим каталог /home/LAB , в котором будут автоматически создаваться домашние директории пользователей.
Теперь вернемся на вкладку Identity & Authentication утилиты system-config-authentication и включим наш сервер в домен Windows 2008 R2.
Для этого нужно выбрать действие Join Domain и ввести имя администратора домена и пароль (рис. 11). По нажатию кнопки OK, мы должны включить наш сервер в домен LAB.
Рис. 11. Указание имени и пароля администратора при вводе в домен.
Как видим, наш сервер Samba успешно включен в домен (рис. 12). Сообщение об этом появилось в окне терминала. Собственно, для этого сообщения мы и запускали system-config-authentication через командную строку в окне терминала. Если запускать через вкладку System, то сообщение о включении или невключении сервера в домен придется искать в файлах системных журналов.
Рис. 12. Включение в домен LAB.
После включения в домен в окне Authentication Configuration нажимаем кнопку Apply, и в окне терминала появляются сообщения о перезапуске Winbind и oddjobd.
Проверим включение нашего сервера в домен на контроллере (см. рис. 13).
Рис. 13. Проверка наличия в домене.
Мы видим, что наш сервер включен в домен под именем test-centos.
Теперь проверим возможность регистрации доменных пользователей на нашем сервере. Укажем доменного пользователя в ответ на приглашение о вводе имени на консоли сервера (рис. 14).
Рис. 14. Ввод имени доменного пользователя.
Как видно, имя пользователя указывается вместе с именем домена. По умолчанию разделителем является обратная косая «». Это значение можно изменить параметром winbind separator в файле настроек Samba. Выбрав кнопку Log In, получим приглашение ввести пароль. После ввода пароля получаем рабочий стол пользователя usertest (рис. 15).
Рис. 15. Рабочий стол доменного пользователя в CentOS Linux.
Таким образом, мы успешно решили задачу включения сервера CentOS Linux в домен Windows 2008 R2 и даже разрешили доменным пользователям обращаться к рабочему столу и командной строке Linux. Это дает пользователям домена дополнительные возможности использования различных операционных систем в сети предприятия.
Настройка прав доступа
Настройка прав доступа к файловой системе
Для настройки прав доступа к файлам на сервере используйте ( — список контроля доступа). Изменяя права на файлы, вы ограничиваете к ним доступ в равной степени как для Windows-, так и для Linux-клиентов. При отсутствии прав доступа к файлам и директориям они не будут отображаться в Samba-ресурсе.
Права доступа применяются как к файлам, так и к директориям. Вы можете указать права доступа на владельца файла, либо на группу. Если Windows-клиент будет распознавать только Samba-группы, то в Linux будут отображаться имена Unix- и Samba-групп. Поэтому, для разграничения прав доступа, предпочтительней использовать Samba-группы.
Для примера создадим Samba-группу manager :
Для создания Unix-группы job , достаточно выполнить:
Настройка прав доступа для пользователей Windows-компьютеров
Для настройки дополнительных прав Windows машин, таких как: возможность устанавливать программы, возможность выхода из домена и т.д., используйте Samba группы.
Пример повышения прав пользователя test до администратора домена:
Настройка файлов smb.conf для разных экземпляров samba
Перед настройкой SAMBA на разных интерфейсах я обычно переименовываю оригинальный smb.conf и создаю отдельные конфиги с нуля:
Основополагающим для данной темы в данных конфигурационных файлах являются параметры interfaces и bind interfaces only, ограничивающие работу экземпляра samba на заданных интерфейсах. А так же параметры, разделяющие размещение приватных файлов для данного экземпляра SAMBA (log file, lock directory, state directory,cache directory, pid directory и private dir).
Примечание. В Debian в SAMBA, поставляемой с дистрибутивом по какой-то причине, smbd не слушается параметр private dir, в результате чего файлы passdb.tdb и secrets.tdb используются для всех запускаемых экземпляров и хранят в себе SID’ы и некоторые другие настройки для всех запущенных smbd. Почему так происходит — я ответа не нашел.
Как настроить Samba для обмена файлами между компьютерами Ubuntu и Windows
Сегодня поговорим о том, как настроить Samba. Итак, Samba — бесплатное популярное opensource программное обеспечение для обмена файлами и службами между Unix-подобными системами, включая Linux и узлами Windows в той же сети.
В этой статье мы покажем, как настроить Samba для базового совместного использования файлов между системами Ubuntu и машинами Windows. Мы рассмотрим два возможных сценария: анонимный (небезопасный), а также безопасный обмен файлами. Обратите внимание, что начиная с версии 4.0 Samba может использоваться как контроллер домена Active Directory (AD).
Установка и настройка Samba в Ubuntu
Сервер Samba доступен для установки из репозиториев Ubuntu, используйте инструмент apt package manager, как показан ниже.
Как только сервер samba установлен, настало время настроить его для незащищенного анонимного и безопасного общего доступа к файлам.
Для этого нам нужно отредактировать основной файл конфигурации Samba — /etc/samba/smb.conf.
Сначала создайте резервную копию исходного файла конфигурации samba следующим образом.
Теперь мы перейдем к непосредственной настройке samba для анонимных и безопасных служб обмена файлами, как описано ниже.
Важно: Прежде чем двигаться дальше, убедитесь, что компьютер с ОС Windows находится в той же рабочей группе, которая будет настроена на сервере Ubuntu.
Проверьте настройки рабочей группы Windows
Войдите в свой Windows, щелкните правой кнопкой мыши на «Мой компьютер» → «Свойства» → «Дополнительные системные настройки» → «Имя компьютера», чтобы проверить рабочую группу.
Кроме того, откройте командную строку и выполнив приведенную ниже команду найдите «домен рабочей станции».
Как только вы узнаете свою рабочую группу Windows, перейдем к дальнейшей настройке сервера samba для совместного использования файлов.
Анонимный доступ к файлам Samba
Сначала создайте общий каталог samba, в котором будут храниться файлы.
Затем установите соответствующие разрешения для каталога.
Откройте файл конфигурации.
Затем отредактируйте или измените настройки [global], как описано ниже.
Далее добавьте в конец файла такие параметры:
Теперь проверьте текущие настройки samba, выполнив приведенную ниже команду.
Затем перезапустите службы Samba, чтобы применить указанные выше изменения.
Тестирование анонимного обмена файлами Samba
Перейдите на компьютер Windows и откройте «Сеть» из окна проводника Windows. Нажмите на узел Ubuntu или попробуйте получить доступ к серверу samba с использованием его IP-адреса.
Примечание. Используйте команду ifconfig для получения вашего IP-адреса сервера Ubuntu.
Затем откройте анонимный каталог и попробуйте добавить туда файлы, чтобы поделиться ими с другими пользователями.
Безопасный обмен файлами Samba
Чтобы защитить samba паролем, вам необходимо создать группу «sedicomm» и установить пароль для каждого пользователя. В этом примере мы используем yurii как имя пользователя.
Примечание. Режим безопасности samba: security = user требует, чтобы пользователи вводили своё имя пользователя и пароль для подключения к общим ресурсам.
Учетные записи пользователя Samba отделены от системных учетных записей, однако вы можете установить пакет libpam-winbind, который используется для синхронизации пользователей системы с пользовательской базой samba.
Затем создайте безопасный каталог, в котором будут храниться общие файлы.
Затем установите соответствующие разрешения для каталога.
Откройте файл конфигурации.
Затем добавьте в конец файла такие параметры. Обязательно замените «sedicomm» на имя вашей группы
Как и раньше, запустите эту команду, чтобы просмотреть текущие настройки samba.
После того, как вы закончите с вышеуказанными конфигурациями, перезапустите службы Samba, чтобы применить изменения.
Тестирование безопасного обмена файлами Samba
Откройте в проводнике машине Windows «Сеть». Нажмите на узел Ubuntu. Вы можете получить ошибку, если не выполнить следующий шаг.
Попробуйте получить доступ к серверу, используя его IP-адрес (\192.168.0.100). Затем введите учетные данные (имя пользователя и пароль) для пользователя yurii и нажмите «ОК».
Теперь вы видите «Анонимные» и «Защищенные» каталоги.
Вы можете безопасно обмениваться файлами с другими разрешенными пользователями сети в этом каталоге.
Включаем Samba в брандмауэре UFW в Ubuntu
Если в вашей системе включен брандмауэр UFW, вы должны добавить правила, позволяющие Samba не конфликтовать с брандмауэром.
Чтобы проверить их, мы использовали сеть 192.168.43.0. Запустите приведенные ниже команды, указав сетевой адрес.
На этом все! В этой статье мы показали вам, как настроить Samba для анонимного и безопасного обмена файлами между компьютерами Ubuntu и Windows.
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Если вы смогли настроить Samba, то подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.
Шары с паролем
Общая идея такова: если нам надо создать пользователя user1 для шары Samba, нам надо сначала создать пользователя с таким логином в системе Linux, а потом создать такого же пользователя в Samba. По моему разумению, системный пользователь, создаваемый для Samba, не должен иметь возможность входа в систему, а также иметь домашнюю директорию. Собственно, зачем ему это?
# useradd -c 'Samba member' -G smbgrp -M -s /sbin/nologin user1
Вообще говоря, пока вы не создадите пароль для этого пользователя, зайти им в систему нельзя, но представьте себе, когда через год или три вы забудете, ставили вы пароль или нет, и при просмотре /etc/passwd конкретно так вздрогнете, если оставить шелл по-умолчанию 😉 Так что в любом случае проверьте файл /etc/passwd после выполнения команды. Хотя бы один разок.
А это уже внутренний пользователь Samba:
# smbpasswd -a user1
Создаем пользовательскую папку. Для директории user1 права можно ставить уже не 775, а 755:
# nano /etc/samba/smb.conf
.
[User1 Share]
comment = User1's files
path = /samba/user1
;valid users = @smbgrp
valid users = user1
guest ok = no
writable = yes
browsable = yes
create mask = 0640
directory mask = 0750
параметр create mask = 0640 указывает, что создаваемые в этой шаре файлы будут для владельца с правами на запись, для группы — на чтение, всем остальным — фиг;
параметр directory mask = 0750 указывает аналогично, только для директорий.
В принципе, в личной шаре никто не мешает вам использовать маски 0600 и 0700 соотв. Хотите, поиграйтесь 🙂 Но никогда без явно обозначенной цели не делайте маски 0777 ни для чего, даже если после этого все работает.
# systemctl restart smb.service && systemctl restart nmb.service
Проверяйте работу, все должно быть ок. В сетевом окружении должны быть две сетевые папки: share и user1.
Создайте еще пользователя, проверьте, как работают права доступа к пабликам и персональным директориям. Если что-то идет не так, проверяйте права доступа на директории и встроенные механизмы защиты, в данном случае SELinux.
Записки программиста
Samba — это открытый пакет программ для nix-систем, в которых реализованы некоторые фичи, предоставляемые Windows Server. Samba может выступать в качестве контроллера домена, сервиса Active Directory, может шарить принтеры и директории по сети. В рамках этой заметки мы рассмотрим использование Samba в качестве файлового сервера. Мотивация для использования именно Samba, а не, скажем, FTP, может быть разная. Как минимум, с ее помощью и вправду очень удобно перекидывать файлы между Windows- и Linux-машинами. Просто монтируешь каталог и вперед.
Ниже будет рассмотрена установка Samba под CentOS. Установка под другие дистрибутивы Linux практически ничем не отличается. Далее по тексту предполагается, что Samba поднимается на машине с адресом 10.24.5.42.
Шарим каталог всем
Проверяем, что в /etc/samba/smb.conf в секции [global] не закомментирована строчка:
Также можно поменять название workgroup. У меня было написано так:
В конце файла дописываем:
Далее выполняем команды:
sudo mkdir -p / srv / samba / share
sudo chown nobody:nobody / srv / samba / share /
sudo service smb start
sudo service nmb start
# запуск сервисов при старте системы
sudo chkconfig nmb on
sudo chkconfig smb on
Теперь, скажем, в дэфолтном файловом менеджере Unity можно прицепиться к smb://10.24.5.42/share , создать там каталогов и залить в них файлов. А также проверить, что эти изменения происходят не только локально, но и на сервере.
Логи Samba лежат в /var/log/samba/. Используемые Samba порты — 139 и 445. Их можно пробрасывать через SSH или с помощью Ncat. Это работает, я проверял.
Доступ по логину и паролю
Давать доступ к каталогу всем подряд небезопасно. Давайте исправим эту ситуацию:
В /etc/samba/smb.conf дописываем:
Монтируем каталог в Linux и Windows:
Ура, файлы успешно шарятся между Windows и Linux!
Монтирование через CLI
Если GUI недоступен, примонтировать каталог можно так:
Если каталог стал больше не нужен, говорим:
Заметьте, что если система крутится в контейнере вроде Docker или OpenVZ, это может не работать, так как вы не сможете подгрузить нужные модули ядра.