Сделать общую папку linux centos
Samba позволяет настроить файловое хранилище различных масштабов — от малых офисов для крупных организаций. В данной инструкции мы рассмотрим процесс настройки файлового сервера. Сначала мы выполним установку и базовую настройку с предоставлением гостевого доступа. После будет приведены примеры разграничения доступа по пользователям, группам и пользователям Active Directory.
Подготовка сервера
1. Время
Для корректного отображения дат, необходимо позаботиться о синхронизации времени. Для этого будем использовать демон chrony. Установим его:
dnf install chrony
Разрешим автозапуск и стартанем сервис:
systemctl enable chronyd
systemctl start chronyd
2. Брандмауэр
По умолчанию, в системах CentOS брандмауэр (firewalld) запрещает все соединения. Необходимо разрешить сервис samba. Также в нашей системе может использоваться система управления брандмауэром iptables. Рассмотрим оба варианта.
а) Если используется firewalld.
firewall-cmd --permanent --add-service=samba
б) Если используется iptables.
По умолчанию, iptables разрешает все соединения. Но если в нашем случае мы настроили брандмауэр на запрет пакетов, необходимо открыть порты:
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 (использование имени компьютера для доступа).
service iptables save
3. SELinux
Система безопасности SELinux будет блокировать все попытки подключиться к удаленной папке. Необходимо создать политику для каталога, в котором будут находиться общие папки. Для этого устанавливаем пакеты для управления политиками:
dnf install policycoreutils setroubleshoot
Теперь создаем само правило. Например, если мы планируем использовать каталог /data, то вводим команды:
* на случай, если каталога еще нет, создаем его.
semanage fcontext -a -t samba_share_t "/data(/.*)?"
restorecon -R -v /data
Установка и запуск Samba
Установка выполняется из репозитория одной командой:
dnf install samba
Разрешаем автостарт сервиса и запускаем его:
systemctl enable smb --now
И проверим, что сервис запустился:
systemctl status smb
Проверяем, что сервер самба позволяет к себе подключиться. Для этого можно с компьютера обратиться к серверу по SMB, например, на компьютере с Windows это можно сделать из проводника, прописав путь к серверу с двух слэшей:
* в данном примере мы подключаемся к серверу Samba с IP-адресом 192.168.1.15.
Если мы настроили сервер правильно, система должна запросить пароль на подключение к Samba. Отказываемся его вводить. На данном этапе проверка закончена.
Создание первой шары и предоставление к ней гостевого доступа (анонимного)
Разберем самый простой пример предоставления доступа к папке — анонимный доступ всем пользователям без запроса пароля.
Открываем на редактирование конфигурационный файл samba:
В секцию [global] добавляем:
.
map to guest = Bad Password
.
И добавляем настройку для общей папки:
[Общая папка]
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 smb
Пробуем подключиться к папке. Мы должны зайти в нее без необходимости ввода логина и пароля.
Доступ к папке по логину и паролю
Теперь создадим каталог, в который вход будет разрешен только авторизованным пользователям.
Открываем конфигурационный файл 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 smb
Пробуем зайти на сервер — общую папку мы должны открыть без авторизации, а при попытке открыть папку сотрудников должно появиться окно ввода логина и пароля.
Если мы авторизованы на компьютере, с которого пытаемся подключиться к серверу, под той же учетной записью, что создали для доступа к папке, 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 smb
Проверяем возможность работы с новым каталогом.
Авторизация с Active Directory
Разберем пример конфигурирования файлового сервера samba в домене Windows и настроим авторизацию пользователей на базе LDAP Active Directory.
Подключение к Active Directory
Введем наш сервер в домен. Сначала необходимо убедиться, что сервер доступен по своему доменному имени. Если серверу так и не было задано вменяемого имени, вводим команду:
hostnamectl set-hostname samba.dmosk.local
* где samba — имя сервера; dmosk.local — домен.
После добавляем в DNS наш сервер samba. Ждем минут 15, если у нас используется доменная инфраструктура с несколькими сайтами.
Устанавливаем необходимые компоненты:
dnf install samba-client samba-winbind samba-winbind-clients krb5-workstation
Открываем конфигурационный файл samba:
В разделе [global] редактируем следующие опции:
workgroup = DMOSK
security = ads
* где DMOSK — NETBIOS имя домена; ads — указывает, что для samba будет использоваться модель безопасности LDAP Active Directory.
Также в [global] добавим следующие строки:
kerberos method = secrets and keytab
realm = DMOSK.LOCAL
winbind enum groups = Yes
winbind enum users = Yes
idmap config * : rangesize = 1000000
idmap config * : range = 1000000-19999999
idmap config * : backend = autorid
- kerberos method — метод проверки kerberos. В данном примере сначала используется secretts.tdb, а затем системная таблица ключей.
- realm — сервер Active Directory. В нашем примере прописан домен, так как по нему можно обратиться к любому из серверов AD.
- winbind enum groups — задает пределы перечисления групп через setgrent(), getgrent() и endgrent().
- winbind enum users — задает пределы перечисления пользователей через setpwent(), getpwent()и endpwent().
- idmap config * : rangesize — определяет количество доступных uids и gids в каждом доменном диапазоне.
- idmap config * : range — определяет доступные совпадающие диапазоны uid и gid, для которых серверная часть является авторитетной.
- idmap config * : backend — задает idmap плагин для использования в качестве SID/uid/gid подсистемы
Вводим сервер в домен:
net ads join -U [email protected]
* где Administrator — учетная запись пользователя AD с правами на ввод компьютеров в домен; dmosk.local — наш домен.
Мы должны увидеть, примерно, следующее:
Разрешаем автозапуск winbind и стартуем его:
systemctl enable winbind --now
Выбираем профиль для аутентификации:
authselect select winbind --force
Проверяем, что наш сервер может получить список пользователей Active Directory:
Если мы увидели список пользователей и групп, то присоединение сервера к домену завершено.
Настройка шары
Открываем конфигурационный файл samba:
[AD]
comment = Folder for AD users
path = /data/ad
public = no
writable = yes
read only = no
guest ok = no
valid users = "@DMOSK\Domain Users" "@DMOSK\Domain Admins"
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
inherit owner = yes
* в данном примере мы будем шарить папку на сервере /data/ad; мы предоставим доступ всем пользователям групп Domain Users и Domain Admins домена DMOSK.
Создаем каталог и задаем права:
chmod 777 /data/ad
Теперь можно перезапустить самбу:
systemctl restart smb
Пробуем подключиться к серверу. У нас должна появиться еще одна папка ad.
Права ACL
И в продолжение разговора о интеграции с AD, попробуем настроить ACL для более тонкого предоставления прав доступа.
Для этого снова открываем конфигурационный файл samba:
В раздел [global] добавим:
acl compatibility = auto
. и создадим новую шару:
[AD ACL]
comment = Folder for AD ACL
path = /data/adacl
public = no
writable = yes
read only = no
guest ok = no
admin users = "@DMOSK\Domain Admins"
inherit acls = yes
inherit owner = yes
inherit permissions = yes
map acl inherit = yes
* где admin users — пользователи, которые могут менять права папки; inherit acls — наследование acl прав; inherit permissions — наследование прав от папки родителя; map acl inherit — использовать ли схему контроля доступа, хранимую в Windows ACL.
Создаем каталог и задаем права:
chmod 777 /data/adacl
systemctl restart smb
Подключаемся к нашей созданной общей папке. Кликаем по ней правой кнопкой мыши - выбираем свойства. На вкладке «Безопасность» мы можем менять права:
Сетевая корзина
При удалении файлов из общей папки, данные удаляются навсегда. Но мы можем настроить сетевую корзину — скрытый каталог, в который будут перемещаться удаляемые с самбы объекты.
Открываем конфигурационный файл:
[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 smb
Пробуем зайти в сетевой каталог 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.
Одним из наиболее распространенных способов взаимодействия между компьютерами на базе linux и windows является Samba. Samba - это пакет программ, которые позволяют создавать и обращаться к сетевым дискам и общим папкам на одинаковых или разных операционных системах. Наиболее частым из способов применения Samba является ее настройка в качестве файлового сервера.
В сегодняшней нашей инструкции вы узнаете как выполняется установка и настройка Samba CentOS 8 для обмена файлами между Linux и Windows системами. Доступ к общим папкам сервера будет настроен для в первой части для любого пользователя без запроса пароля, а во второй - с запросом пароля доступа к защищенной общей папке.
Установка samba в CentOS 8
Сперва авторизуйтесь на вашем сервере от имени пользователя root. Затем используйте команду приведенную ниже для установки необходимых пакетов:
dnf install samba samba-common samba-client -y
По умолчанию во всех windows компьютерах используется рабочая группа WORKGROUP. Вы можете проверить принадлежность вашего Windows компьютера к этой рабочей группе выполнив следующую команду:
net config workstation
Настройка samba в CentOS 8
Сперва перед началом настройки переименуйте конфигурационный файл Samba для сохранения его резервной копии. Выполняется это действие следующей командой:
mv /etc/samba/smb.conf /etc/samba/smb.conf.default
1. Общий ресурс с анонимным доступом
Теперь создайте на сервере общий ресурс в котором будут хранится файлы и папки с предоставленным к ним анонимным доступом. Для этого вам необходимо создать папку к которой будет предоставлен анонимный доступ:
mkdir -p /srv/samba/anonymous
Затем настройте права и разрешения selinux на доступ к этой папке при помощи следующих команд:
chmod -R 0755 /srv/samba/anonymous
chown -R nobody:nobody /srv/samba/anonymous
chcon -t samba_share_t /srv/samba/anonymous
Теперь создадим новый файл конфигурации Samba следующей командой:
Добавьте в созданный файл следующие строки:
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = rhel8
security = user
map to guest = bad user
dns proxy = no
[Anonymous]
path = /srv/samba/anonymous
browsable =yes
writable = yes
guest ok = yes
read only = no
Проверьте настройки Samba запустив следующую команду:
Теперь вам необходимо добавить службу Samba в брандмауэр и запустить её. Для этого выполните следующие команды:
firewall-cmd --permanent --add-service=samba
Запустите и добавьте в автозагрузку сервис Samba:
systemctl start smb.service
systemctl enable smb.service
systemctl start nmb.service
systemctl enable nmb.service
Теперь на вашей windows машине откройте строку Выполнить находящуюся в меню Пуск или при помощи сочетания клавиш Win+R. В открывшейся строке наберите следующую команду и нажмите ОК либо Enter:
У вас откроется сетевая папка расположенная на вашем CentOS 8 сервере настроенная для анонимного доступа.
Теперь вы можете добавлять требуемые файлы и папки в эту папку предоставляя другим пользователям доступ к ним.
Настройка Samba CentOS 8 для анонимного доступа к данным завершена.
2. Общий ресурс с приватным доступом
Для предоставления доступа к файлам и папкам определенным пользователям создайте защищенную папку Samba. Сперва создайте защищенную группу с пользователями. Для этого выполните следующую команду:
Теперь добавьте пользователя в группу securedgroup от имени которого будет осуществляться вход в защищенную папку:
useradd demo -G securedgroup
Теперь создайте защищенную общую папку Samba и добавьте к ней необходимые разрешения выполнив следующие команды:
mkdir -p /srv/samba/secured
chmod -R 0770 /srv/samba/secured
chcon -t samba_share_t /srv/samba/secured
chown -R root:securedgroup /srv/samba/secured/
Теперь добавьте пользователя в базу данных и установите для него пароль:
smbpasswd -a demo
Добавьте в файл конфигурации Samba следующие строки:
[secured]
path = /srv/samba/secured
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes
Затем перезапустите Samba следующей командой:
systemctl restart smb.service
Теперь для того, чтобы получить доступ к защищенной папке вашего CentOS 8 сервера из вашей windows машины откройте строку Выполнить из пункта меню Пуск или при помощи комбинации клавиш Win+R и наберите:
При попытке входа в защищенную папку у вас появится окно с требованием ввести имя пользователя и пароль для получения доступа к файлам находящимся в защищенной папке.
После ввода имени пользователя и пароля вы сможете получить доступ к защищенной папке. Теперь вы можете добавлять в нее файлы и папки для того, чтобы поделиться ими только с определенными пользователями.
Выводы
В сегодняшней инструкции мы рассказали вам как выполняется установка samba centos 8, а также как установить и настроить общие папки расположенные на вашем CentOS 8 сервере для того, чтобы вы могли делиться файлами и папками с другими пользователями.
Нет похожих записей
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Привет Хабр!
После активности шифровальщика Petya 27.06.2017, я отключил SMB1 он же CIFS, и получил производственное оборудование и сетевые МФУ которые не умеют работать на «новых» версиях SMB протокола.
Как тогда получать данные с «старых» устройств? Как показала практика, отдельная «машина» с Windows не выход, во время атаки кроме доменных «машин» пострадали также не включенные в домен, по этому, а также по лицензионным соображениям я решил использовать Linux.
Под катом находится пошаговая инструкция по установке и настройке файлового сервера SAMBA на базе CentOS 7:
— Анонимный доступ
— Аутентификация и авторизация
— Интеграция с Active Directory
Установка CentOS 7
Сервера работают под управлением VMware ESXi, и по этому я установил CentOS 7 1611 на VM, выделив 1 CPU, 1GB RAM и 3GB HDD.
LVM я не использую, SWAP раздел не создаю, на загрузочный раздел выделяю 500MB, а все остальное отдаю под корень файловой системы. В качестве файловой системы использую ext4.
Процесс установки описывать я не буду, даже если вы этого никогда не делали, это не сложно, у вас все получится. Предполагаю что вы уже все установили, тогда можно приступать.
Если вы новичок в линукс, делайте копии оригинальных файлов с конфигами, используйте команду cp.
Получение ip адреса по DHCP
Если по какой-то причине в сети нету DHCP сервера, вам стоит его поднять. Работать с большим количеством VM без DHCP не удобно.
Для принудительного обновления или получения ip адреса выполните команду
Показать ip адрес
CentOS 7 использует пакетный менеджер YUM. Шпаргалка по yum находится тут.
Если выход в интернет организован через прокси сервер, добавьте адрес прокси в файл конфигурации /etc/yum.conf, используйте редактор vi или следующую команду
В случае использования логина и пароля для доступа к прокси серверу, добавьте следующие параметры:
Установка на VM агентов для взаимодействия с хост сервером
Для VMware ESXi необходимо установить open-vm-tools
Для Hyper-V, hyperv-daemons
Установка обновлений
Очень важно установить все доступные обновления
Midnight Commander
Редактировать файлы без нормального редактора очень не удобно, и я предлагаю использовать mc и mcedit
Настройка сети
Для настройки статического ip адреса и имени хоста можно использовать утилиту nmtui
В командной строке список сетевых адаптеров можно получить командой
Статический ip и gateway задается следующей командой, где «ens192» это имя сетевого адаптера
Настройка FQDN
Перезагружаем службу имен
Проверить результат можно следующими командами
Если протокол ipv6 не используется, логично его отключить, для этого нужно добавить два параметра в файл /etc/sysctl.conf, выполните следующие команды или используйте редактор mcedit
Перезагрузите службу сети
SELINUX
На данном этапе службу SELINUX необходимо отключить, проверить статус службы SELINUX можно командой
Измените значение SELINUX в файле /etc/selinux/config на SELINUX=disabled затем перезагрузите сервер.
Вернусь к SELINUX в конце статьи.
SAMBA
Добавление службы в автоматический запуск
Запуск службы и проверка состояния
firewallD
По умолчанию CentOS 7 использует брандмауэр firewallD, состояние службы можно узнать командой
Для получения списка правил и сервисов используйте
Обратите внимание на список сервисов, если вы отключили протокол ipv6, логично также поступить и с dhcpv6-client
Создаем правило для SAMBA и перезагружаем
Общий ресурс с анонимным доступом
Создаем папку для ресурса /samba/guest
Меняем владельца и назначаем права
Редактируем файл конфигурации SAMBA /etc/samba/smb.conf
Меняем содержание оригинального файла на следующее
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
min protocol = NT1
[guest]
path = /samba/guest
guest ok = Yes
writable = Yes
На всякий случай я указал минимальную версию протокола SMB=NT1. Если вы укажите SMB2 или SMB3, клиенты с Windows XP и ниже не смогут получить доступ к ресурсам.
Проверка параметров и перезагрузка службы
Поздравляю вас, достигнут первый уровень посвящения. Общий ресурс с анонимным доступом настроен, будет работать долго и надежно. Но можно и нужно настроить еще несколько вещей.
Бантики
По умолчанию лог файлы находятся в папке /var/log/samba. При необходимости получить подробные логи, в раздел [global] необходимо добавить параметр log level = 2 или 3. По умолчанию используется значение 1, значение 0 отключает ведение логов.
Как вы можете знаете, предоставление доступа к файлам это только часть функционала SAMBA. Если на сервере будут только файловые ресурсы, службу печати логично отключить. В разделе [global] добавьте следующие параметры
[global]
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
Конфигурация SAMBA находиться в каталоге /etc/samba, а логи в каталоге /var/log/samba
Мне удобней все инструменты держать по рукой, по этому я монтирую необходимые мне каталоги в /samba
Создаем каталоги, в которые будет все монтироваться
Редактируем конфиг файл /etc/fstab, я предполагаю что вы знаете за что отвечает fstab.
Добавляем следующие строки
/etc/samba /samba/smbconf none bind 0 0
/var/log/samba /samba/smblogs none bind 0 0
Монтируем без перезагрузки
Подключение диска
Держать ресурс с общим доступом на системном диске без квоты, не лучший выбор. С квотами я решил не связываться, мне проще подключить отдельный «физический» диск.
Для получения списка устройств можно использовать команду lsblk
Создание таблицы разделов на диске /dev/sdb
Подробную информация про gpt можно прочитать тут
Создание раздела на весь диск sdb, в лучших традициях жанра я решил сделать отступ 1MiB в начале диска.
Создаем файловую систему ext4
Добавляем еще одну строку
Подключение образа диска
Если вам не нужны большие объемы, и достаточно ресурса размером ххх мб, можно подключить образ диска из файла.
Создаем каталог для хранения образов
Создаем файл образа размером 100 мб
Про команду dd много интересного можно прочитать тут
В варианте с образом я решил не создавать таблицу разделов, просто создаем файловую систему ext4.
Конфиг для монтирования образа
Подключение RAM диска
Для временных ресурсов где не нужен большой объем, как мне кажется RAM диск это наилучший вариант, очень быстро и просто настраивается, а скорость работы поражает воображение.
Конфиг для RAM диска
Удаление старых файлов
В случае «файлопомойки» ресурсы нужно как-то освобождать, для этого можно использовать планировщик задач crontab
Логи службы crontab находятся в файле /var/log/cron
Ограничение доступа к SAMBA по ip адресам
Если вам нужно ограничить доступ ко всем ресурсам SAMBA, добавьте ваши списки доступа в разделе global, а если необходимо ограничить только на определенный ресурс, в разделе этого ресурса.
[global]
hosts allow = 192.168.1.100, 192.168.1.101
hosts deny = ALL
[guest]
hosts allow = 192.168.0.0/255.255.0.0
hosts deny = 10. except 10.1.1.1
Аутентификация и авторизация пользователей
Ограничение доступа по ip адресам не всегда удобно или возможно, тогда можно использовать логины и пароли.
Сначала необходимо создать локального пользователя в системе
Если пользователь будет работать только с SAMBA ресурсами, задавать ему пароль для системы нет необходимости. Пароль для системы и для SAMBA хранятся в разных файлах и могут отличаться.
Затем необходимо добавить системного пользователя в пользователи самбы и задать ему пароль
По умолчанию для хранения паролей используется файл формата tdb, которые расположен в каталоге /var/lib/samba/private/
Изменить каталог расположения файла можно глобальным параметром passdb backend
tdb файлы были созданы для замены «устаревших» текстовых, если вы хотите использовать текстовые файлы, для этого используйте параметр passdb backend=smbpasswd в разделе global
passdb backend=smbpasswd:/etc/samba/smbpasswd
Затем укажите списки пользователей и групп для доступа к ресурсам
[guest]
path = /samba/guest
writable = no
read list = user1, @group2
write list = user2, user3
Интеграция с Active Directory
Также есть возможность получать информацию о пользователей из LDAP, но мне этот вариант не интересен и я сразу перехожу к AD. Подробная инструкция от Microsoft находится тут.
Для AD очень важна синхронизация времени, по этому стоит начать с этого.
Установка соответствующей службы
Добавляем в конфиг файл /etc/ntp.conf сервера выполняющих роль домен контроллеров
Добавляем службу ntp в автоматический запуск
Проверяем синхронизацию времени
winbind
Для получения информации о пользователях из AD необходимо установить пакет samba-winbind
Добавляем службу в автоматический запуск
Добавление хоста в AD
Для внесения всех необходимых параметров в конфигурационные файлы можно воспользоваться утилитой authconfig-tui, установите флажок Use Winbind, затем перейдите на следующее окно
Выберите модель безопасности ADS и укажите имена вашего домена. В поле домен контролер укажите “*”, это необходимо для автоматического поиска доступного домен контроллера. Затем нажмите ОК и закройте утилиту.
Для добавления хоста в AD используйте команду net ads join –U %username%, пользователь должен обладать правами на создание учетной записи ПК в домене
Если машина не добавляется в домен, добавьте FQDN имя хоста в файл /etc/hosts.
Я несколько раз все проверял, и в файл hosts я вносил изменения когда на этапе настройки сети задавал не полное имя хоста.
Для того чтобы вывести хост из домена используйте команду net ads leave –U %username%
Что делает утилита authconfig-tui?
Утилита добавляет параметры для подключения к AD в следующие файлы, параметров не много и при желании можно забить все руками.
passwd: files sss winbind
shadow: files sss winbind
group: files sss winbind
Вы могли заметить что данная утилита вносит заметно меньше параметров чем написано в инструкции от Microsoft или других инструкциях, но если так работать – то почему бы и нет?
Из инструкции Microsoft я добавляю следующие параметры в конфиг
[global]
domain master = no
local master = no
preferred master = no
os level = 0
domain logons = no
Настройка прав доступа на ресурс
В качестве примера и для наглядности рекомендую настроить ресурсы с разными правами на одну папку
[domain users read only]
path = /samba/guest
read list = "@fqdn_com\domain users"
force create mode = 777
directory mask = 777
[domain users writable]
path = /samba/guest
read list = "@fqdn_com\domain users"
write list = "@fqdn_com\domain users"
force create mode = 777
directory mask = 777
Перезапускаем службу samba
На скриншоте видно пользователя домена который находится в одной из общих папок
Список полезных ссылок:
P.S.
Вернемся к SELINUX, чтобы SAMBA сервер мог предоставить доступ к любым каталогам необходимо выполнить следующие команды
К сожалению я так и не смог настроить работу winbind при включенном SELINUX, если подскажете как, я буду благодарен.
Для начала зайдем в настройки нашей виртуальной машины в менеджере VirtualBox и создадим папку с нужным нам именем и ссылкой на логический диск. В данном примере используется именно логический диск внешнего HDD, но при желании можно подключить и отдельную папку.
После загрузки CentOS, необходимо зайти в верхнее меню и выбрать пункт "Подключить образ диска Дополнений гостевой ОС". Если меню отсутствует, то включен режим масштабирования. Отключаем его комбинацией Ctrl(правый) + C. Меню появится.
После выбора соответствующего пункта меню, появится предложение запустить установку дополнения. Нажимаем "Run".
Вводим пароль суперадминистратора.
В данном случае, подробности были в файле vboxadd-setup.log.4, которые содержали следующее предписание: ". please install libelf-dev, libelf-devel or elfutils-libelf-devel". Необходимо установить еще один компонент. Устанавливаем ELF Utils: sudo dnf install elfutils-libelf-devel. ELF (Executable and Linkable Format) - формат исполняемых и связываемых файлов.
После чего, повторяем установку. Если не возникнет иных ошибок, то появится доступ к папке.
Читайте также: