On-line журнал o Linux
SAMBA авторизация пользователей и раздельный доступ к ресурсам
Для начала устанавливаем:
$ aptitude install samba smbfs
Samba использует пользователей которые уже есть в системе, (возможно есть и другие пути, об этом в следующей заметке) создаем наших пользователей:
$ useradd -c «Тest» -s /sbin/nologin ole
$ useradd -c «Тest1» -s /sbin/nologin ole1
$ useradd -c «Тest2» -s /sbin/nologin ole2
к команде существуют следующие параметры, мож кому надо:
-g «Названия группы» — группа, к которой он должен принадлежать
-d /home/»каталог» — домашний каталог пользователя
-s /sbin/nologin — устанавливаем ему оболочку /sbin/nologin
-c «Описания» — качестве его полного имени Mr Test,
имя- ole
Посмотрим что у нас получилось:
$ cat /etc/passwd | grep ole
ole:x:5002:5002:Test:/home/ole:/sbin/nologin
ole1:x:5003:5003:Test1:/home/ole1:/sbin/nologin
ole2:x:5004:5004:Test3:/home/ole2:/sbin/nologin
Теперь у нас есть пользователи в системе, надо внести его в базу данных SMB и назначить пароль для доступа к расшаренным ресурсам:
$ smbpasswd -a ole
$ smbpasswd -a ole1
$ smbpasswd -a ole2
Далее правим файл конфигурации Samba (/etc/samba/smb.conf), секция [Global] содержит общие настройки сервера:
$ cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
$ nano /etc/samba/smb.conf
# Название вашей рабочей группы или домена. Именно оно будет высвечивается в «Сетевом окружении».
workgroup = WORKGROUP
# server string is the equivalent of the NT Description field
# Комментарий, появляющийся рядом с именем машины в «Сетевом окружении» Windows.
server string = %h server (Samba, Ubuntu)
# Ограничивает обслуживаемые сервером сетевые интерфейсы (eth0) / и по адресам
interfaces = 127.0.0.0/8 eth0
# Параметры логирования — log.
log file = /var/log/samba/log.%m
# Размер лог-файла в Кб
max log size = 1000
# еще можно добавить строку «debug level = 3″, она используется при
# отладке сервера, выводя в журнал более детальную информацию или уровень 5.
#debug level = 3
# для более детальной информацией можно поиграться с уровнями (1,2,3, и тд)
log leval=1
####### Authentication #######
# share — при каждом доступе будет запрашиваться имя пользовательского ресурса.
# user — для аутентификации будет использоваться имя пользователя и пароль,
# которые используются для входа в сеть виндовс (Windows). Это значение по умолчанию.
# server — для проверки пароля будет использоваться сервер NT (AD)
security = user
# Поддержка шифрованных паролей
encrypt passwords = true
# запрещает становиться мастером домена
domain master = no
# отключает WINS
wins support = no
# Опции сокета. Если не знаете, что это такое, лучше оставить как есть или почитать ман.
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
# вкл/откл гостевую запись
guest ok = no
# запрешает root
invalid users = root
# Эти опции избавляют от глюков со шрифтами/кодировками. (так же можно 866 (Dos))
unix charset = utf8
dos charset = cp1251
display charset = cp1251
Пример:
Cоздаем папку для чтения/записи (rw) определенным пользывателем, например для юзвера ole2
$ sudo mkdir /home/DATA_rw
$ sudo chmod 777 /home/DATA_rw
В конфиге smb.conf
[DATA_rw]
path = /home/DATA_rw
create mask = 0664
directory mask = 0777
valid users = «ole»,»ole1″,»ole2″
write list = «ole2″,
где
— valid users = «» — юзеры которым разрешен доступ к ресурсу (в данном примере дали всем юзверям)
— write list = «» — юзверы, которые могут писать в данную папку (в данном примере — только ole2)
Внимания параметр write, подразумевает под собой еще и read (чтения), т.е для чтения папка будет открыта для всеx указанных в параметре valid users
Быстрая и простая настройка samba
Иногда нужно очень быстро на сервере настроить файловую шару и открыть на нее доступ. При этом нет необходимости городить какие-то сложные конфигурации, права доступа или что-то еще. Нужен просто оперативный доступ к информации без лишних вопросов.
Мне, к примеру, недавно подобное понадобилось, чтобы открыть доступ к резервным копиям, которые хранились на сервере. Самому разбираться и искать информацию не хотелось, нужно было быстро дать человеку доступ на чтение, чтобы он сам нашел все, что ему нужно.
Я не буду специально оперировать версиями операционных систем. У самбы конфиги одинаковые почти везде, где мне приходилось с ними работать, тем более в самых простых конфигурациях.
Итак, устанавливаем самбу любым подходящим способом для вашей операционной системы. Конфигурации справедливы для 3-й версии самбы. Дальше решаем, что нам нужно:
- доступ по пользователю и паролю,
- доступ по ip адресу,
- доступ всем подряд без ограничений.
В зависимости от этого настройки будут немного разные.
Для доступа по паролю рисуем такой конфиг:
Перезапускаем самбу. Дальше добавляем пользователя в систему примерно так:
Импортируем этого пользователя в самбу и задаем пароль:
И пробуем зайти на шару по адресу:
Чтоб организовать доступ в зависимости от ip адреса, делаем такие настройки в smb.conf:
В данном случае полный доступ будет у адреса 192.168.0.171. Чтобы добавить всю подсеть, то указать нужно следующее:
Комбинировать можно разные подсети и адреса, разделяя их пробелами. Для того, чтобы отключить доступ каким-то отдельным адресам из разрешенной подсети, можно сделать вот так:
Доступ будет разрешен всей подсети 192.168.0.0/24, кроме адреса 192.168.0.15.
Делаем перезапуск самбы и проверяем.
Если у вас установлена samba 4, то эта конфигурация не заработает и вы получите ошибку:
Чтобы доступ по ip нормально заработал, вам необходимо внести следующие изменения в приведенный выше конфиг:
Остальные параметры оставляете те же. После этого доступ по ip будет работать и на 4-й версии самбы.
Если доступ будет предоставлен всем без ограничений, то простейшая конфигурация самбы будет такой:
Не забываем сделать права для всех на папку:
Перезапускаем самбу и пробуем зайти. Должно пустить без лишних вопросов.
Вот так буквально за 5 минут можно организовать простейший файловый сервер с помощью samba. А часто сложнее и не надо. Для какой-нибудь файловой помойки подойдет самый последний вариант.
Для более сложных конфигураций у меня есть отдельные статьи:
Настройка Samba
Настройка программного продукта Samba производится обычно в конфигурационном файле smb.conf, который находится в каталоге /etc/ . Ниже кратком виде опишем синтаксис написания правил в файле smb.conf.
Workgroup – этот параметр применяется для задании рабочей группы.
Netbios name – этот параметр устанавливает NetBIOS – имя Samba сервера.
Netbios aliases – параметр предназначен для создания дополнительных Netbios имен для группы.
Interfaces – с помошью этого параметра можно задавать несколько сетевых интерфейсов.
Security – этот параметр применяется для задания безопасности Samba сервера.
Параметр Security имеет четыре доступных значения:
security = user (безопасность на уровнне пользователей)
security = share (безопасность на уровне ресурсов)
security = server (безопасность на уровне сервера)
security = domain (безопасность на уровне домена)
encrypt password – если изменить значение этого параметра на YES то тогда сервер Samba будет использовать шифрованные пароли пользователей.
Minimum password length – этот параметр определяет минимальную разрешенную длину пароля пользователя
map to guest – этот параметр применяется для задания режима аудентификации пользователей. Этот парамерт имеет три важных значения:
never – если включен это значение параметра map to guest то тогда пользователь указавший неверный пароль, будет завершен.
Bad user – если включен это значение параметра map to guest то тогда при проверке имя пользователя окажется верным а пароль не верным то серевер samba будет считать пользователя гостем и пользователь получит права гостя.
Bad password – если вкдючен это значение то тогда все пользователи указавшие неверный пароль, считаются гостями.
Null password – этот параметр рашрешает или запрещает пользователям не имеющие пароль к учетной записи. Параметр null password имеет две значение:
no – запрещает
yes – разрешает
smb password file – этот параметр задает путь к файлу, содержащемуся шифрованные пароли пользователей.
Root directory – этот параметр применяется для задания корневого каталога для хранения файлов пользователей.
Unix password sync – если значение этого параметра установить yes то тогда сервер Samba синхронизирует SMB пароли с Unix пароями.
Invalid users – этот параметр применяется для запрета определенных пользователей доступ к сестеме. В значении параметра также можно использовать имена групп.
Valid users — этот параметр разрешает доступ определенным пользователям. В значении параметра также можно использовать имена групп.
Admin users – с помошью этого параметра можно задать список пользователей с правами root.
Read list – параметр задает список пользователей с првами только для чтения.
Write llist – с помошью этого параметра предоставляется права чтение и запись определенным пользователям.
# comment — комментарий к ресурсу
# path — путь к каталогу, который необходимо «расшарить»
# browseable — будет ли каталог виден в «сетевом окружении», или будет скрытым
# writable — возможно ли записывать данные в этот сетевой ресурс
# valid users — список пользователей, которым разрешен доступ к данной шаре
# hosts allow — перечень IP, которым разрешен доступ к данной шаре
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
Настройка Samba
Пожалуй нет ни одного офиса, в котором не применялись бы общие ресурсы локальной сети, будь то папки или принтеры. Крупные и средние компании используют возможности Active Directory, компании поменьше — используют штатные средства ОС Windows или Samba, но на серверах под управлением ОС Linux. Рассмотрим все случаи.
Что такое Samba?
Samba — серверное приложение, реализующее доступ клиентских терминалов к папкам, принтерам и дискам про протоколу SMB/CIFS.
Настройка общих папок
Linux
Установка и настройка Samba-сервер для Ubuntu выполняется следующими этапами.
Обновляем информацию о репозиториях и устанавливаем обновления для существующих пакетов в системе:
apt-get update && apt-get upgrade
Устанавливаем пакет Samba:
apt-get install -y samba samba-client
Создадим резервную копию файла конфигурации:
cp /etc/samba/smb.conf /etc/samba/smb.conf_sample
Создадим директории для файлов, например в каталоге /media:
Важно! По умолчанию, директория /media располагается в корне системы /, для нее редко создается свой раздел. По этой причине возможно переполнение корневого раздела. Во избежание этой неприятной ситуации, рекомендуем монтировать отдельный жесткий диск в /media/samba.
Создаем каталог для всех пользователей:
Изменим права доступа к каталогу:
chmod -R 0755 /media/samba/public
Также следует воспользоваться командой chown для смены владельца и/или группы.
Создаем директорию для ограниченного круга лиц:
С помощью системных инструментов создадим группу пользователей:
Добавляем пользователей Samba:
Созданных пользователей добавляем в группу:
usermod -aG smbgrp user1
Изменим группу, которой принадлежит приватная директория:
chgrp smbgrp /media/samba/private
С помощью инструментов Samba создадим пароль для добавленного пользователя:
smbpasswd -a user1
С помощью текстового редактора, например, nano, редактируем конфигурационный файл samba:
Удаляем все строки из файла. Вставляем следующие:
map to guest = bad user
wins support = no
force user = nobody
valid users = @smbgrp
Сохраняем используя сочетание Ctrl + X, затем нажимаем Y и Enter.
Объясним значения строк. конфигурационный файл состоит из трех секций:
global — данная секция отвечает за общие настройки Samba-сервера;
public и private — секции описания настроек директорий общего доступа.
В секции global присутствуют пять параметров:
- workgroup — рабочая группа. Для упрощения работы пользователей WORKGROUP указывается, как группа по умолчанию. Если в вашей сети имя рабочей группы изменено, то следует изменить это значение и для Samba;
- security — уровень безопасности сервера. Значение user означает авторизацию по паре логин/пароль;
- map to guest — параметр определяет способ обработки запросов. Значение bad user означает, что запросы с неправильным паролем будут отклонены, даже если такое имя пользователя существует;
- wins support — включить или выключить поддержку WINS;
- dns proxy — возможность проксирования запросов к DNS.
Настройки директорий выполняются в соответствующих секциях:
path — полный путь до директории на жестком диске;
guest ok — возможность доступа к каталогу без пароля (гостевой);
browsable — показывать ли каталог (“шару”) на сервере среди прочих. Если параметр установлен как “no”, то доступ будет возможен по полному пути, например ip-addresshidden_directory;
force user — пользователь от которого ведется работа с каталогом. Для повышения безопасности сервера, обычно используют nobody. Главное, не использовать пользователя root — это небезопасно.
writable — установка значения как “yes” позволяет пользователю выполнять действия над файлами внутри каталога — переименование, добавление, удаление, перемещение в подкаталог и копирование;
valid users — список пользователей у которых есть доступ к каталогу. Если пользователей несколько, их имена указываются через запятую. Если необходим доступ для пользователей принадлежащих группе, перед именем группы устанавливается символ ”at” @ (“собака”).
Важно! Имя директории общего доступа, отображаемое пользователям, равно имени секции в которой оно описано.