Н а этом уроке мы собираемся узнать, как установить и настроить сервер Samba на Ubuntu 16.04. Samba является свободным и с открытым исходным кодом реализацией протокола SMB/CIFS для Unix и Linux, что позволяет взаимодействовать между файлами и принтерами в Unix/ и Windows, на машинах в локальной сети.
Samba представляет собой пакет программ, наиболее важными из которых два являются:
- smbd : обеспечивает SMB / CIFS обслуживание (общий доступ к файлам и печати), а также может выступать в качестве контроллера домена Windows.
- nmbd : обеспечивает сервис имен NetBIOS
Как установить Samba-сервер на Ubuntu 16.04
Samba входит в состав большинства дистрибутивов Linux. Чтобы установить Samba на , просто запустите:
Sudo apt install samba
Последняя стабильная версия доступна 4.5.3, выпущена 19 декабря 2016 г. Чтобы проверить версию Samba , запустите
Sudo smbstatus
Sudo smbd --version
Пример вывода:
Samba version 4.3.11-Ubuntu
Для того, чтобы проверить, запущена ли служба Samba, выполните следующие команды.
Systemctl status smbd systemctl status nmbd
Для запуска этих двух служб, выполните следующие команды:
Sudo systemctl start smbd sudo systemctl start nmbd
После запуска, smbd будет слушать на порту 139 и 445.
Редактирование файла конфигурации
Там только один конфигурационный файл, который необходимо отредактировать: /etc/samba/smb.conf .
Sudo nano /etc/samba/smb.conf
В разделе , убедитесь, что значение workgroup относиться к рабочей группе компьютеров Windows.
Workgroup = WORKGROUP
Прокрутите вниз к нижней части файла. (В текстовом редакторе nano, нажмите CTRL+W а затем CTRL+V .) Включите новый раздел, как показано ниже. Замените username на необходимое имя пользователя.
Comment = Home Public Folder path = /home/username/ writable = yes valid users = username
Home Share это имя папки, которое будет отображаться в сети Windows. Комментарием является описание общей папки. Следующие 3 строки указывают, что только указанный пользователь valid users имеет право доступа к каталогу /home/username/ , который также доступен для записи. Вышеуказанная конфигурация отключит анонимный доступ.
Сохраните и закройте файл, а затем выполните следующую команду, чтобы проверить, если есть синтаксические ошибки.
Testparm
Создание пользователя
Samba содержит по умолчанию user в качестве режима защиты, означает, что клиенты должны ввести имя пользователя и пароль для доступа к общей папке. Чтобы добавить пользователя в Ubuntu, выполните следующую команду:
Sudo adduser username
Вам будет предложено установить пароль Unix. Кроме того, необходимо установить отдельный Samba пароль для пользователя с помощью следующей команды:
Sudo smbpasswd -a username
Теперь все, что осталось сделать, это перезапустить демон smbd.
Sudo systemctl restart smbd
Доступ Samba к общей папки из Windows
На компьютере Windows, который находится в той же сети, откройте проводник и нажмите Сеть на левой панели. Вы увидите сервер самбы. Дважды щелкните общую папку и введите имя пользователя и пароль.
Доступ Samba к ресурсу папке с компьютера Ubuntu
В диспетчере файлов, перейдите на вкладку Сеть на левой панели и выберите Сеть Windows.
Выберите рабочую группу, сервер Samba и общую папку, а затем введите имя пользователя и пароль Samba.
Добавление нескольких пользователей или групп
Если нескольким учетным записям необходимо получение доступа к общей папке, то необходимо изменить правомерных пользователей, как показано ниже в файле /etc/samba/smb.conf .
Valid users = user1, user2, user3
Также используйте smbpasswd для установки пароля Samba для каждого из этих пользователей.
Sudo smbpasswd -a user1 sudo smbpasswd -a user2 sudo smbpasswd -a user3
Для того, чтобы разрешить группе пользователей получить доступ к общей папке, используйте следующую конфигурацию /etc/samba/smb.conf .
Valid users = @sambashare
Создайте группу.
Sudo groupadd sambashare
Затем добавьте в эту группу пользователей
Sudo gpasswd -a user1 sambashare sudo gpasswd -a user2 sambashare sudo gpasswd -a user3 sambashare
Группа должна иметь разрешение на запись в общую папку, которая может быть достигнута при следующих двух команд.
Набор sambashare как владельца группы общей папки:
Sudo chgrp sambashare /path/to/shared/folder -R
Предоставить право на запись в группе.
Sudo chmod g+w /path/to/shared/folder/ -R
Я надеюсь, что эта статья помогла вам настроить сервер Samba на Ubuntu 16.04. Как всегда, если вы нашли этот пост полезным, то отпишитесь в комментариях.
Samba - это программа, которая позволяет компьютерам UNIX/Linux имитировать машины Windows. При помощи Samba компьютеры могут обмениваться файлами или управлять заданиями на печать как файл-серверы или серверы печати под Windows. Подобно операционной системе UNIX/Linux, на которой она работает, Samba представляет собой разработанное множеством программистов ПО с открытым исходным кодом.
Протокол SMB используется Microsoft Windows 2000, NT и 95/98 для организации доступа к дискам и принтерам. Используя набор утилит Samba от Andrew Tridgell ([email protected]), UNIX-машины (включая Linux) могут организовывать доступ к дискам и принтерам для Windows-машин. Утилиты smbfs, написанные Paal-Kr. Engstad ([email protected]) и Volker Lendecke ([email protected]), дают возможность машинам с UNIX монтировать SMB-ресурсы, доступные на машинах с Windows или Samba.
C помощью Samba можно реализовать следующие наиболее распространенные:
- Давать доступ к дискам Linux Windows-машинам.
- Получать доступ к дискам Windows для машин под Linux.
- Давать доступ к принтерам Linux для Windows-машин.
- Получать доступ к принтерам Windows из Linux-систем.
Инсталляция и тестирование Samba
Инсталляцию, как известно, следует начинать с подробного изучения документации. Правда, большинство системных администраторов пренебрегают этим правилом, руководствуясь другим: «Если уже ничего не помогает, почитайте документацию». В общем, советуем начать инсталляцию Samba с простой команды: $ man samba (рис. 1).
А также c чтения документации, доступной на сайте http://www.samba.org/ . Следует отметить, что для использования Samba ваша машина должна находиться в одиночном Ethernet-сегменте локальной сети, при этом используя протокол TCP/IP. Samba не будет работать при использовании других сетевых протоколов. Это, в принципе, легко, поскольку Linux и Windows 95/98/NT поставляются с поддержкой TCP/IP. Однако если вы используете машины с Windows 3.x, то вам необходимо добавить поддержку TCP/IP.
Где взять
Для того чтобы получить исходные тексты последней версии Samba, свяжитесь с сайтом http://www.samba.org/ и выберите ближайший к вам сервер-зеркало: ftp://ftp.samba.org/. Пакет Samba входит в состав дистрибутивов ряда UNIX/Linux-систем, например Rad Hat или Suse Linux. Внимательно изучите документацию вашего Linux, и, вполне возможно, что вам будет достаточно только вставить CD и инсталлировать пакеты Samba. В этом случае вы можете продолжать чтение статьи со следующей главы.
После получения данного пакета извлекаем все то, что находится под «грифом» *.tar.gz, например, в директорию /tmp (причем для этого не обязательно быть root"ом:), то есть:
$ tar -zxvf samba-latest.tar.gz
Если у вас не возникло никаких проблем при извлечении данного пакета, вы обнаружите новую директорию, например samba-latest, и в ней извлеченные файлы. Перейдите в нее, загляните в файлы «README» и «Manifest» - инструкция по инсталляции находится в последнем файле и выглядит примерно так:
$ ./configure $ make $ su # make install
Теперь надо обратить внимание на то, где находятся ваши файлы конфигурации. Большинство дистрибутивов Samba по умолчанию помещает их в директорию /etc, а себя - в директорию /usr/local/samba.
Конфигурирование Samba
Основная информация о конфигурации Samba находится в файле smb.conf. С этим файлом следует обращаться осторожно. Если вы планируете каким-либо образом изменить работающую версию, обязательно сделайте копию.
Для того чтобы первый раз запустить сервер, необходимо иметь рабочую версию файла smb.conf. Перейдите в директорию, в которой должен находиться ваш конфигурационный файл. Скорее всего это будет /etc или /usr/local/samba/lib. Сделайте копию данного файла, например smb.old, - это возможно при наличии прав root. Теперь, когда у вас есть «чистый» файл, можно ввести самую простую конфигурацию, то есть набрать следующие строки:
#Basic Samba configuration file (smb.conf) workgroup = PTO netbios name = GALKA
Ниже мы разберемся, что означают эти строки в файле конфигурации, но сначала временно отвлечемся от него и перейдем к демонам SMB.
Запуск демонов
Имеется два демона SMB: /usr/sbin/smbd и /usr/sbin/nmbd. Вы можете запустить демоны Samba из inetd или как автономный процесс. Samba будет отвечать чуть быстрее в случае, если она запущена как автономный процесс.
Иногда бывает необходимо проверить наличие в файле /etc/services примерно таких строк:
Netbios-ns 137/tcp nbns netbios-ns 137/udp nbns netbios-dgm 138/tcp nbdgm netbios-dgm 138/udp nbdgm netbios-ssn 139/tcp nbssn
Убедитесь, что все они не закомментированы. В зависимости от вашего дистрибутива вам, вероятно, даже понадобится добавить их в этот файл. Samba не сможет привязаться к соответствующим портам, до тех пор пока этих строк не будет в файле /etc/services.
Для запуска демонов из inetd поместите следующие строки в конфигурационный файл inetd, /etc/inetd.conf:
# SAMBA NetBIOS services (for PC file and print sharing) netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd
Затем перезапустите демон inetd, выполнив команду:
Kill -HUP 1 `cat /var/run/inetd.pid`
Для запуска демонов из системных стартовых скриптов поместите следующий скрипт в файл /etc/rc.d/init.d/smb (для дистрибутива RedHat) или /etc/rc.d (для дистрибутива Suse Linux) и создайте на него символические ссылки с именами вида /etc/rc.d/rcX.d/S91smb (запускает сервисы SMB в многопользовательском режиме), /etc/rc.d/rcX.d/K91smb (убивает сервисы SMB при выключении), /etc/rc.d/rc6.d/K91smb (убивает сервисы SMB при перезагрузке), где X - номер загрузочного уровня системы, обычно это цифра 2 или 3.
#! /bin/sh . /etc/rc.config # Determine the base and follow a runlevel link name. base=${0##*/} link=${base#*} # Force execution if not called by a runlevel directory. test $link = $base && START_SMB=yes test "$START_SMB" = "yes" || exit 0 # The echo return value for success (defined in /etc/rc.config). return=$rc_done case "$1" in start) echo -n "Starting SMB services:" startproc /usr/sbin/nmbd -D || return=$rc_failed startproc /usr/sbin/smbd -D || return=$rc_failed echo -e "$return" ;; startd) echo -n "Starting SMB services:" startproc /usr/sbin/nmbd -D -d 10 || return=$rc_failed startproc /usr/sbin/smbd -D -d 10 || return=$rc_failed echo -e "$return" ;; stop) echo -n "Shutting down SMB services:" killproc -TERM /usr/sbin/nmbd || return=$rc_failed killproc -TERM /usr/sbin/smbd || return=$rc_failed echo -e "$return" ;; restart|reload) $0 stop && $0 start || return=$rc_failed ;; status) echo -n "Checking for service smb: " checkproc /usr/sbin/nmbd && echo -n "OK " || echo -n "No process " checkproc /usr/sbin/smbd && echo "OK " || echo "No process" ;; *) echo "Usage: $0 {start|stop|restart|reload|status}" exit 1 esac # Inform the caller not only verbosely and set an exit status. test "$return" = "$rc_done" || exit 1 exit 0
Если при старте Samba вы получаете сообщение, в котором говорится, что демон не может подключиться к порту 139, то скорее всего у вас уже есть запущенные процессы Samba, которые не были завершены. Посмотрите список процессов (используя команду "ps ax | grep mbd") для того, чтобы определить, есть ли еще запущенные сервисы Samba. Если же демоны отказываются запускаться по каким-либо другим причинам, то вероятнее всего этот скрипт не подходит к вашему UNIX/Linux и вам придется еще раз покопаться в документации, что-то в нем поправить, а может быть, и переписать.
Основная настройка smb.conf
Очевидно, что в описанной выше конфигурации Samba может функционировать, но практически не может ничего делать. Ниже будут рассмотрены более полезные и сложные примеры. Но сначала надо разобраться в директивах smb.conf.
Каждый раздел файла начинается с заголовка раздела, такого как , , и т.п.
Теперь переходите в самую первую закладку «Конфигурация» (Configuration) и нажмите на кнопке «Доступ к файлам и принтерам» (File and print sharing). В появившемся окне необходимо поставить флажки в поле «Файлы этого компьютера можно сделать общими» (I want to be able to give others access to my files) и «Принтеры этого компьютера можно сделать общими» (I want to be able to allow others to print to my printer(s)).
И наконец, мы указываем Windows, что Samba является сервером WINS и именно он будет browse master"ом. Для этого переходим в свойства TCP/IP-протокола (рис. 4). В появившемся окне выбираем «Конфигурация WINS» (WINS Configuration). Ставим флажок в поле «Включить распознавание WINS» (Enable WINS Resolution). В появившемся поле «Основной сервер WINS» (WINS Server Search Order) прописываем IP-адрес сервера (Samba) - 192.168.0.1 и нажимаем «Добавить» (Add) или просто . Переходим на закладку «Дополнительно» (Advanced) и нажимаем на «Browse Master» в левом окне, а в правом устанавливаем значение «Disabled». Вот и все. Теперь остается только несколько раз нажать кнопку «ОК» и перезагрузить Windows.
В Windows NT экраны свойств сети немного различаются (показаны на рисунках), но главная концепция построения остается той же.
После перезагрузки Windows смело жмите на «Сетевое окружение» (Network Neighborhood) и вы сможете увидеть Samba-сервер, а также свою домашнюю директорию на Linux-сервере. Теперь вы можете просто подключить данные ресурсы как сетевые диски и присвоить им drive letters.
Немного усложним конфигурацию: сделаем директорию /home/public доступной для чтения всеми, но разрешим помещать в нее информацию только людям из группы ADMINS. Для этого изменим запись следующим образом:
Comment = Public Stuff path = /home/public public = yes writable = yes printable = no write list = @ADMINS
Можно привести еще много разных примеров настроек файлового сервера Samba, но будет лучше, если вы заглянете в документацию Samba или в справочные страницы и разберете их самостоятельно.
Доступ к дискам Windows из Linux
Вряд ли начинающие пользователи Linux OS смогут быстро разобраться с системой доступа к Linux-файлам из-под Windows, и наоборот. Но не все так сложно. Доступ к Linux-ресурсам из под Windows был кратко описан выше, а доступ к Windows-ресурсам из под Linux мы сейчас рассмотрим.
Программа клиента SMB для UNIX/Linux-машин включена в дистрибутив Samba. Она обеспечивает ftp-подобный интерфейс командной строки. Вы можете использовать эту утилиту для переноса файлов между «сервером» под управлением Windows и клиентом под Linux.
Для того чтобы увидеть, какие ресурсы доступны на данной машине, выполните команду:
/usr/sbin/smbclient -L host
где host - это имя машины, которую вы хотите видеть. Эта команда вернет список имен сервисов - то есть имен дисков или принтеров, к которым может быть получен доступ. До тех пор пока SMB-сервер не будет настроен без управления доступом, он будет запрашивать у вас пароль. Введите в ответ на запрос пароль для пользователя «гость (guest)» или ваш персональный пароль на этой машине.
Для использования клиента выполните следующую команду:
/usr/sbin/smbclient service
где service - имя машины и сервиса. Например, если вы пытаетесь обратиться к директории, которая доступна под именем public на машине, названной galka, то имя сервиса должно звучать как \\galka\public.
Вы получите приглашение smbclient:
Server time is Wen May 22 15:58:44 2001 Timezone is UTC+10.0 Domain= OS= Server= smb: \>
Команды для использования Samba аналогичны командам ftp, но если вы не умеете пользоваться ни тем ни другим, напечатайте h, чтобы получить помощь.
Вы, конечно, можете использовать smbclient для тестирования, однако очень скоро вам это надоест. Для работы вам вероятнее всего понадобится пакет smbfs. Smbfs поставляется с двумя простыми утилитами - smbmount и smbumount. Они работают подобно mount и umount для SMB-ресурсов. Например,
Smbmount//computer_name/catalog/Mountpoint -U user_name
В итоге вы получите «подмонтированный» ресурс с возможностью обращения к нему привычными методами проводника.
Принт-сервер под Linux
Для организации доступа к Linux-принтеру с Windows-машин вам необходимо убедиться, что принтер работает под Linux. Если вы можете печатать под Linux, то организация доступа к принтеру будет очень проста.
Добавьте настройку принтера в ваш файл smb.conf:
Printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba comment = All Printers security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s
Убедитесь, что путь к принтеру (в нашем случае для ) соответствует буферной директории, указанной в файле /etc/printcap, то есть проверьте наличие строк:
Printcap name = /etc/printcap load printers = yes
Эти строки контролируют, должны ли все принтеры, перечисленные в /etc/printcap, быть загружены по умолчанию. В этом случае нет нужды в настройке каждого принтера в отдельности. Раздел указывает настройки для принтеров, которые вы хотите определить явно. Если используемая вами подсистема печати не работает подобным образом (BSD), то вам необходимо настроить фальшивый файл printcap (либо использовать "print command", см. ниже). Для получения дополнительной информации о системе printcap см. Printing-HOWTO.
Доступ к принтеру Windows с машин, работающих под Linux
Для доступа к принтеру на Windows-машине необходимо соблюдение следующих условий:
- Вам необходимо иметь в файле /etc/printcap правильные записи, которые должны соответствовать локальной структуре директорий (для буферной директории и т.п.)
- У вас должен быть скрипт /usr/bin/smbprint. Он поставляется вместе с исходными текстами Samba, но не со всеми двоичными дистрибутивами Samba.
- Если вы хотите преобразовывать ASCII-файлы в PostScript, вы должны иметь программу nenscript или ее эквивалент. Программа nenscript - это конвертор PostScript, который обычно устанавливается в директорию /usr/bin.
Запись в приведенном ниже файле /etc/printcap сделана для принтера HP 5MP на сервере Windows NT. Используются следующие поля файла /etc/printcap:
Cm - комментарий; lp - имя устройства, открываемого для вывода; sd - директория спула принтера (на локальной машине); af - файл учета пользования принтером; mx - максимальный размер файла (ноль - без ограничений); if - имя входного фильтра (скрипта).
Фрагмент файла /etc/printcap:
# /etc/printcap # # //galka/oreilly via smbprint # lp:\ :cm=HP 5MP Postscript OReilly on galka:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ :af=/var/spool/lpd/lp/acct:\ :mx#0:\ :if=/usr/bin/smbprint:
Убедитесь, что буферные директории и директория, применяемая для учета пользования, существуют и имеют право на запись. Убедитесь, что строка «if» содержит правильный путь к скрипту smbprint (дан ниже) и что записи указывают на правильное устройство вывода (специальный файл /dev).
#!/bin/sh –x # # Debugging log file, change to /dev/null if you like. # logfile=/tmp/smb-print.log # logfile=/dev/null # # The last parameter to the filter is the accounting file name. # spool_dir=/var/spool/lpd/lp config_file=$spool_dir/.config # Should read the following variables set in the config file: # server # service # password # user eval `cat $config_file` # # Some debugging help, change the >> to > if you want to same space. # echo "server $server, service $service" >> $logfile (# NOTE You may wish to add the line `echo translate" if you want automatic # CR/LF translation when printing. echo translate echo "print -" cat) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile
Большинство дистрибутивов Linux поставляется с программой nenscript для преобразования ASCII-документов в PostScript.
Заключение
Еще совсем недавно возможности Samba ограничивались лишь перечисленными выше. Однако можно с уверенностью говорить о том, что новая версия Samba 2.2 догоняет Windows 2000 по функциональным возможностям и содержит дополнительные усовершенствования. Один из ведущих разработчиков Samba Джереми Эллисон (Jeremy Allison) называет ее «важным обновлением», которое поможет системам Samba легче внедряться в сети Microsoft. ПО обеспечивает экономию не только потому, что не нужно платить за серверную ОС, но и потому, что не приходится оплачивать «клиентские» лицензии за все компьютеры, которые используют сервер.
О новых возможностях Samba 2.2. читайте в нашей статье «Samba 2.2 - что нового » .
КомпьютерПресс 10"2001
Samba - программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL.
Samba работает на большинстве Unix-подобных систем, таких как GNU/Linux, POSIX-совместимых Solaris и Mac OS X Server, на различных вариантах BSD, в OS/2, Windows. Samba включена практически во все дистрибутивы GNU/Linux, в том числе, конечно, и в Ubuntu.
Установка
Чтобы сделать общую папку в Ubuntu Desktop достаточно щёлкнуть правой кнопкой мыши на папке и выбрать пункт меню «Опубликовать папку». Никаких конфигурационных файлов при этом править не надо. Всё описанное ниже относится только к ручной настройке, например, в случае создания файлового сервера.
Для установки достаточно открыть терминал и ввести:
sudo apt-get install samba
Приложение будет автоматически загружено и установлено.
Настройка
При помощи терминала сделаем резервную копию начального файла конфигурации:
Sudo cp /etc/samba/smb.conf{,.bak}
Теперь можно отредактировать файл настроек /etc/samba/smb.conf, для этого откройте его в любом текстовом редакторе с правами суперпользователя. Например, так:
Sudo nano /etc/samba/smb.conf Пример настройки Samba в качестве автономного файлового сервера с авторизацией: ; Глобальные настройки сервера ; General server settings ; Имя компьютера, которое будет отображаться в сетевом окружении netbios name = main-server server string = ; Рабочая группа клиентов workgroup = WORKGROUP announce version = 5.0 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192 passdb backend = tdbsam security = user null passwords = true ; Файл для альясов имен юзеров username map = /etc/samba/smbusers name resolve order = hosts wins bcast ; wins support устанавливается в yes, если ваш nmbd(8) в Самба является WINS сервером. Не устанавливайте этот параметр в yes если у вас нет нескольких подсетей и вы не хотите чтобы ваш nmbd работал как WINS сервер. Никогда не устанавливайте этот параметр в yes более чем на одной машине в пределах одной подсети. wins support = no ; Поддержка принтеров printing = CUPS printcap name = CUPS ; Логи log file = /var/log/samba/log.%m syslog = 0 syslog only = no ; Настройка привязки к интерфейсам, на каких слушать, если не указано слушает на все интерфейсах; interfaces = lo, eth0 ; bind interfaces only = true ; ; ; path = /var/lib/samba/printers ; browseable = yes ; guest ok = yes ; read only = yes ; write list = root ; create mask = 0664 ; directory mask = 0775 ; ; ; path = /tmp ; printable = yes ; guest ok = yes ; browseable = no ; ; ;path = /media/cdrom ;browseable = yes ;read only = yes ;guest ok = yes ; Шара жесткого диска; Имя шары, видно у клиентов ; Путь к расшариваемому диску path = /media/sda1 ; Можно ли просматривать browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755 ; Привязка к определенному имени пользователя или группе, имена через пробел; force user = user1 user2 ; force group = group1 group2 ; Еще один жесткий диск, по аналогии с тем что выше path = /media/sde1 browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755
Теперь надо разобраться с пользователями.
Samba использует пользователей которые уже есть в системе, возьмем для примера имя user, допустим что он уже есть в системе, надо внести его в базу данных SMB и назначить пароль для доступа к общим ресурсам, сделаем это командой:
Smbpasswd -a user
Вам будет предложено ввести пароль, пользователь будет добавлен в базу, теперь необходимо включить этого пользователя.
Smbpasswd -e user
Далее создадим псевдоним для имени пользователя user что бы облегчить себе доступ с Windows машины на которой у нас например пользователь с именем Admin, для этого создадим и отредактируем файл /etc/samba/smbusers:
Sudo touch /etc/samba/smbusers sudo gedit /etc/samba/smbusers
Впишите в файл пару строк
# Unix_name = SMB_name1 SMB_name2 user = Admin
На этом настройка закончена, перезапустите Samba.
Файловый сервер Samba для Windows сети
Очень часто Samba используют для создания файлового сервера в Windows сети.
Файловый сервер в составе домена Active Directory
Для того, чтобы создать файловый сервер, интегрированный в домен Active Directory, вам в первую очередь потребуется ввести вашу машину с Ubuntu в домен. Этому посвящена отдельная статья:
Для создания файлового сервера вам не нужно настраивать PAM, достаточно добавить доменных пользователей и группы через Winbind в систему.
После успешного входа в домен вам останется всего лишь настроить расшаренные ресурсы на вашем компьютере.
Тут стоит сразу обратить внимание на одну очень важную вещь: Samba пытается спроецировать права на файлы Windows на права Unix , однако из-за кардинальных различий в механизмах присвоения прав сделать это не всегда возможно. Учтите, что права на файлы всегда и в любом случае контролируются вашей файловой ситемой на компьютере с Ubuntu, самба может лишь подстраиваться под них, но не менять их поведение.
Поэтому по умолчанию на расшаренных ресурсах будут весьма скудные возможности контроля доступа — назначение разных прав для пользователя, группы и всех остальных. Однако это легко исправить, добавив в вашу ФС поддержку POSIX ACL . В этом случае можно будет назначать различные права различным пользователям и группам практически как в Windows.
Поддержка POSIX ACL есть как минимум в ext3/4, для её активирования вам необходимо просто добавить к опциям монтирования нужного раздела параметр acl .
Важно, чтобы каталог, который вы хотите расшарить через Samba, лежал на диске, смонтированном с опцией acl. Иначе вы не сможете нормально использовать механизм разграничения прав доступа к файлам на шарах.
Есть и ещё один весьма немаловажный момент: POSIX ACL не поддерживают наследование прав доступа от родительских каталогов, а в Windows эта возможность присутствует. Поэтому в Samba реализован дополнительный механизм сохранения информации о наследовании прав доступа, который использует расширенные атрибуты файловой системы. Поэтому чтобы Samba могла корректно обрабатывать наследование прав кроме acl к опциям монтирования файловой системы необходимо добавлять параметр user_xattr , который как раз и отвечает за включение поддержки расширенных атрибутов.
Например, я всегда использую для организации расшаренных ресурсов отдельные LVM диски и у меня строчки в fstab для них выглядят примерно так:
/dev/mapper/data-profiles /var/data/profiles ext3 defaults,noexec,acl,user_xattr 0 2
Опция noexec нужна потому, что на шарах для Windows 100% не должно быть исполняемых файлов Linux, и лишний раз перестраховаться не помешает.
Для работы с acl на Ubuntu необходимо установить пакет соответствующих утилит:
Sudo aptitude install acl
После чего посмотреть расширенные права (т.е. ACL) на файл или каталог можно будет командой
Getfacl file
А установить командой
Setfacl file
На всякий случай хочу обратить внимание на то, что механизм POSIX ACL не имеет никакого отношения к Samba — это просто надстройка над стандартным механизмом разграничения прав в Linux. Соответственно Samba может его использовать, но не может как-либо изменить или обойти.
Для работы с расширенными атрибутами ФС потребуется очень похожий на acl пакет утилит — attr , поставить который можно командой
Sudo aptitude install attr
Для просмотра расширенных атрибутов можно использовать команду
Getfattr file
А для установки
Setfattr file
Однако тут есть одна небольшая загвоздка. Дело в том, что Samba хранит всю информацию о наследовании в бинарном виде в единственном расширенном атрибуте user.SAMBA_PAI . Поэтому поменять что-то с помощью setfattr вам не удастся, только разве что полностью удалить расширенные атрибуты (иногда такое может потребоваться сделать).
Ну а управлять наследованием прав вам придётся с Windows машины с помощью штатных инструментов этой системы. Либо же с помощью утилиты smbcacls , если вы разберётесь, как ей пользоваться.
Существует так же экспериментальный VFS модуль acl_xattr, который позволяет хранить NT ACL полностью в расширенных атрибутах. К сожалению, документации по нему нет, поэтому что-то вразумительное сказать по его поводу сложно. Ожидается, что в Samba 4 будет полная интегрированная поддержка NT ACL , а пока что можно пользоваться тем, что есть.
Если вам есть что добавить по поводу расширенных атрибутов в Samba и методах работы с ними — обязательно напишите в эту тему на форуме. Буду благодарен за любые ссылки, статьи и комментарии по теме.
Кроме того, расширенные атрибуты файловой системы позволяют включить в Samba полную поддержку файловых атрибутов DOS, таких как скрытый, архивный и пр.
Итак, будем считать что у вас есть в системе каталог, который вы хотите расшарить через Samba (и он находится на диске, подмонтированном с поддержкой acl и user_xattr). Теперь необходимо собственно настроить его расшаривание. Для этого нужно внести соответствующую информацию в файл /etc/samba/smb.conf .
Начнём с общих настроек, которые можно добавить в секцию этого файла (это далеко не все возможные параметры, просто несколько достаточно полезных из них):
# Отключить расшаривание принтеров. Если вы конечно и вправду не хотите их расшаривать. # Для полного отключения нужно указывать все 4 строки, приведённых ниже load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes # Сделать скрытыми при просмотре с Windows файлы со следующими именами hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/ # Использовать для шар с публичным доступом следующего UNIX пользователя в качестве Guest guest account = nobody # Воспринимать как guest незарегистрированных пользователей map to guest = Bad User ## Настройки, использующие расширенные атрибуты файловой системы # Обрабатывать наследования прав с помощью расширенных атрибутов ФС map acl inherit = yes # Использовать расширенные атрибуты ФС для хранения атрибутов DOS store dos attributes = yes # Отключить маппинг DOS атрибутов на UNIX права, включённый по умолчанию # Согласно man smb.conf при использовании расширенных атрибутов эти опции обязаны быть отключены map archive = no map system = no map hidden = no map readonly = no
Теперь настройки непосредственно расшаренного ресурса. У меня он называется profiles , а физически на Ubuntu машине находится по адресу /var/data/profiles :
# Комментарий comment = User Profiles # Путь до папки, которую расшариваем path = /var/data/profiles/ # Пользователи с неограниченными правами доступа к шаре # У меня стоит группа администраторов домена. # Эти пользователи при работе с файлами воспринимаются как локальный root admin users = "@DOMAIN\Администраторы домена" # Скрыть папки, к которым у пользователя нет доступа hide unreadable = yes # Доступ не только на чтение read only = no # Маски для создаваемых файлов - можно задать по желанию #create mask = 0600 #directory mask = 0700 # Отключение блокировок - лучше отключить locking = no
Есть множество других опций — за подробностями стоит обратиться к документации по Samba.
Не забудьте поставить правильного владельца и права доступа на папку, которую вы расшариваете, а то несмотря на любые настройки самбы в неё может быть запрещена запись на уровне прав Linux. Я делаю обычно так:
Sudo chmod ug+rwx /var/data/profiles sudo chown root:"пользователи домена" /var/data/profiles
Обратите внимание, так как ваша Ubuntu машина введена в домен, то вы можете использовать пользователей и группы домена в качестве владельцев файлов прямо в Ubuntu.
Проверьте правильность конфигурации Samba командой
Testparm
После чего перезапустите Samba:
Sudo /etc/init.d/samba restart
Теперь вы можете с любой машины домена получить доступ к расшаренному ресурсу.
Кстати, не забывайте про SGID и Sticky биты для каталогов. Они позволят вам наследовать группу-владельца и запрещать пользователям удаление не своих файлов — это может быть очень удобно для многопользовательских хранилищ. Однако в отличие от редактирования прав из Windows поменять эти биты на папках на расшаренном ресурсе не получится — только вручную непосредственно на Ubuntu компьютере.
Кроме всего прочего Samba позволяет организовывать хранение предыдущих версий файлов, что бывает иногда полезно при создании общих ресурсов с пользовательскими данными.
Автономный файловый сервер
Домен Active Directory есть далеко не у всех. Поэтому часто возникает необходимость организовать на Linux машине автономное файловое хранилище со своей собственной системой авторизации. Это сделать очень просто.
Основной особенностью такой организации файлового хранилища будет то, что вся информация о пользователях будет храниться в базе данных Samba, соответственно добавлять и удалять пользователей на самбу надо будет вручную.
Самое главное — определиться с используемым способом доступа к ресурсу. Для его изменения надо правильно установить значение параметра security в секции файла /etc/samba/smb.conf . Подробней об этом параметре можно почитать или же в официальной документации.
Обычно используется значение share или user .
Автономный файловый сервер без авторизации
Для дома удобно чтобы все видели всех. Это можно сделать если добавить 4 строчки в секцию файла /etc/samba/smb.conf. Некоторые могут уже существовать.
[ global] workgroup = WORKGROUP map to guest = Bad User netbios name = NOTEBOOK security = userNOTEBOOK — имя компьютера которое будет в сети. Кроме этого надо установить дополнительные программы:
sudo apt-get install sambaДля kubuntu надо еще установить smb4k . После редактирования конфигов надо перезапустить службы. В systemd (начиная с 15.04) перезапуск выглядит так:
sudo systemctl restart smbd.service nmbd.serviceПосмотреть «шары» можно через файловый броузер nautilus, konkueror или так:
Smbclient -L 127.0.0.1
. Официальная документация на английском.
Расшаривание папки на ubuntu
Cоздайте папку для обмена файлов.
mkdir ~/ shareДобавьте в конец файла /etc/samba/smb.conf следующие строки, yuraku1504 замените на имя пользователя компьютера с самбой:
[ MyShareWork] comment = Anonymous Samba Share path = / home/ yuraku1504/ share guest ok = yes browsable =yes writable = yes read only = no force user = yuraku1504 force group = yuraku1504Папка будет открыта для чтения и записи.
А может просто интерес и любопытство толкают пользователей на поиски разного подходящего софта. К такому софту относится Samba. Вам необходимо знать, как настроить Samba на Ubuntu Server, если вы желаете сделать из своего компьютера базу данных или файловое хранилище.
Установка Samba на Ubuntu Server дает возможность создать базу данных.
Если вы думали, что страница посвящена изучению танца, вы слегка ошиблись. Samba - свободно распространяемое программное обеспечение. Оно реализует доступ к принтерам и файлам. Причём делает это на различных операционных системах.
Для чего нужна?
В сравнении с другими пакетами программ подобного назначения Самба имеет несколько достоинств и особенностей.
- Позволяет соединить друг с другом Unix-подобную систему, т. е. любую систему на Linux, и Windows. Причём не только Windows. Программа очень «всеядна»: MacOS , Solaris и другие ОС разной степени популярности.
- Самба даёт возможность пользователям Виндовс использовать компьютеры на Ubuntu в качестве сервера. То есть пользоваться файлами, к которым налажен доступ, а также частью подключённых устройств.
- Поддерживает доменную структуру NT Domain, управляет пользователями NT, поддерживает функции участника, первичного контроллера.
Наверное, для многих главное из этого - связь с машинами на Windows. Они в этом случае выступают в качестве клиента, а компьютер на Ubuntu - в качестве сервера. С другой стороны, пользователь Ubuntu также может получить доступ к сетевым папкам Windows.
Samba производится аж с 1992 года. И, что главное, новые версии выходят до сих пор. Последняя была выпущена седьмого марта 2017. С каждым годом разработчики стараются наладить совместимость большим количеством различных версий операционных систем, но главной фишкой остаётся соединение Linux-систем с Microsoft . В сравнении с Windows Server Samba может уступать ей из-за отсутствия поддержки части протоколов и инфраструктуры узлов. Однако многие утверждают, что скорость работы Самбы гораздо выше.
Настраиваем Samba
Перед непосредственно настройкой, программу нужно установить. Установка Samba выполняется таким же образом, как в случае с другими программами - при помощи ввода в терминал команды:
sudo apt-get install samba
Сразу же заметьте: все действия, которые будут описаны, включая и установку программы, можно выполнить как на простой Ubuntu, так и на Ubuntu Server. Только на последней доступен исключительно текстовый интерфейс.
После установки следует сделать бэкап файла конфигурации:
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
$ sudo vi /etc/samba/smb.conf
Либо редактируем существующий. В этом файле содержатся основные установки сервера Самбы. Чтобы разобраться, что мы будем делать дальше, нужно понимать, что означают различные строки.
- Workgroup - рабочая группа. Значение этого параметра также часто будет Workgroup, поскольку в Виндовс домен рабочей группы по умолчанию выглядит именно так.
- Netbios name - имя компьютера Ubuntu, которое видят пользователи Windows . Здесь можно вводить значение на своё усмотрение.
- Security - режим авторизации пользователей. По умолчанию стоит User, то есть аутентификация на уровне пользователя. Пока что лучше так и оставить.
- Os level - указывает приоритет, который имеет Samba над другими клиентами (ПК) в локальной или интернет-сети.
- Name resolve order - очерёдность разрешения IP-адресов по NetBIOS имени.
- Read only - привилегия чтения или записи каталога. Значение может быть «yes» - исключительно чтение, «no» - запись.
Создаём пользователя
Это простейшее действие, с которого можно начинать работу с Самбой.
Добавляем пользователя в самой ОС:
$ useradd -M -l -s /sbin/nologin username
Создаём для него пароль:
Занесём нашего пользователя в базу Samba:
$ smbpasswd -a username
При помощи команды $ smbpasswd можно выполнять другие различные действия:
- $ smbpasswd username - смена пароля
- $ smbpasswd -x username - удаление пользователя
- $ smbpasswd -d username - бан пользователя
Сервер необходимо перезагружать, если вносите изменения в конфигурационный файл. Делается это с помощью команды:
$ systemctl restart smb
Это базовые настройки Samba. Теперь можно попробовать применить программу на практике.
Доступ к папке
Сначала попробуем создать папку, доступ к которой будет открыт всем пользователям, даже тем, кто не авторизован в Samba.
Создаём папку, с которой и будем потом работать на двух компьютерах:
$ sudo mkdir -p /samba/access
Теперь делаем для этой папки расширенный доступ, чтобы её мог открыть любой клиент нашей локальной сети:
$ cd /samba
$ sudo chmod -R 0755 access
$ sudo chown -R nobody:nogroup access/
Владельцем согласно коду является nobody.
Теперь в файле с конфигурацией сервера нужно сделать два раздела: первый, содержащий основную информацию:
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = srvr1
security = user
map to guest = bad user
name resolve order = bcast host
dns proxy = no
#==============
И второй, содержащий данные о папке access:
path = /samba/access
browsable =yes
writable = yes
guest ok = yes
read only = no
Следуют разделы друг за другом в таком же порядке.
Обновляем изменения сервера:
$ sudo service smbd restart
Действия с компьютером на Windows
На Винде также требуется выполнить некоторые действия, чтобы можно было без труда открыть новую общую папку и редактировать её.
- Открываем командную строку. Желательно делать это с расширенными правами, т. е. от имени администратора.
- Выполняем команду:
- notepad C:\Windows\System32\drivers\etc\hosts
- Открывается файл, в котором вводим следующую строчку:
- 168.0.1 srvr1.domain.com srvr1
Благодаря ей папка станет доступна. - Открыть её можно при помощи строки «Выполнить». Жмём Win + R, вводим: После этого нам откроется папка.
Закрытая папка
Настроенный сервер Samba можно использовать и для создания сетевых папок с ограниченным доступом. Такую папку тоже нужно сначала создать, а затем добавить в конфигурацию Samba.
Делаем папку с названием «Closed»:
$ sudo mkdir -p /samba/allaccess/closed
Делаем специальную группу, которая может иметь доступ к этой папке:
$ sudo addgroup securedgroup
Создаём особые права для разных групп:
$ cd /samba/access
$ sudo chown -R richard:securedgroup closed
$ sudo chmod -R 0770 closed/
Так же, как и в случае с открытой папкой, добавляем сведения в конфигурацию:
path = /samba/access/closed
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes
Перезапускаем сервер.
Как можно понять, мы сделали папку Closed внутри Access. Таким образом Access может открыть каждый пользователь локальной сети, но чтобы смотреть и редактировать Closed, нужно обладать особыми правами.
Чтобы убедиться, что всё работает именно так, как мы это задали в командном файле, можно выполнить несколько простых действий.
Создаём пользователя и добавляем его в нашу закрытую группу:
$ sudo usermod -a -G securedgroup winston
Пользователя у нас зовут, как пачку сигарет (или премьер-министра Британии).
Делаем для Уинстона пароль:
$ sudo smbpasswd -a winston
После этого нам предложат ввести новый пароль, чтобы зайти заново под только что созданным аккаунтом. Не забудьте после этого сделать перезагрузку. Теперь вы знаете, как настроить сервер через Самбу в Убунту.
Конечно, возможности Samba не исчерпываются только созданием простых папок. Но эти простые инструкции и примеры показывают, что можно сделать при помощи этой программы. Это будет первым шагом к пониманию сути серверных ПК и их управления.