Привет всем читателям и подписчикам. Работая в государственном учреждении где легальности используемого программного обеспечения уделяют достаточно много внимания образовалась у меня довольно интересная задача. На смену старенькому серверу пришел новенький с лицензионной Windows Server 2012R2 Standart, но и как многое в нашем государстве происходит через известное место, то клиентских лицензий никто нам не дал и по факту с сервером могу работать только я, как администратор…

Ubuntu настройка сервера samba

Ubuntu настройка сервера samba

В совокупности эти причины вынудили посмотреть меня в сторону свободного программного обеспечения (опыт получился положительным). В качестве системы я остановился на дистрибутиве Ubuntu Server x64 12.04LTS, но для экспериментов можете установить Desktop редакцию, отличаются они только тем что на Server нет графического интерфейса, а в Desktop он присутствует (что новичкам конечно же будет полезно) и не отпугнет. Почему именно 12.04LTS когда есть более свежие выпуски? — довольно частый вопрос ко мне. Дело в том что для LTS (Long Time Support — долгосрочная поддержка) будет поддерживаться до апреля 2017 года, что актуально для сервера (настроил и забыл, только ставь обновления вовремя).

Таблица поддержки Ubuntu

Что требовалось от сервера: файлы пользователей, файловая база 1С и еще одна файловая база специализированного приложения — ничего необычного. Главное условие: обязательная авторизация по имени пользователя и паролю. В сети огромное количество по настройке, однако не все они подробны и порой для новичков не подходят, так как для Windows машин я столкнулся с некоторыми подводными камнями. Какими именно — читаем…

 Ubuntu настройка сервера samba

Для работы Ubuntu в роли файлового сервера для Windows машин используется SAMBA. Все действия мы будем выполнять через терминал, поэтому данная инструкция применима как к server так и desktop версиям Убунты.

Ubuntu настройка сервера samba

Ubuntu настройка сервера samba

Как я и писал, для работы нам нужно установить Samba, для этого вводим в терминал команду:

Sudo apt-get install samba

Вводим пароль root пользователя и соглашаемся на установку. В отличие от Windows систем общий доступ тут предоставляется немного иначе. Существует два вида пользователей: пользователи системы и пользователи samba, т.е. недостаточно завести просто новую учетную запись и назначить права — нужно будет ее добавить в базу данных samba. В Ubuntu настройка сервера samba лежит в файлике samba.conf (его настроенный пример я опубликую ближе к концу статьи и подробно распишу основные пункты)

Для начала нам нужно создать нового пользователя и ответить на вопросы, вводим в терминал:

sudo adduser ИМЯ_ПОЛЬЗОВАТЕЛЯ

Следующим шагом будет добавление его в базу данных samba, для этого назначим ему там пароль, вводим команду

sudo smbpasswd -a ИМЯ_ПОЛЬЗОВАТЕЛЯ

Как только у нас будет созданы пользователи — можно приступать к настройкам файла samba.conf, чтобы открыть его для редактирования нужно выполнить команду

sudo nano /etc/samba/smb.conf

В этом файле есть несколько разделов которые выделяются например [global] и идет его описание. Описывать подробно этот раздел нет смысла — такой информации полно в интернете, давайте рассмотрим мой пример samba.conf с расшаренными папками

[ads]

#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which 
# are not shown in this example
#
# Some options that are often worth tuning have been included as
# commented-out examples in this file.
#  - When such options are commented with ";", the proposed setting
#    differs from the default Samba behaviour
#  - When commented with "#", the proposed setting is the default
#    behaviour of Samba but the option is considered important
#    enough to be mentioned here
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic 
# errors. 
# A well-established practice is to name the original file
# "smb.conf.master" and create the "real" config file with
# testparm -s smb.conf.master >smb.conf
# This minimizes the size of the really used smb.conf file
# which, according to the Samba Team, impacts performance
# However, use this with caution if your smb.conf file contains nested
# "include" statements. See Debian bug #483187 for a case
# where using a master file is not a good idea.
#

#======================= Global Settings =======================

    [global]

    # Название вашей рабочей группы или домена. Именно оно будет высвечивается в «Сетевом окружении».
    workgroup = UTIZN
    # 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

[base1c]

path = /home/share/base1c/
create mode = 0777
directory mask = 0777
available = yes
browsable = yes
public = yes
writable = yes

[pochta]

vfs objects =  recycle
recycle:keeptree = Yes
recycle:touch = Yes
recycle:touch_mtime = Yes
recycle:versions = Yes
recycle:maxsize = 105057800
recycle:exclude = *.iso, *.tmp, *.temp, ?~$*, ~$*, *.TMP, ~*
recycle:repository = /home/recycle/%U

hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/~*/

path = /home/share/pochta/
create mask = 0777
directory mask = 0777
valid users = "ПОЛЬЗОВАТЕЛЬ1","ПОЛЬЗОВАТЕЛЬ2",
write list = "ПОЛЬЗОВАТЕЛЬ2",

Что нужно сделать Вам? С 1 по 73 строчку описываются основные параметры, единственное что нужно сделать — это поменять значение UTIZN в 36 строчки на имя своей рабочей группы. Рассмотрим кусок кода:

[base1c]

path = /home/share/base1c/
create mode = 0777
directory mask = 0777
available = yes
browsable = yes
public = yes
writable = yes

[base1c] — Так будет отображаться имя папки в проводнике
path = /home/share/base1c/ — путь к папке для общего доступа
Остальные строки описывают что читать/писать в эту папку могут все авторизованные пользователи

Теперь рассмотрим вариант с разграниченными правами и корзиной:

[pochta]

vfs objects =  recycle
recycle:keeptree = Yes
recycle:touch = Yes
recycle:touch_mtime = Yes
recycle:versions = Yes
recycle:maxsize = 105057800
recycle:exclude = *.iso, *.tmp, *.temp, ?~$*, ~$*, *.TMP, ~*
recycle:repository = /home/recycle/%U

hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/~*/

path = /home/share/pochta/
create mask = 0777
directory mask = 0777
valid users = "ПОЛЬЗОВАТЕЛЬ1","ПОЛЬЗОВАТЕЛЬ2",
write list = "ПОЛЬЗОВАТЕЛЬ2",

Строки с 3 по 10 описывают параметр корзины, в строке 10 адрес корзины на сервере (После удаления пользователем файлы попадают туда), поэтому потом можно найти кто удалил и ударить по шаловливым ручкам.

Еще один подводный камень — временные файлы Windows. Дело в том что когда вы открываете документы например word, то создается временный файл ~имя.doc, что очень пугает людей, к тому же он не удаляется автоматически и не скрывается, поэтому пользователи думают что это вирус «жрет» их файлы. В 12 строчке указан параметр, который не показывает пользователям эти файлы.

В 17 строчке указаны пользователи которые могут читать и исполнять документы, а в 18, которые могут читать и изменять их. Как видите ничего сложного.

Теперь нужно создать эти папки (например папку pochta в каталоге share)

sudo mkdir /home/share/pochta

и разрешить в нее писать всем пользователям путем изменения прав на папки рекурсивно

sudo chmod -R 777 /home/share/pochta

Перезагружаетесь или перезапускаете сервер samba

sudo service smbd restart

После этого можете заходить на ваш сервер по сети, введете логин/пароль созданного пользователя и можете работать 😉

P.S. Будут вопросы — не стесняйтесь, задавайте в комментариях!