Как расшарить папку в linux

Обновлено: 04.07.2024

Если вы администрируете какой-либо сервер, у вас может возникнуть необходимость создать общую папку, к которой будут иметь доступ все пользователи на сервере. Например, необходимо, чтобы они имели возможность создавать в ней файлы и все эти файлы были доступны всем пользователям на сервере.

В этой небольшой статье мы рассмотрим как настраиваются общие папки Linux с помощью стандартной системы полномочий Linux.

Общие папки в Linux

Как вы знаете, в Linux есть своя система полномочий для файлов и папок, в которой можно разрешить чтение, запись и выполнение для пользователя владельца, определённой группы пользователей и всех остальных. Если вы забыли как это работает ознакомьтесь со статьей Права доступа к файлам и Группы пользователей Linux.

Сначала давайте создадим саму папку:

sudo mkdir /var/share

Если надо разрешить доступ к папке всем, то достаточно установить такие права:

sudo chmod ugo+rw -R /var/share

sudo chmod 766 -R /var/share


Эти две команды аналогичны. Они включают для владельца файла полный доступ к нему, а для группы и всех остальных - только чтение и запись. Опция -R позволяет применить изменения рекурсивно ко всем подпапкам и файлам в этом каталоге. Для того чтобы разрешить вообще всё используйте маску прав 777:

sudo chmod 777 -R /var/share


Теперь все пользователи смогут не только создавать и читать файлы в этой папке, но и выполнять их.

Если же надо чтобы папка была доступна только нескольким пользователям, надо объединить их в группу. Например, в группу project. Если такой группы не существует, создайте её:

sudo groupadd project

Для добавления пользователя в группу используется команда usermod. Например, для пользователей losst и losst1 команды будут выглядеть так:

usermod -aG project losst
usermod -aG project losst1


Затем группу папки надо изменить на project. Для этого можно воспользоваться командой chgrp:

sudo chgrp project -R /var/share

Осталось сделать права для этой папки. Кроме стандартных прав, которые разрешают чтение, запись и выполнение файлов для группы project нам необходимо установить SGID бит. Если этот флаг устанавливается для файла, то он позволяет выполнять этот файл с правами группы файла, но если он устанавливается для папки, то все файлы и папки, создаваемые в ней будут получать ту же группу что и у этой папки. Это как раз то, что нам надо:

sudo chmod ug+rwx -R /var/share
sudo chmod +s -R /var/share

sudo chmod 2774 /var/share


Маска прав 774 разрешает всё группе и владельцу, и разрешает только чтение всем остальным. Можно запретить им и чтение заменив 4 на 0, получится 770. После этого оба пользователя losst и losst1 смогут создавать файлы в этой папке, а также оба получат доступ к созданным файлам.


Как видите всё очень просто. А если вам надо создать общую папку, доступную по сети посмотрите на статью про настройку NFS или Samba.

Samba - это программное обеспечение для организации обмена файлами и работы с общими ресурсами между компьютерами под управлением Linux/Unix и операционной системой Windows. Samba состоит из клиентской и серверной части. Клиентская часть позволяет получить доступ к сетевым папкам и ресурсам Windows, а серверная, в свою очередь, открывает общий доступ к папке Ubuntu для других машин, в том числе и Windows.

В этой небольшой инструкции будет рассмотрена простейшая настройка Samba Ubuntu 18.04, а также как настроить общий доступ к папке Ubuntu с несколькими уровнями привилегий.

Мы создадим три общие папки с различными уровнями разрешений. Папку с анонимным доступом, с доступом для пользователей, входящих в определенную группу и доступом лишь для определенного пользователя.

Получить доступ к расшаренным папкам в Ubuntu смогут как Linux так и Widnows машины, с помощью любой программы для работающей по протоколу SMB.

Подготовка Windows

Для того чтобы все работало правильно, все машины должны состоять в одной рабочей группе, указанной на сервере Samba. По умолчанию для Windows, Linux и MacOS рабочая группа называется Workgroup. Чтобы узнать какая рабочая группа используется в вашей Windows откройте командную строку (Win+R, затем cmd) и выполните вот такую команду:

net config workstation

share1

share

Нужный нам параметр мы видим в строке Домен рабочей станции. Это и есть рабочая группа.

Теперь, если у компьютера с Samba сервером в вашей сети будет постоянный IP адрес желательно ввести его в файле hosts. Для этого запустите командную строку от имени администратора:

share3

И выполните команду:

В открывшимся файле добавьте строчку с IP адресом компьютера, на который будет установлен Samba:

Теперь можно переходить к вопросу как расшарить папку Ubuntu.

Настройка Samba в Ubuntu

Начнем, как обычно, с установки. Установка Samba Ubuntu вместе со всеми необходимыми компонентами выполняется командой:

sudo apt-get install -y samba samba-common python-glade2 system-config-samba


Когда все будет установлено, можно переходить к настройке. Сначала создайте резервную копию оригинального файла конфигурации Samba:

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

После создания резервной копии, создайте свой файл конфигурации, этой командой:

sudo vi /etc/samba/smb.conf

Сначала укажем глобальные настройки файлового сервера. Для этого вставьте в файл такие строки:

[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
netbios name = Ubuntu Share
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
passdb backend = tdbsam
unix password sync = yes
passwd program = /usr/bin/passwd %u
pam password change = yes
map to guest = bad user
usershare allow guests = yes

Рассмотрим подробнее что значат эти строки.

Когда завершите создание конфигурационного файла, переходим к вопросу как расшарить папку Ubuntu для Windows.

Общий доступ к папке Ubuntu

Сначала давайте создадим общую папку доступную всем. То есть с анонимным доступом, без авторизации samba.

Создайте папку, к которой будем открывать доступ, например:

sudo mkdir -p /samba/allaccess

После того как папка создана, нужно сделать для нее правильные права доступа. Следующие команды разрешают доступ к папке для всех и делают владельцем nobody:

cd /samba
sudo chmod -R 0755 allaccess
sudo chown -R nobody:nogroup allaccess/

Следующим шагом будет описать папку allaccess в файле настройки samba:

[allaccess]
path = /samba/allaccess
browsable = yes
writable = yes
guest ok = yes
read only = no

Теперь ваш конфигурационный файл должен выглядеть вот так:


Рассмотрим подробнее опции, которые были здесь использованы:

  • path - путь к папке, которую нужно расшарить;
  • browsable - будет ли папка отображаться в списке доступных шар;
  • writable - будет ли папка доступна для записи;
  • read only - папка доступна только для чтения;
  • guest ok, public - будет ли разрешен гостевой доступ;
  • only guest - если установлено yes, то папка будет доступна только гостям;
  • hosts allow - ip адреса, с которых можно получить доступ к этому серверу;
  • valid users - по умолчанию могут авторизоваться все пользователи, если в этом параметре передать список пользователей, то авторизоваться смогут только они;
  • create mask - маска прав для создаваемых файлов.

Чтобы применить изменения, перезапустите сервер Samba:

sudo systemctl restart samba

Настройка Samba Ubuntu для анонимного доступа завершена. Теперь вы можете проверить доступность общей папки allaccess из Windows, для этого нажмите Win+R и выполните:

share5

Вы увидите нашу папку. Если не увидите, проверьте еще раз конфигурацию. Доступ к папке можно получить без авторизации samba. Настойка Samba шары с доступом без авторизации завершена.

Также вы можете подключится к этому серверу из Linux с помощью Nautilus для этого достаточно набрать адрес smb://ip-сервера, в разделе другие места:


Защищенный общий доступ к папке Ubuntu

Чтобы расшарить папку для Windows Ubuntu, к которой будут иметь доступ только пользователи из определенной группы, создадим отдельную папку и опишем ее в файле настройки Samba в Ubuntu.

Сначала создаем папку:

sudo mkdir -p /samba/allaccess/secured

Дальше установим такие права, чтобы доступ к папке могли получить только пользователи из группы securegroup.

sudo addgroup securedgroup

cd /samba/allaccess
$ sudo chown -R richard:securedgroup secured
$ sudo chmod -R 0770 secured/

Последний шаг, добавляем настройки в конфигурационный файл samba:

sudo vi /etc/samba/smb.conf

[secured]
path = /samba/allaccess/secured
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes


Перезапустите сервер Samba. Теперь доступ к общей папке в Ubuntu могут получить только пользователи группы securegroup.

Чтобы проверить как это работает добавим пользователя richard в нашу группу:

sudo usermod -a -G securedgroup richard

Чтобы пользователь мог работать с расшаренными папками в Ubuntu, он должен быть в базе данных Samba. Поэтому создадим для него пароль Samba:

sudo smbpasswd -a richard

После ввода команды вам будет предложено ввести новый пароль. Для применения изменений не забудьте перезагрузить файловый сервер.

Если вы хотите чтобы общий доступ к папке Ubuntu мог получить доступ только определенный пользователь замените в конфигурационном файле @securegroup на имя пользователя. Также можно указать несколько пользователей через запятую или несколько групп.

Выводы

Вот и все. Теперь вы знаете как правильно выполняется установка Samba на Ubuntu 18.04, а также ее настройка. Кроме ручного редактирования конфигурационных файлов, для того чтобы расшарить папку в Ubuntu можно воспользоваться графической утилитой system-samba-config. Но после того как мы разобрали все низкоуровневые настройки, с этой утилитой вы справитесь без труда.




Оцените статью:

(22 оценок, среднее: 4,68 из 5)

Об авторе

65 комментариев

о, буду пробовать

Вы думаете основная масса поняла? Расскажите лучше как пользоваться конфигурационной оболочкой. Кстати она в 16.04 даже не запускается))

сроду линухи не настраивал, но по этой статье всё настроил.
хотя возникли и проблемы:
1. опечатки в конфиге))
2. множественный доступ из Виндовс к линукс.
вроде доступ настроен, а доступа к папке нет!
но разобрался, возможно стоит добавить об этом статью.
в Windows приходится сбрасывать подключения
net use * /delete

Присоединяюсь к Vladimir. В Xubuntu через GUI все настроил без проблем, в Ubintu 16.04.01 это просто какой-то геморрой, оболочка графическая не запускается, через терминал ничего не выходит. Блин, система, созданная для серваков, не может папку в два клика расшарить по локалке. Слов нет, одни маты.

Короче, сам спросил — сам отвечаю. Метод лечения графической оболочки Samba в Ubuntu 16.04 следующий:

$ gksu system-config-samba (при необходимости команду gksu устанавливаем)
2. Пишет, что отсутствует файл. Создаем его командой

$ sudo touch /etc/libuser.conf
3. Запускаем снова

После этого все работает, только если пользуете файервол, не забудьте в Gufw установить разрешения для Samba.

Alex, СПАСИБО Вам огромнейшее! Тоже не хотела графическая оболочка работать на 16.04 Ubuntu Mate . Онатам по умолчанию даже не была установлена, а после установки не хотела запускаться. Ну, и автору еще раз спасибо, что поднял данную тему.

Alex Огромное спасибо.Samba с помощью GUI настраивается в три щелчка.

Тру система для серваков Ред Хот или Центос и даже супер пупер ламерская Убунту ну никак не проиграет, что в два клика не шариться папка. Хотя б из соображений сякой-такой стабильности и априори безопасности. Сервак 'то область отвественности, которая измерятся, иногда, в сотни долларов в секунуду. И уж никак не потому, что там папки разшарен'. Ваш взгляд на вещи просто дичь, уважаем'й с'р. Сотрите Ваш пост на уважаемом рессурсе.

Такая же проблема, согласен с Alex.

Сервер настроил, но Win 10 Pro не видит его и в ответ на команду: srvr1allaccess

Сервер Самба настроил и всё по инструкции сделала, но Win 10 отвечает на команду : "srvr1allaccess" "Не найдено сетевое имя" Подскажите, что делать.

to Юрий: «srvr1allaccess» это путь к папке для примера:), пропиши именно свой. и в samba.conf, тоже все свое, удачи!

имя твоего компа с убунтуимя твоей шары.

К сожалению не работает
была создана папка public, соответственно указан путь такой же с учетом регистра, сервер перезапущен. Результат нулевой.

Спасибо, самая понятная статья по самбе,
хорошая идея выделять команды окнами контрастного цвета,
новичку легко разобраться.

Ubuntu 16 это еще тот гемар. Сижу пока на 14той пока радует хотя и не всё.

Хорошо бы увидеть у вас хорошую статью по установке PDC (BDC) на Ubuntu 16.04.

Рабочий конфиг Самбы для доступа по паролю:
[share]
path = /mnt/shara
valid users = @users
force group = users
create mask = 0660
directory mask = 0771
writable = yes
browseable = yes

Ну и зачем тут еще Ваш, для Ваших условий конфиг? Статья и так кривая (привязанная к конкретным папкам, именам), а Вы еще сильней запутать народ хотите? Кстати, создалось такое впечатление, что это пeреревод с какого-то импортного сайта (имя Ричард на Руси очень не типичное). Но автору все равно спасибо, - худо- бедно после двух часового экспериментирования получилось сконфигурить для своих условий.

БОЛЬШАЯ ПРОСЬБА: сделайте что-нибудь, чтобы страницы при печати (или при сохранении в PDF) имели удобочитаемый вид. Некоторые статьи удобно было бы сохранять в виде инструкций. Но в том виде, как они сохраняются (результат могу выслать) - пользоваться ими НЕВОЗМОЖНО. Хотя очень хочется.

Посмотрю что можно сделать.

Спасибо все работает, очень интересная статья еще бы добавить Информативности по больше ))) а так спасибо за проделанную работу

Первое:ваш сайт НЕВЕРОЯТНО ТЯЖЕЛЫЙ - современный комп на 64 бит проце и неплохой оперативой с трудом справляется. Сайт забит по-самые помидоры - флэшем и всякой ерундой. Второе:было сделано ВСЕ как написано - результат АБСОЛЮТНЫЙ НОЛЬ. Ни Windows ни Ubuntu не соединяются,не видят и вообще ничего НЕТ. Только Samba установилась плюс - поставил графическую - более человечную среду для нее : файл конфига просто отказывался вводить первые скобки и буквы - причины неизвестны,ну и по-х. сделал это через граф-среду : НАМНОГО УДОБНЕЕ вашего долбанутого терминала(ВСЕ должно быть проще - нажал кнопку - поставил - запустил - работает,как iPhone. ).Поэтому прекратите врать, что то о чем здесь написали - работает : это всего лишь очередной развод. Теперь из-за вашей поганенькой статейки - придется ВСЮ эту ерунду как-то вычищать с компа! Лучше бы делом занимались - электричество в отсталые районы давали бы.

Возможно добавить несколько рабочих групп к папке? Как это сделать ?

Спасибо за инструкцию. Все заработало с первой попытки.

в течении 2 недель ставлю сервером 16.04 переустанавливал заново 6 раз. Настроить самбу не могу. Что удивляет - если погуглить как настроить самбу - нет одинаковых решений, даже пакеты предлагают разные. НУ решил использовать данный мануал. У меня сеть с доменом. прописал все как тут прописано по доступу ВСЕХ. Машины из домена шару видят. Зайти не могут пишут разрешение на доступ \\192.168.1.101\allaccess отсутствует.
Всю голову сломал в чем дело ? настройки проверил по буквам , все в порядке, где еще копать ? ( сервер домена win 2008 r компы клиентов win 7 - 64 )
ПОМОГИТЕ КТО НИБУДЬ .

Та же самая фигня, СТАРАЯ SAMBA на других компах (работающая давным давно) отлично работает с любыми Виндами от XP до Windows 7 и такими же старыми SAMBA-ми как и она сама - доступ полный до расшареных папок и т.д. короче все работает, НО! после версии SAMBA 2:4.1.6 а это точно про Ubuntu 16.04 в ней даже эту старую версию не вернуть, так как ее уже УДАЛИЛИ из Репозиториев, но именно она. та старая версия самая работоспособная в отличии от всех что после нее выходили. короче не работает Ubuntu 16.04 Samba - имена компов в сети видит - зайти на них не может даже если Юзернейм и Пасс прописать совершенно одинаковый везде, хорть с паролем хоть без (хотя на вышеупомянутую старую Runtu со старой самбой даже Виндовые машины заходят без паролей - так потому что настроено и так надо!) не заходят никак вообще - Окно с паролем и доменом просто перезагружается до бесконечности как будто параметры не верные были введены - короче я ТОЖЕ еще не победил этот ИДИОТИЗМ и чем дальше тем больше разочарования от Линукса. МЛЯТЬ НУ НЕ ДОЛЖНО ЛОМАТЬСЯ ТО ЧТО РАНЬШЕ РАБОТАЛО КАК ЧАСЫ. мне стыдно за профессию программист, это бег по кругу, и мне стыдно за Линукс, эти ДОЛБОЕБЫ котрые считают себя программистами которые ЛОМАЮТ с каждым годом все больше и больше просто ОПОЗОРИЛИ Линукс с ног до головы, раньше Линукс считался чуть ли не эталоном Отказоустойчивой и работоспособной системы - сейчас глюк на глюке, дырка на дырке, проблема на проблеме, дошло до того что ОДНА И ТА ЖЕ СБОРКА с одной и той же флешке установленая на ДВА разных ноутбука - НЕ ВИДЯТ ДРУГ ДРУГА никаким образом, но стоит установить какую нибудь старую версию 10 ил 12 4-5 летней давности - все впорядке с сеткой (простой одноранговой) - работает как это говорят "из коробки". Новые - НЕТ, не работают. Я знаю что это проблема чаще индивидуальная, но меня БЕСИТ что умудряются сломать ТО что раньше РАБОТАЛО как часы. Я все сказал.

map to guest = Bad User в секцию [global] - и будет гостевой доступ в новых версиях. Иначе не пустит, будет ругать за пустой или неверный (если что-то ввели) логин. Насчет user-level авторизации - для WORKGROUP сойдет вход по учетке на linux, для домена лучше изучить статью Setting up a Share Using Windows ACLs на офсайте Samba.

Сетевые папки видны, но доступа нет ни на запись, ни на чтение. Система пишет нет : Возможно у вас нет права доступа. обратитесь в администратору .
Не понятно куда копать. Уже несколько дней пытаюсь настроить.

Linuxmint 8 версии и несколько последующих, работали без проблем. 17 - 18 видит расшаренную папку но сервер не принимает пароль. Что с этим делать гугл не знает. Кругом доморощенные эксперты предлагают 10 совершенно разных способов настроить сервер и требуют конфиги. Сервер РАБОТАЕТ. Работают клиенты в Винде, даже в Андройде! Но в Linux, в этой сетевой системе, сломалось то что не должно ломатьсяю. Что читать какие логи? Как настроить клиент? Он вообще настраивается? Live дистрибутив тоже не может войти в папку. Читать 200 страничные мануалы не имею возможности, мне платят за другую работу. Если кто-то решил подобную проблему, прошу поделиться мудростью.

Мне помогло ntlm auth = yes в конфиге. А до этого выявил причину, задав log level = 2.
Причина в старом способе аутентификации WinXP:
ntlm_password_check: NTLMv1 passwords NOT PERMITTED for user

2Николай. Респектище тебе, мээээн. Большое спасибоооо. :))))) Мы весь моск сломали на тему почему после переезда на новую самбу все тачки с ХР и МФУ ("сканирование в папку smb") перестали авторизовываться по smb. Данные строчки проблему решили, всё ок. Ещё раз спасибо. С нас пыво 😉

Как подключиться к диску на Винде C: или D: c Линукса по сети? На винде нет расшариных папок, но например я с компа с виндой могу зайти на другой комп с виндовс по пути например //192.168.1.2/C$/, зная логин и пароль админа, а так же с андроида тоже захожу. А как с линукса зайти? С линуксом я только знакомлюсь. Расшаривать папки на винде не нужно, мне нужен доступ полностью к разделу диска, зная пароль админа.

Спасибо большое! Всё получилось с первого раза!
Задача: подключить диск SATA / USB 3.0 к Ubuntu и расшарить его в локальной сети, чтобы заходить с Windows7. Раньше делал общий доступ через "Общедоступная папка локальной сети"->"Опубликовать папку". Потом после переустановки Ubuntu (16.04 LTS), жмешь "Опубликовать папку"->Устанавливаешь предложенные пакеты Samba->Папка опубликована и даже в Windows7 видна, а доступа к ней нет. Chmod и chown запускал от superuser-а, но разрешения для дисков не менялись!
Решение: sudo apt-get purge samba. И дальше всё по инструкции написанной выше. Автору респект!

как добавить вторую папку?
типа
[AllAccess]
path = /media/admin/Мульт/
path = /media/admin/Фильмы/

writeable = yes
available = yes
; browseable = yes
public = yes
guest ok = yes
force user = root
force group = plugdev

Samba позволяет открывать доступ к файлам по локальной сети с компьютеров, работающих под управлением любой операционной системы. Samba также обеспечивает управление доступом к этим ресурсам используя только один конфигурационный файл. В Debian большая часть конфигурации создается автоматически, что значительно упрощает настройку сервера Samba.

Когда вы прочитаете эту инструкцию, вы будете знать как установить сервер Samba, как изменить глобальные настройки сервера Samba, как настроить новый общий ресурс, как настроить пользователя Samba и как подключиться к общей папке с другой машины.

Установка Samba в Debian 10

В Debian вы можете установить сервер Samba прямо из репозиториев. Установка выполняется с помощью одного пакета, потребуется выполнить лишь одну команду:

sudo apt install samba


Настройка Samba в Debian

Настройки Samba находятся в файле /etc/samba/smb.conf. Этот файл содержит общие настройки для Samba, а также сведения об общих ресурсах. Обычно в Debian предоставляются неплохие настройки по умолчанию, которые позволяют начать работать немедленно, что в общем не мешает взглянуть на них и внести изменения там, где это необходимо.

1. Базовые настройки

Первое что вам встретится в верхней части группы глобальных настроек - настройка workgroup. Эта опция определяет имя рабочей группы Windows, частью которой станет ваш сервер. Значение по умолчанию - WORKGROUP, так как такое же значение, по умолчанию в задано в Windows. Если вы изменяли настройки рабочей группы в Windows, измените их также и здесь.


Следующая опция позволит ограничить доступ к вашему серверу. Если вы хотите ограничить доступ к общему ресурсу по ip адресу или маске сети, уберите символ комментария в строке где находится параметр interfaces, и укажите ip адрес или диапазон IP адресов, и интерфейс к которому они могут подключаться.

interfaces = 192.168.1.0/24 eth0

Если такой метод вам не нравится, вы можете добавить параметр hosts allow, чтобы определить, клиентов, которые могут подключаться к общему ресурсу. Укажите IP-адрес или диапазоны адресов.

hosts allow = 127.0.0.1/8 192.168.1.0/24

Остальные параметры из группы глобальных настроек имеют довольно обоснованные значения по умолчанию. Вам не потребуется изменять их для того чтобы запустить свои общие ресурсы. Но не стоит ограничиваться только рассмотренными нами опциями, вы можете исследовать и другие параметры, и настраивать их по своему усмотрению. Настройка Samba Debian 10 практически завершена, осталось создать общую папку и пользователя.

2. Создание общего ресурса

В конфигурационном файле, по умолчанию, уже присутствуют несколько настроек для общих ресурсов. Они дают вам возможность настроить совместное использование домашних папок пользователей системы и принтеров. А доступ к каталогу печати уже открыт. Измените значение параметра browseable на no.

Теперь попробуйте создать свой собственный общий ресурс. Существует масса опций, которые вы можете использовать для своего общего ресурса Samba, но в этом руководстве будут рассмотрены лишь наиболее используемые из них.

Во-первых, дайте имя своему общему ресурсу, и поместите это имя в скобки.

В следующей строке напишите краткий комментарий, описывающий общий ресурс.

comment = My new share

Затем задайте путь, эквивалентный абсолютному пути к общей папке.

Выберите, будет ли папка отображаться в файловом менеджере или же ее нужно будет подключать вручную.

Хотите ли вы, чтобы пользователи имели права на запись в общий ресурс или могли подключить его только для чтения?

Смогут ли гости получить доступ к общему ресурсу? В терминах Samba гости - это анонимные пользователи, для которых не существует записи в настройках доступа к общему ресурсу. Если выразиться короче, хотите ли вы защитить общий ресурс паролем, или ограничить доступ к ресурсу только для отдельных пользователей?

Если гости не будут иметь доступ к общей папке, то у кого он будет?

valid users = имя_пользователя

Ну вот и все. Есть еще и другие опции и другие способы выполнить эти базовые шаги, но они дадут вам в итоге приблизительно тот же результат. Если вы точно знаете что вам нужно, этих опций вам будет достаточно. Если соединить все что мы написали выше - у нас получится что-то вроде этого:

[New Share]
comment = A new share
path = /home/newuser/share
browseable = yes
read only = no
guest ok = no
valid users = newuser


Сохраняем и закрываем файл. Затем перезагружаем Samba.

systemctl restart smbd

3. Создание пользователя

Для подключения к общей папке, если только вы не используете гостевой доступ, вам потребуется настроить учетные записи пользователей Samba. Это очень быстро, и потребует всего одной команды.

smbpasswd -a имя_пользователя

После этого вам будет предложено ввести пароль для этого пользователя. Это пароль, которым будут защищены доступные ему общие ресурсы.

Как подключиться к Samba

Есть несколько пакетов, которые вам понадобятся для того чтобы подключиться к общему ресурсу Samba. Установите их при помощи следующей команды.

sudo apt install samba-client cifs-utils

Теперь вы можете открыть файловый менеджер и перейти в раздел Сеть. Там вы увидите свой сервер, а также - общий ресурс, который вы только что настроили.



Выводы

Теперь вы знаете как выполняется установка Samba Debian 10 и готовы начать создавать собственные общие папки, а также настраивать к ним доступ с других компьютеров Linux. Ничего другого делать не нужно, и Samba автоматически запустится при загрузке Debian.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Этичный хакинг и тестирование на проникновение, информационная безопасность

Книга по SMB и Samba на русском языке. Оглавление

Samba — это SMB для Linux

Далее мы будем говорить про Samba, но мы затронем только вопросы SMB.

Начните с установки пакетов samba и smbclient.

В Debian, Linux Mint, Ubuntu, Kali Linux и их производных для установки samba выполните команду:

В Arch Linux, BlackArch и их производных выполните команду:

Как в Linux увидеть все компьютеры Windows с совместными ресурсами

Для показа всех совместных сетевых ресурсов Windows выполните команду:

В этой и последующих командах используется флаг -N, который означает не использовать пароль. Если же вы используете пароль, то укажите опцию -U с именем пользователя, пароль нужно будет ввести интерактивно.


В начале идёт имя рабочей группы WORKGROUP. Затем следует список компьютеров. Для тех из них, для которых удаётся получить список сетевых папок, они выводятся.

Как можно увидеть выше, для компьютера \\VYACHESLAV получен список совместно используемых ресурсов, а для компьютера \\HACKWARE-MIAL — нет. При этом если я включал на компьютере \\HACKWARE-MIAL поддержку протокола SMB 1, а при запуске команды указывал хоть какое-то имя пользователя, например:

либо просто запускал smbtree с правами администратора:

то мне удавалось получить список файлов также и для компьютера \\HACKWARE-MIAL. UDP: видимо, такое поведение в том, что совпадали имена польозвателей на компьютерах с Linux и Windows.

Как в Linux вывести доступные по сети ресурсы (совместные папки и принтеры Windows)

Предыдущая команда показала нам несколько компьютеров с сетевыми папками. Предположим, меня интересует компьютер \\HACKWARE-MIAL, чтобы вывести его сетевые папки я запускаю команду вида:

в моём случае это:


Кстати, вместо имени компьютера можно указать IP адрес.

В полученном выводе Share и Users являются общими сетевыми папками.

исчезнут, если создать файл /etc/samba/smb.conf.

пропадут, если на компьютере с сетевой папкой включить поддержку протокола SMB1.

Как я уже говорил чуть выше, флаг -N означает не использовать пароль. Если же вы используете пароль, то укажите опцию -U с именем пользователя, пароль нужно будет ввести интерактивно.

Как и для smbtree, для smbclient необязательно использовать sudo, но без sudo для некоторых компьютеров программа срабатывает нормально, а для некоторых завершается ошибкой:

Как подключиться к сетевой папке Windows из Linux

Программа smbclient умеет не только показывать общие ресурсы, но и имеет интерактивный режим, во время которого можно копировать файлы между локальным компьютером и общей папкой, удалять файлы, создавать папки и переходить по каталогам, просматривать содержимое файлов и их свойств и выполнять другие действия в файловой системе совместно используемой сетевой папки.

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

Для входа в интерактивный режим запустите команду вида:

Например, я хочу подключиться к компьютеру //HACKWARE-MIAL/ и выполнить действия с файлами в сетевой папке Share, тогда моя команда следующая:

Если вы хотите, чтобы при подключении была изменена текущая рабочая директория в сетевой папке, то есть чтобы была открыта другая папка, то используйте опцию -D. К примеру, я хочу подключиться к папке NewFolder, тогда команда следующая:

Подключение к SMB папке, требующий авторизации

К примеру, на компьютере //HACKWARE-MIAL/ имеется сетевая папка ShareRestricted, права на просмотр которой есть у пользователя ShareOverlord. Для просмотра шары, защищённой паролем, нужно использовать команду вида:

В моём случае это команда:


Команды SMB в Linux

Доступны следующие интерактивные команды:

Выводит все доступные команды:

Для показа справки по определённой команде, выполните

Переход в другой каталог (смена текущей рабочей директории) на удалённой системе:

Переход в другую директорию на локальной системе:

Удаление файла в шаре:

Имеется псевдоним этой команды:

И ещё одна команда со схожей функцией:

Эта команда рекурсивно удалить все совпавшие с шаблоном имени файлы и директории.

Показ файлов и папок в текущей папке:


Имеется псевдоним этой команды:

И ещё один, даже более короткий псевдоним:

Для повторного скачивания файла:

Для скачивания всех файлов, чьём имя совпадает с шаблоном:

Например, чтобы скачать все файлы с файловым расширением .exe нужно запустить такую команду:

Для каждого файла, совпавшего с шаблоном, будет выполнен запрос на скачивание. Если вы действительно хотите его скачать, то нажмите клавишу «y»:

Также имеется команда newer, которая скачивает файлы (mget), которые новее, чем указанный локальный файл. Используется она так:

Выгрузка файла на общую папку:

Следующая команда скопирует локальный файл в шару:

Повторная закачка файла:

Для закачки всех файлов, чьём имя совпадает с шаблоном:

К примеру, чтобы закачать в шару все файлы (из локальной текущей рабочей директории), которые имеют расширение *.cap, нужно запустить команду:

Для каждого файла, совпавшего с шаблоном, будет выполнен запрос подтверждения, если вы действительно хотите его закачать, то нажмите клавишу «y»:


Включение и отключение рекурсии

Можно включать и отключать рекурсивный режим для mget и mput.

Показ всей возможной информации о файле:


В выводимой информации можно увидеть альтернативное (DOS) имя, временные метки (дата создания, доступа, записи и изменения файла), атрибуты.

Копирование файла на сервере:

Создание директории:

Удаление директории:

Удаление файлов

Следующая команда удалит все совпавшие с МАСКОЙ файлы:

Псевдоним команды для удаления файлов:

С помощью команды wdel можно удалить все совпавшие файлы по подстановочным символам:

Переименование файлов:

Ссылки

Создание жёсткой ссылки Windows:

Создание жёсткой ссылки UNIX:

Создание символьной ссылки UNIX:

Выход с сервера:

Вывод истории команд текущей сессии:

Просмотр содержимого текстового файла:

Показ текущей рабочей директории:

Другой вариант показа текущей рабочей директории — это команда cd без аргументов:

Создание и извлечение архивов tar

Программа tar используется для объединения нескольких файлов в один файл. Объединение происходит без сжатия. Для того, чтобы несколько файлов из сетевой папки объединить в архив и скачать на локальную систему запустите команду вида:

К примеру, я хочу скачать файлы all-databases.sql besside.log ChromeSetup.exe из совместной папки и объединить их в архив all.tar, тогда моя команда следующая:

Для установления режимов tar используется команда

Установка таймаута операций:

Таймаут устанавливается в секундах и по умолчанию равен 20.

Установка нового соединения:

Закрытие сессии, выход:

Вывод списка открытых подключений:

Отображение текущего активного подкючения:

Изменение удалённой директории (переход на одну папку выше):

Выполнение команд в локальной системе:

Чтобы команда выполнялась не на удалённой системе, а на локальной, поставьте перед ней ! (восклицательный знак), например^

Автоматическое выполнение команд в сетевой папке Windows

Необязательно каждый раз вводить все команды вручную — вы можете перечислить их через запятую и указать в двойных кавычках с опцией -c, например:

Как смонтировать общую папку Windows/Samba в Linux

Сетевая папка Windows может быть доступна в файловых менеджерах Linux как любая другая локальная папка. Для этого её нужно смонтировать. После монтирования не придётся использовать консоль для просмотра списка файлов и скачивания или закачивания файлов.

Начните с установки пакета cifs-utils.

В Debian, Linux Mint, Ubuntu, Kali Linux и производных выполните:

В Arch Linux, BlackArch и производных выполните:

Предыдущие команды smbtree и smbclient понимали имена компьютеров Windows, такие имена как HACKWARE-MIAL. Монтирование выполняется с помощью команды mount, которая такие имена не умеет обрабатывать без помощи преобразования имён DNS. Поэтому при монтировании можно либо:

  1. Использовать вместо имён компьютеров IP адрес. В этом случае у компьютера с сетевой папкой должен быть постоянный (статичный) IP адрес
  2. Либо настроить преобразование имён для компьютеров Windows. Это можно сделать, например, с помощью файла /etc/hosts. Кстати, в этом случае у компьютера с общей папкой также должен быть постоянный IP адрес (смотрите Как настроить локальный DNS используя файл /etc/hosts в Linux)

В общем, в любом случае настройте в роутере или в самой Windows постоянный локальный IP.

Если вы хотите настроить преобразование имён с помощью файла /etc/hosts, то откройте его:

И добавьте туда запись вида

Например, у меня IP_АДРЕС это 192.168.0.101, а именем компьютера является HACKWARE-MIAL, тогда я добавляю следующую запись:

Пингуем по имени компьютера Windows, чтобы убедиться, что всё сработало:

Чтобы не возникало проблем с правами доступа, папка, куда монтируется шара (например, /mnt/share/), должна принадлежать текущему пользователю Linux — если вы создавали папку без sudo, то она уже принадлежит обычному пользователю. Но если вы создавали папку с sudo (например, иначе это невозможно сделать в /mnt/), то вам нужно поменять её владельца командой вида::

Например, чтобы поменять владельца папки /mnt/share/ на текущего пользователя:

Теперь для монтирования сетевой шары Windows нужно запустить команду вида:

В этой команде вы должны вставить свои значения для

Значение других элементов команды:

  • sudo — монтировать шару можно и без прав суперпользователя, но использовать опцию -o, после которой указываются опции для монтирования, можно только с правами root
  • -t cifs выбор файловой системы для монтирования
  • -o означает, что после этой опции будут перечислены опции для монтирования:
  • username=guest,password= - произвольное имя пользователя без пароля — используется для подключение к общей папки, для которой не требуется вход. Вместо этой конструкции можно указать просто guest, но в этом случае на некоторых системах всё равно запрашивается пароль. По моим наблюдениям, пароль запрашивается когда имя текущего пользователя на Linux совпадает с именем пользователя на Windows
  • uid=1000 — в качестве владельцев всех файлов в шаре будет указан текущий пользователь Linux
  • iocharset=utf8 — эта кодировка позволяет работать с именами файлов, в которых используются не только латинские буквы

К примеру, путь до сетевой шары у меня //HACKWARE-MIAL/Share, её я хочу смотрировать в папку /mnt/share, тогда команда будет следующей:

Вид сетевой папки Windows в Double Commander:


Вид сетевой папки в стандартном проводнике Linux:


Для размонтирования нужно запустить следующую команду (укажите либо точку монтирования, либо ресурс, который был смонтирован):

Напомню, что в предыдущей части я не только настроил папку для входа без пароля, но на том же самом компьютере и настроил вторую папку с именем ShareRestricted. У этой папки владелец ShareOverlord, а пароль для входа 1234. Для подключения папки, доступ к которой возможен только по паролю, используется та же самая команда, но нужно указать реальные учётные данные:

Чуть дальше очень похожий набор опций, в том числе пароль в открытом виде, мы будем использовать в файле /etc/fstab для настройки автоматического монтирования сетевой папки. Файл /etc/fstab доступен для чтения всем а, следовательно, также доступен всем ваш пароль от Windows в нём. Чтобы обойти эту проблему, можно использовать файл с учётными данными. Это файл содержит только имя пользователя и пароль.

Используя текстовый редактор, создайте файл с учётными данными для входа на ваш удалённый сервер:

В этот файл введите имя пользователя и пароль от Windows:

В моём примере это:

Сохраните файл и закройте редактор.

Измените права доступа к этому файлу, чтобы предотвратить нежелательный доступ к вашим учётным данным:

Посмотрите абсолютный путь до этого файла:

В моём случае абсолютный путь:

Теперь вместо двух опций:

нужно использовать одну опцию, в качестве значения которой нужно указать абсолютный путь до файла с логином и паролем:

Моя команда стала выглядеть так:

Настройка автоматического монтирования сетевой папки в Linux

Автоматически монтируемые файловые системы прописываются в файле /etc/fstab. Откроем этот файл:

Теперь в него нужно добавить строку вида:

Мы добавили опцию nofail, чтобы ОС нормально загружалась даже если не удалось смонтировать данную файловую систему. Ещё добавьте опцию _netdev, эта опция означает, что файловая система находится на устройстве, которому требуется доступ к сети (используется для предотвращения попыток системы смонтировать эти файловые системы до тех пор, пока в системе не будет включена сеть).

Для моего примера это строка:

Сохраним и закроем этот файл. Для проверки выполним:

Если сетевая папка успешно смонтировалась, значит можно выполнить проверку перезагрузкой.

Если нужно смонтировать папку для входа в которую не требуется пароль, то используйте в качестве опции учётные данные «username=guest,password=»:

Либо можно по-прежнему использовать файл .smbcredentials, как это было показано выше:

/.smbcredentials запишите следующее:

Как создать общую сетевую папку в Samba

Если в этой статье вы пропустили предыдущие части, так как вам нужно только настроить файловый сервер на Linux, то начните с установки пакета samba.

Следующая команда не сработает, если отсутствует файл /etc/samba/smb.conf. Если у вас тоже нет этого файла, то создаёте его заглушку — к настройке самого файла smb.conf мы вернёмся позже:

Теперь нужно добавить пароль для пользователя Samba. Действует следующее правило: имя пользователя должно быть таким же, как у вашего текущего пользователя, а пароль можно установить иной, отличный от вашего системного пароля.

Для установки пароля Samba, выполните следующую команду:

Если вы хотите, чтобы у пользователя не было пароля, то укажите опцию -n.

Создайте папку, которая станет совместно используемой:

Узнаем абсолютный путь до папки

Откройте для редактирования файл /etc/samba/smb.conf:

Добавьте туда строки вида:

Обратите внимание, что все пробелы в строках выше являются обязательными.

Для моих данных это строки:

Теперь запустим службу SMB:

Для добавления службы в автозагрузку выполните:

На самом деле, мы настроили не полноценную Samba, а только файловый сервер SMB. Одно из следствий этого — показанные выше способы обнаружения сетевых папок, такие как команда smbtree в Linux или переход во вкладку «Сеть» в проводнике Windows, не обнаружат нашу шару.

Для подключения к этой общей сетевой папке на Linux нужно использовать IP адреса компьютера Linux вместо имени компьютера, как это мы делали раньше. Кстати, поэтому нужно настроить статичный IP (смотрите статью «Как настроить Linux на использование статичного IP адреса»).

Создадим файл, чтобы сетевая папка не была пустой:

Посмотрите локальный IP адрес компьютера, на котором запущена Linux:

У меня этим IP является 192.168.0.89, а папку, как мы помним, я создал с именем linuxshare, тогда в Windows я перехожу в проводнике во вкладку «Сеть» и подключаюсь к этой папке следующим образом:

Вводим учётные данные (которые мы установили командой smbpasswd):


Видим содержимое совместно используемой папки, размещённой на Linux с помощью SMB:


Для подключения к сетевой папке из консоли Linux, запустите команду вида:

Для моего примера это:

После ввода пароля нам становится доступным содержимое сетевой папки.


Эту папку можно смонтировать как это было показано в предыдущем разделе, либо подключать в Windows как сетевой диск, как это было показано в первой части.

Читайте также: