Не работает samba linux
Иногда нужно очень быстро на сервере настроить файловую шару и открыть на нее доступ. При этом нет необходимости городить какие-то сложные конфигурации, права доступа или что-то еще. Нужен просто оперативный доступ к информации без лишних вопросов.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .Мне, к примеру, недавно подобное понадобилось, чтобы открыть доступ к резервным копиям, которые хранились на сервере. Самому разбираться и искать информацию не хотелось, нужно было быстро дать человеку доступ на чтение, чтобы он сам нашел все, что ему нужно.
Я не буду специально оперировать версиями операционных систем. У самбы конфиги одинаковые почти везде, где мне приходилось с ними работать, тем более в самых простых конфигурациях.
Итак, устанавливаем самбу любым подходящим способом для вашей операционной системы. Конфигурации справедливы для 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. А часто сложнее и не надо. Для какой-нибудь файловой помойки подойдет самый последний вариант.
Все привет появилась такая проблема в операционной системе linux mint 19 не работает samba в этой статье разберем настройку и установку samba а также рассмотрим несколько ошибок при которых не запускается samba .
Установка и настройка Samba на Linux Mint 19
Чтобы установить Samba на Linux Mint, войдите в командную строку и введите следующую команду:
Введите свой пароль для аутентификации, и apt загрузит и установит Samba и его вспомогательные утилиты для вас. Главное, что нужно знать о Samba, заключается в том, что он хранит собственный набор учетных записей пользователей, отдельно от основных учетных записей, в файле / etc / samba / smbpasswd. Это означает, что вам нужно создать отдельный пароль Samba для каждого пользователя, которому вы хотите получить доступ к общим папкам. Вы создаете этот пароль, используя команду smbpasswd. Вот как должна выглядеть команда для создания учетной записи Samba для учетной записи пользователя, называемой camalas:
sudo smbpasswd -a camalas
Обязательно дайте учетной записи Samba Camalas надлежащим образом надежный пароль (включая прописные, строчные, пунктуационные и цифры). Как только будет создан пароль camalas, следующим шагом будет создание каталога для ее совместного использования. Начните с создания папки с именем «test» в папке camalas, которую мы будем использовать для нашей первой общей папки:
mkdir / home / camalas / test
(ПРИМЕЧАНИЕ. НЕ используйте sudo для создания папки, потому что тогда владелец и группа будут установлены как «root», что означает, что вы не сможете получить доступ к папке, используя ваше имя пользователя и пароль Samba.)
Следующим шагом будет отредактировать файл /etc/samba/smb.conf, основной файл конфигурации для Samba. Как всегда, сделайте безопасную резервную копию исходного файла smb.conf в домашней папке, если вы сделаете ошибку:
Теперь используйте vi для редактирования файла /etc/samba/smb.conf:
sudo vi /etc/samba/smb.conf
Файл smb.conf длинный и довольно сложный, но для целей этой демонстрации вы можете игнорировать большинство из них. Нажмите до самого конца файла и вставьте этот текст:
path = /home/camalas/test
available = yes
valid users = camalas
read only = no
browseable = yes
public = yes
writable = yes
(Между строками не должно быть пробелов, и также обратите внимание, что должно быть одно пространство как до, так и после каждого из равных знаков.)
Вот что означают некоторые из наиболее важных параметров конфигурации.
test - дает имя файла.
path - указывает местоположение папки для совместного использования.
available - указывает, что общий доступ к файлам доступен для клиентов в сети.
valid users - указывает пользователям, которым разрешен доступ к файловому ресурсу. В этом случае мы установили его так, чтобы доступ к нему мог получить только учетная запись camalas. Вы можете добавить дополнительные учетные записи здесь, если хотите.
read only - указывает, не разрешается ли клиентам писать в общий ресурс файла.
writable - указывает, что данные могут быть записаны в общий ресурс файла.
Настройки, указанные выше, будут совместно использоваться тестовой папкой, которую мы создали ранее, и даем имя пользователя camalas и только имя пользователя camalas для чтения и записи в папку. После ввода изменений сохраните smb.conf, выйдите из vi и перезапустите Samba с помощью этой команды:
sudo samba restart
(Это заставит Samba перезагрузиться, перечитав файлы конфигурации и активировав только что созданную вами.) После перезапуска Samba используйте эту команду, чтобы проверить smb.conf для любых синтаксических ошибок:
sudo testparm
Если вы передадите команду testparm, Samba должна работать.
Linux mint 19 не работает samba
Решение. Переустановил все пакеты, относящиеся к самбе заново, и выполнил Код: sudo touch /etc/libuser.confкак посоветовал fisher74. Не знаю, что именно из этого помогло, но теперь графический интерфейс запускается. Кстати, libuser.conf пустой.
Проблема. Не стартует smbd При проверке статуса пишет:smbd service smb status smbd is dead, but stale PID file exists
Решение. Уберите passdb backend из параметров.
Проблема. Не обнаруживается принтер в сети
Решение . Запустил компьютер с живой загрузочной версией Mint 18.3. Вся работа в сети, обнаружение принтера работало, поэтому я скопировал файл smb.conf из папки / etc / samba. Затем перезагрузили установленный Mint 19 (где обнаружение сети / принтера не сработало) и заменил файл /etc/samba/smb.conf версией, скопированной с Linux mint 18.3. Затем я перезагрузил систему. При перезагрузке обнаружение сетевого принтера работало, но просмотр файлового менеджера не выполнялся. Затем я добавил протокол клиентского интерфейса max = NT1 после того, как WORKGROUP = WORKGROUP снова перезагрузил систему, и все сработало, включая просмотр файлового менеджера.
Samba позволяет настроить файловое хранилище различных масштабов — от малых офисов для крупных организаций. В данной инструкции мы рассмотрим процесс настройки файлового сервера. Сначала мы выполним установку и базовую настройку с предоставлением гостевого доступа. После будет приведены примеры разграничения доступа по пользователям, группам и пользователям Active Directory.
Подготовка сервера
1. Время
Для корректного отображения дат, необходимо позаботиться о синхронизации времени. Для этого будем использовать демон chrony. Установим его:
apt-get install chrony
Разрешим автозапуск сервиса:
systemctl enable chrony
2. Брандмауэр
По умолчанию, в системах на базе Debian брандмауэр разрешает все соединения. Но если в нашем случае мы используем брандмауэр, необходимо открыть порты:
iptables -I INPUT -p tcp --dport 445 -j ACCEPT
iptables -I INPUT -p udp --dport 137:138 -j ACCEPT
iptables -I INPUT -p tcp --dport 139 -j ACCEPT
* где порт 445 используется для samba, а порты 137, 138 и 139 — для работы NetBIOS (использование имени компьютера для доступа).
apt-get install iptables-persistent
Установка и запуск Samba
Установка выполняется из репозитория одной командой:
apt-get install samba
Разрешаем автостарт сервиса:
systemctl enable smbd
И проверим, что сервис запустился:
systemctl status smbd
Проверяем, что сервер самба позволяет к себе подключиться. Для этого можно с компьютера обратиться к серверу по SMB, например, на компьютере с Windows это можно сделать из проводника, прописав путь к серверу с двух слэшей:
* в данном примере мы подключаемся к серверу Samba с IP-адресом 192.168.1.15.
Если мы настроили сервер правильно, система откроет пустую папку. На данном этапе проверка закончена и мы можем переходить к созданию первой шары.
Создание первой шары и предоставление к ней гостевого доступа (анонимного)
Разберем самый простой пример предоставления доступа к папке — анонимный доступ всем пользователям без запроса пароля.
Открываем на редактирование конфигурационный файл samba:
И добавляем настройку для общей папки:
[Общая папка]
comment = Public Folder
path = /data/public
public = yes
writable = yes
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
- [Общая папка] — имя общей папки, которое увидят пользователи, подключившись к серверу.
- comment — свой комментарий для удобства.
- path — путь на сервере, где будут храниться данные.
- public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
- writable — разрешает запись в сетевую папку.
- read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
- guest ok — разрешает доступ к папке гостевой учетной записи.
- create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются указанные права. В нашем примере права будут полные.
Создаем каталог на сервере и назначим права:
mkdir -p /data/public
chmod 777 /data/public
Применяем настройки samba, перезагрузив сервис:
systemctl restart smbd
Пробуем подключиться к папке. Мы должны зайти в нее без необходимости ввода логина и пароля.
Доступ к папке по логину и паролю
Теперь создадим каталог, в который вход будет разрешен только авторизованным пользователям.
Открываем конфигурационный файл samba:
Добавляем настройку для новой папки:
[Папка сотрудников]
comment = Staff Folder
path = /data/staff
public = no
writable = yes
read only = no
guest ok = no
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
* эти настройки, во многом, похожи на те, что использовались в примере выше. Вот основные различия:
- path = /data/staff — используем новый путь до папки.
- public = no — запрещаем публичный доступ.
- guest ok = no — не разрешаем гостевое подключение.
Создаем каталог для новой папки:
Задаем права на созданный каталог:
chmod 777 /data/staff
Создаем пользователя в системе Linux:
* где staff1 — имя пользователя.
Задаем пароль для пользователя:
Теперь создадим пользователя в samba:
smbpasswd -a staff1
systemctl restart smbd
Пробуем зайти на сервер — общую папку мы должны открыть без авторизации, а при попытке открыть папку сотрудников должно появиться окно ввода логина и пароля.
Если мы авторизованы на компьютере, с которого пытаемся подключиться к серверу, под той же учетной записью, что создали для доступа к папке, samba может и не потребовать аутентификации.
Доступ к папке определенным пользователям и группам
Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей.
Открываем конфигурационный файл samba:
Добавляем настройку для новой папки:
[Приватная папка]
comment = Private Folder
path = /data/private
public = no
writable = no
read only = yes
guest ok = no
valid users = admin, staff2, staff3, @privateusers
write list = admin, staff2
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
inherit owner = yes
* стоит обратить внимание на следующие настройки:
- path = /data/private — используем новый путь до папки.
- writable = no и read only = yes — в данном примере мы разрешим запись в каталог только некоторым пользователям. Поэтому общие настройки, разрешающие запись в папку, должны быть запрещены.
- valid users — список пользователей, которым разрешено подключаться к каталогу. В данном примере разрешения работают для пользователей admin, staff2 и staff3, а также для всех, кто входим в группу privateusers.
- write list — список пользователей, которые имеют доступ к папке на чтение и запись. В данном примере мы разрешаем это только для пользователей admin и staff2.
- inherit owner — опция позволяем включить наследование владельца при создании папок и файлов.
* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.
Создаем каталог для новой папки:
Задаем права на созданный каталог:
chmod 777 /data/private
Для применения настроек перезапускаем samba:
systemctl restart smbd
Создать группу пользователей можно командой:
Добавить ранее созданного пользователя в эту группу:
usermod -a -G privateusers staff1
Проверяем возможность работы с новым каталогом.
Сетевая корзина
При удалении файлов из общей папки, данные удаляются навсегда. Но мы можем настроить сетевую корзину — скрытый каталог, в который будут перемещаться удаляемые с самбы объекты.
Открываем конфигурационный файл:
[Recycle]
comment = Snap Directories
path = /data/recycle
public = yes
browseable = yes
writable = yes
vfs objects = recycle
recycle:repository = .recycle/%U
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 0
recycle:exclude = *.tmp,
- vfs objects = recycle — использовать подсистему recycle.
- recycle:repository — где хранить удаленные объекты. В данном примере удаленные файлы попадут в скрытый каталог .recycle к котором создастся каталог с именем пользователя, удалившего файл или папку.
- recycle:keeptree — удалять объекты с сохранение дерева каталогов.
- recycle:touch — изменить ли дату изменения файла при его перемещении в корзину.
- recycle:versions — при удалении файлов с совпадающими именами, добавлять номер версии.
- recycle:maxsize — не помещать в корзину файлы, размер которых больше заданного параметра (в байтах). В данном примере, помещать файлы любого размера.
- recycle:exclude — исключить файлы.
- recycle:exclude_dir — исключить каталог.
Создаем каталог и задаем права:
chmod 777 /data/recycle
systemctl restart smbd
Пробуем зайти в сетевой каталог Recycle и создать, а после удалить файл. Он должен оказаться к скрытой папке .recycle.
Для автоматической чистки сетевой корзины можно создать скрипт:
/usr/bin/find $recyclePath -name "*" -ctime +$maxStoreDays -exec rm <> \;
* в данном скрипте мы ищем все файлы в каталоге /data/recycle/.recycle, которые старше 30 дней и удаляем их.
Разрешаем запуск скрипта:
chmod +x /scripts/cleanrecycle.sh
Создаем задание в планировщике:
0 5 * * * /scripts/cleanrecycle.sh
* в данном примере мы будем запускать скрипт по очистке сетевой корзины каждый день в 05:00.
Подключение к шаре
Теперь разберем примеры подключения к нашим шарам из разных систем.
Windows
Для разового подключения можно использовать проводник, прописав в нем адрес сервера через косые линии:
Для подключения сетевого диска, который будет автоматически создаваться при запуске системы, в проводнике сверху нажимаем Простой доступ - Подключить как диск:
В открывшемся окне прописываем путь до сетевой папки и выбираем имя диска:
Сетевой диск настроен.
Но мы может сделать те же действия из командной строки:
net use x: \\samba.dmosk.local\AD ACL /persistent:yes
* где x: — имя сетевого диска; \\samba.dmosk.local\AD ACL — путь до сетевого каталога; persistent:yes — указывает на то, что нужно восстанавливать данный диск каждый раз при входе в систему.
Linux
Монтирование
В Linux мы можем монтировать удаленный каталог с помощью команды mount, например:
mount -t cifs "//192.168.1.15/ad" /mnt -o user=dmosk
* где 192.168.1.15 — IP-адрес сервера; mnt — каталог, куда монтируем сетевую шару; dmosk — пользователь, под которым выполняем подключение к сетевому каталогу.
** в систему должен быть установлен пакет cifs-utils.
Подробнее, процесс монтирования описан в инструкции Как в Linux монтировать шару CIFS.
SMB Browser
Также мы можем увидеть содержимое удаленных папок на samba при помощи клиента smb. Для начала установим данного клиента:
а) на Red Hat / CentOS / Fedora:
yum install samba-client
б) на Debian / Ubuntu / Mint:
apt-get install samba-client
После вводим команду:
smbclient -L 192.168.1.15 -U [email protected]
* где 192.168.1.15 — сервер samba, к которому мы пытаемся подключиться; [email protected] — учетная запись, под которой выполняется подключение.
. мы получим список каталогов, которые расшарены на сервере.
Также мы можем подключиться к конкретной папке, например:
smbclient \\\\192.168.1.15\\ad -U [email protected]
Мы подключимся клиентом samba — можно выполнить запрос на показ содержимого:
Или полный список возможных команд:
Некоторые опции Samba
Рассмотрим некоторые полезные опции, которые могут пригодится при настройке Samba.
1. hosts allow
Параметр задает список разрешенных хостов или сетей, с которых можно подключаться к серверу. Если его прописать в секцию с настройкой шары, то он будет действовать только для нее, если прописать в [global], то для всех общих папок.
Пример использования параметра.
hosts allow = comp1, 192.168.1., 192.168.160.0/255.255.252.0
* в нашем примере мы разрешим доступ только для компьютера comp1, компьютеров из сетей 192.168.1.0/24 и 192.168.160.0/22.
2. hosts deny
Параметр аналогичный hosts allow, только он наоборот — запрещает доступ для хостов и сетей. Например:
hosts deny = comp2, 192.168.2., 192.168.164.0/255.255.252.0
hosts deny = ALL EXCEPT 192.168.3.
3. interfaces
По умолчанию samba использует все сетевые интерфейсы, кроме локальной петли (127.0.0.1). Параметр interfaces позволит указать, на каком сетевом адаптере файловый сервер должен принимать запросы. Пример:
interfaces = ens32 192.168.1.15/24 192.168.2.15/255.255.255.0
4. Force User/Group
Опции force user и force group позволяют задать пользователя и группу, от которых будет работать подключение пользователя к samba. Параметр может оказаться полезным для создания шары из каталога с уже назначенным владельцем, которого мы не хотим менять.
Прописывается для шары:
force user = apache
force group = apache
* данная настройка позволит подключаться к шаре под пользователем apache.
Пожалуй нет ни одного офиса, в котором не применялись бы общие ресурсы локальной сети, будь то папки или принтеры. Крупные и средние компании используют возможности 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:
Удаляем все строки из файла. Вставляем следующие:
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[public]
path = /media/samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
[private]
path = /media/samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes
Сохраняем используя сочетание 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” @ (“собака”).
Важно! Имя директории общего доступа, отображаемое пользователям, равно имени секции в которой оно описано.
Читайте также: