Привет всем читателям и подписчикам. Работая в государственном учреждении где легальности используемого программного обеспечения уделяют достаточно много внимания образовалась у меня довольно интересная задача. На смену старенькому серверу пришел новенький с лицензионной Windows Server 2012R2 Standart, но и как многое в нашем государстве происходит через известное место, то клиентских лицензий никто нам не дал и по факту с сервером могу работать только я, как администратор…
В совокупности эти причины вынудили посмотреть меня в сторону свободного программного обеспечения (опыт получился положительным). В качестве системы я остановился на дистрибутиве Ubuntu Server x64 12.04LTS, но для экспериментов можете установить Desktop редакцию, отличаются они только тем что на Server нет графического интерфейса, а в Desktop он присутствует (что новичкам конечно же будет полезно) и не отпугнет. Почему именно 12.04LTS когда есть более свежие выпуски? — довольно частый вопрос ко мне. Дело в том что для LTS (Long Time Support — долгосрочная поддержка) будет поддерживаться до апреля 2017 года, что актуально для сервера (настроил и забыл, только ставь обновления вовремя).
Что требовалось от сервера: файлы пользователей, файловая база 1С и еще одна файловая база специализированного приложения — ничего необычного. Главное условие: обязательная авторизация по имени пользователя и паролю. В сети огромное количество по настройке, однако не все они подробны и порой для новичков не подходят, так как для Windows машин я столкнулся с некоторыми подводными камнями. Какими именно — читаем…
Ubuntu настройка сервера samba
Для работы Ubuntu в роли файлового сервера для Windows машин используется SAMBA. Все действия мы будем выполнять через терминал, поэтому данная инструкция применима как к server так и desktop версиям Убунты.

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. Будут вопросы — не стесняйтесь, задавайте в комментариях!
Отправляя сообщение, Вы разрешаете сбор и обработку персональных данных.
Политика конфиденциальности.