Monthly Archives: Декабрь 2010

Настройка Samba под FreeBSD 8.1

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

Была выбрана samba-3.4.9,  Для установки samba3.4.9 выполним следующие действия:
Обновим порты:

#portsnap fetch update
#cd /usr/ports/net/samba34
#make config

Включаем следующие опции.

[X] LDAP,[X] CUPS, [X] WINBIND,[X] ACL_SUPPORT, [X] SYSLOG,[X] QUOTAS, [X] PAM_SMBPASS
#make install clean

Далее пропишем в /etc/rc.conf следующее значение:

samba_enable="Yes"

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

#cd  /usr/ports/ports-mgmt/portaudit
#make install clean

Приступаем к самой сложной части, это конфигурирование samba.
На просторах рунета и не только, можно повстречать кучу документаций по настройке samba. Но мы далеко не пойдем, а обратимся к документации которая  присутствует в нашей системе, перейдем в каталог /usr/local/share/doc/samba34. Просмотрим что внутри каталога:

# ls -l
..
-r--r--r--  1 root  wheel  3730740 Dec 14 13:45 Samba3-ByExample.pdf
-r--r--r--  1 root  wheel   585912 Dec 14 13:45 Samba3-Developers-Guide.pdf
-r--r--r--  1 root  wheel  5455690 Dec 14 13:45 Samba3-HOWTO.pdf
...

то что надо, нас интересует Samba3-ByExample.pdf или Samba3-HOWTO.pdf. Далее читам и изучаем. улыбнуло, не правда ли? xDDD

Для настройки конфига переходим в /usr/local/etc/
отчистим файл smb.conf

#echo > smb.conf

далее воспользуемся редактором vi для кофигурирования файла и приведем его к следующему виду.

#vi smb.conf

[global]
encrypt passwords = yes
netbios name = SuperServer
workgroup = vifitex
server string = Super File Server
security = user
dns proxy = no
# Settings to enhance performance:
use sendfile = yes
strict locking = no
read raw = yes
write raw = yes
oplocks = yes
max xmit = 65535
deadtime = 15
getwd cache = yes
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=16384 SO_RCVBUF=16384
# End of performance section
unix charset = UTF-8
ea support = yes
store dos attributes = yes
local master = no
time server = no
display charset = LOCALE
max log size = 0
syslog only = yes
syslog = 0
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
log level = 0
dos charset = CP866
private dir = /usr/local/etc/samba34/private
passdb backend = smbpasswd
create mask = 0666
directory mask = 0777
guest account = nobody

[incomig]
comment = Incoming
writable = yes
locking = no
path = /usr/incoming
public = yes
browseable = yes
only guest = yes
vfs objects = full_audit
full_audit:prefix = %u|%I
full_audit:failure = none
full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath
full_audit:facility = local5
full_audit:priority = notice

[pub]
comment = useradm
path = /home/useradm/pub
#valid users = useradm
public = no
writable = yes
printable = no
browseable = no
vfs objects = full_audit
full_audit:prefix = %u|%I
full_audit:failure = none
full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath
full_audit:facility = local5
full_audit:priority = notice

За действия аудита будет отвечать вот этак секция

vfs objects = full_audit
full_audit:prefix = %u|%I
full_audit:failure = none
full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath
full_audit:facility = local5
full_audit:priority = notice

Что здесь мы видим, у нас есть каталог incoming, каталог для всех на чтение/запись, далее каталог pub, это скрытый ресурс для всех кроме пользователя useradm, т.е. отображаться он не будет, а вход осуществляется только по логину и паролю, далее приведу вывод с консоли:

Прежде всего, добавим пользователя useradm
//#smbpasswd -an nobody — это делать не обязательно.

#smbpasswd -a useradm

Просмотреть доступные ресурсы на сервере можно с помощью командочки smbtree или smbclient
Пример:

\\SUPERSERVER                   Super File Server
\\SUPERSERVER\IPC$              IPC Service (Super File Server)
\\SUPERSERVER\incomig           Incoming

Здесь пока что все.

Что бы смотреть журнал аудита над тем кто что седелал, необходимо настроить syslog
Добавим в /etc/rc.conf следующие строчки:

syslogd_enable="YES"
syslogd_program="/usr/sbin/syslogd"
syslogd_flags=""

Далее добавим в /etc/syslog.conf слудующию запись:
local5.none в конец первых 2х строчек:

*.err;kern.warning;auth.notice;mail.crit;local5.none /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err;local5.none /var/log/messages

и две новые строчки:
!smbd_audit
local5.notice                                   /var/log/samba34/log.audit

Не забываем создать файл log.audit в каталоге /var/log/samba34/

#touch /var/log/samba34/log.audit

Так же отредактируем файл newsyslog.conf и добавим строчку вида:

/var/log/samba34/log.audit              644      10     10240   *       J

Далее выполним перезапуск syslogd

#/etc/rc.d/syslogd reload

На этом пока что все.Наслаждаемся работой samba и по необходимости просматриваем журнал событий. Далее будут дополнения по поводу samba :-)

источник:
/usr/local/share/doc/samba34/Samba3-ByExample.pdf
/usr/local/share/doc/samba34/Samba3-HOWTO.pdf
http://www.opennet.ru/base/net/samba_full_audit.txt.html

Простой backup данных с помощью rsync и tar

Есть множество утилит для сохранения важных данных, как ситемы целиком, так и пользовательских данных. К примеру dump/restore или fsbackup, или таких гигантов как backuppc или amanda. Но речь пойдет не о них, а об отдельной программке, хотя это программкой назвать нельзя, это некий набор скриптов,который синхронизирует пользовательские данные с неким набором фильтров. Синхронизировать и бекапить мы будем данные рбочих станций под управлением linux, дистрибутив OpenSuse 11.2(3). Интересовать нас будут следующие файлы, это документы формата ODF, doc, xls, pdf в общем все что связанно с работой офисного пакета OpenOffice, и конечно же немного картинок, сделаем поблажку для наших пользователей. Все остально мы отфильтруем и сохранять не будем.

Набор скриптов стоит из 3 частей:
1 — фильтр
2 — сам скрипт который будет выполнять синхронизацию файлов
3 — скрипт который будет все архивировать с необходимой нам датой

Начнем по порядку:
Часть 1-я
создадим каталог backupsrc на нашей рабочей станции, открывваем консоль, логинмся под пользователем root и выполняем следующие действия:
Создадим каталог backupsrc

#mkdir /etc/backupsrc

Теперь необходимо создать в нашем каталоге файлы backup.sh и bf.list, именно так мы и назовем наш скрипт синхронизации и фильтр.

#cd /etc/backupsrc
#touch backup.sh
#touch bf.list

Далее сделаем наш скприт исполняем:

#chmod u+x backup.sh

Можно конечно же было воспользоваться редактором vi, но пока что еще рано :-)
А теперь пора.  Наполняем содержание нашего фильтра:

#vi bf.list

*.mp3
*.MP3
.*
*.cab
*.xml
*.exe
*.com
*.dll
*.msi
*.tmp
*.iso
*.cs
*.cab
*.inf
*.bat
*.js
*.AVI
*.avi
*.wma
*.WMA
*.mst
*.wav
*.WAV
tmp
*.mp4
*.MP4
*.fon
*.FON
*.ttf
*.TTF
*.mpg
*.MPG
*.wmv
*.WMV
Музыка
музыка
Music
music
Видео
видео
Films
Films
Video
video

Здесь мы задали то что не будем сохранять на нашем сервере.

Часть 2-я
Теперь наполним наш скрипт backup.sh следующим содержанием, а так же разберем что к чему и что по чем.

#vi backup.sh

#!/bin/bash
#
#Creat temp dir

Создаем временный каталог и переходим в каталог mnt

cd /mnt

Создаем директорию temp_backup

mkdir temp_backup

Эту командочку можно и не писать, но мне нравится когда на консоли выполняется некий вывод того что будет происходить

echo "Connect to server... "

Ожидаенм 2 секунды

sleep 2

Здесь начинается самое интересное, мы будем монтировать шару с сервера в наш временный каталог, для это мы будем использовать mount.cifs. Многие конечно скажу, а почему не NFS, скажу одно, cifs мне больше нравится и все, хотя скрипт можно и адаптировать и под NFS, ни чего сложного

mount.cifs //192.168.1.10/backup /mnt/temp_backup  -o username=Boss,password=bDE23Qsd

Разберем что к чему:
Команда mount.cifs собственно и будет осуществлять монтирование каталогов, плюс ко всему с дополнительными опциями, так же можно встретить вариант mount -t cifs, подробно об опциях можно узнать прочитав man mount.cifs или man mount.
Строчка вида «//192.168.1.10/backup» — каталог на нашем файлсервере,расшарен с помощью samba, и скрыт для общих глаз, настройка samba будет описана в следующей статье
Строчка вида «/mnt/tem_backup» — временый каталог который мы создали(см выше)
Строчка вида «-o username=Boss,password=bDE23Qsd» наши дополнительные опции, здесь видно имя пользователя и его пароль, по необходимости можно указать все в отдельном файле.

Выполнять синхронизацию мы будем с помощью утилиты rsync, кто не знает что это такое, то бегом читать мат часть. :-)
Как бы говорим начало синхронизации, и ожидаем 3 секунды

echo "Begin sync... "
sleep 3

..

rsync -rlcpvz --exclude-from=/etc/backupsrc/bf.list /home/ /mnt/temp_backup

Строчка rsync -rlcpvz, здесь указаны доп опции, писать о них нет смысла, так как об rsync можно прочитать хорошую статью на opennet.ru, или заглянть в руководство пользователя man rsync.
Строчка вида — «—exclude-from=/etc/backupsrc/bf.list» как раз нам скажет использовать наш фильтр, который мы сделали совсем не давно.
Строчка вида «/home/ /mnt/temp_backup» говорит нам откуда и куда будем выполнять синхронизацию.

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

Коментарий здесь я опущу, так как он излишний.

sleep 3
echo "Sync complite... "
sleep 3
echo "Disconnect.. "

После успешной синхронизации можно отключиться от сервера выполнив командочку umount

#umount
umount /mnt/temp_backup
sleep 1

Далее удалим каталог temp_backup.

#>>>>>remove temp_backup
cd /mnt
rmdir  temp_backup

Вывод на консоль о выходе

echo "Exit..."

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


// ...............baskup.sh................//

#!/bin/bash
#
#Creat temp dir
cd /mnt
mkdir temp_backup
echo "Connect to server... "
sleep 2
mount.cifs //192.168.1.10/backup-ws017 /mnt/temp_backup  -o username=user,password=password
#rsync
#
echo "Begin sync... "
sleep 3
rsync -rlcpvz --exclude-from=/etc/backupsrc/bf.list /home/ /mnt/temp_backup
sleep 3
echo "Sync complite... "
sleep 3
echo "Disconnect.. "
#umount
umount /mnt/temp_backup
sleep 1
#>>>>>remove temp_backup
cd /mnt
rmdir  temp_backup
echo "Exit..."

ПРИМЕЧАНИЕ: IP адресс 192.168.1.10 и шара backup-ws017,а так же имя пользователя и пароль, вы будуте должны указать свои.

Часть 3-я.
На сервере создаем небольшой скрипт следующего содержания.

#mkdir /etc/scripts

#toucр bwsarch-.sh //hostname будем указывать имя нашей рабочей станции, к примеру ws010

#touch bwsarch-ws010.sh

Далее сделаем наш скрипт исполняемым:

#chmod u+x bwsarch-ws010.sh

Содержание файла:

#vi bwsarch-ws010.sh

#!/bin/bash
tar czfh bacupws017-`date +%Y%m%d`.tar.gz /mnt/baskup-pc/bacupws017 && mv bacupws017-`date +%Y%m%d`.tar.gz /mnt/data2/backup-arch

Здесь все довольно просто, создаем архив с именем bacupws017 и сегодняшней датой, далее перемещаем его на другой диск. Опции для tar можно прочитать на страницах руководства man tar.

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

Dump разделов в FreeBSD/Linux

Делаем dump раздела во  FreeBSD

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


backupws# df -h

Filesystem      Size    Used   Avail Capacity  Mounted on

/dev/ad10s1a    989M    147M    763M    16%    /

devfs           1.0K    1.0K      0B   100%    /dev

/dev/ad10s1d    496M     12K    456M     0%    /tmp

/dev/ad10s1f     62G    779M     56G     1%    /usr

/dev/ad10s1e    4.8G    404M    4.1G     9%    /var

Для dump раздела можно выполнить следующие:


dump -0 -L -f - /dev/ad10s1a > /home/backup-srv/dump_root_ad10s1a.`date +%Y.%m.%d`.img

dump -0 -L -f - /dev/ad10s1f > /home/backup-srv/dump_usr_ad10s1f.`date +%Y.%m.%d`.img

dump -0 -L -f - /dev/ad10s1e > /home/backup-srv/dump_var_ad10s1e.`date +%Y.%m.%d`.img



здесь будет выполнен dump следующих разделов: / — корневого, раздела — /usr и раздела /var, при этом будет указан какой раздел и дата его создания, как пример: root_ad10s1a.2010.12.06.img

 

Для Linux:


dump -0auv -f - /dev/sdaN > /home/name.`date +%Y.%m.%d`.img

где: N —  Номер раздела , name: имя бэкапа

Дополнительную информацию можно получить прочитав руководство пользваотеля: man dump