Административные утилиты FTP
ftpwho
Программа ftpwho выводит всех активных пользователей ftp, и их текущие процессы в системе. Выходные данные выдаются в формате напоминающем команду “/bin/ps”.
[root@deep /]# ftpwho Service class openna: 5443 ? S 0:00 ftpd: win.openna.com: ftpadmin: IDLE - 1 users ( 20 maximum)
Здесь вы видите, что к системе подключен один пользователь с именем “ftpadmin” и пришедший с win.openna.com. Всего к серверу может подключиться 20 пользователей.
ftpcount
Утилита ftpcount – это упрощенная версия ftpwho. Она показывает только количество пользователей подключенных к системе в данный момент и общее количество, которое может подключиться:
[root@deep /]# ftpcount
Service class openna - 1 users ( 20 maximum)
Административные утилиты Samba
Команды описанные ниже, мы будем часто использовать, но на самом деле их много больше, и вы должны изучить страницы руководства (man) и документацию, чтобы получить более подробную информацию.
smbstatus
Утилита smbstatus это очень простая программа, показывающая текущие соединения Samba: [root@deep /]# smbstatus Samba version 2.0.7 Service uid gid pid machine ---------------------------------------------- tmp webmaster webmaster 3995 gate (192.168.1.3) Sat Sep 25 19:40:54 1999
No locked files
Share mode memory usage (bytes): 1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total
Дополнительная документация
Для получения большей информации вы можете прочитать следующие страницы руководства:
$ man Samba (7) – Файл сервер Windows SMB/CIFS для UNIX
$ man smb.conf (5) – Конфигурационный файл для Samba
$ man smbclient (1) - ftp-подобный клиент для доступа к SMB/CIFS ресурсам
$ man smbd (8) – сервер предоставляющий SMB/CIFS сервисы клиентам
$ man smbmnt (8) - mount smb file system
$ man smbmount (8) – монтирование файловой системе smb
$ man smbpasswd (5) – файл с шифрованными паролями Samba
$ man smbpasswd (8) – изменение SMB пароля пользователя
$ man smbrun (1) – интерфейсная программа между smbd и внешними программами
$ man smbsh (1) – Позволяет доступ к файловой системе Windows NT, используя UNIX команды
$ man smbstatus (1) – отчет о текущих соединениях Samba
$ man smbtar (1) – shell скрипт для резервного копирования совместных ресурсов SMB напрямую на накопители на магнитной ленте UNIX
$ man smbumount (8) – размонтирование для нормальных пользователей
$ man testparm (1) – проверка конфигурационного файла smb.conf на внутренние ошибки
$ man testprns (1) – проверка имени принтера на соответствие правилам smbd
Инсталлированные файлы
> /etc/rc.d/init.d/smb > /etc/rc.d/rc0.d/K35smb > /etc/rc.d/rc1.d/K35smb > /etc/rc.d/rc2.d/K35smb > /etc/rc.d/rc3.d/S91smb > /etc/rc.d/rc4.d/S91smb > /etc/rc.d/rc5.d/S91smb > /etc/rc.d/rc6.d/K35smb > /etc/pam.d/samba > /etc/logrotate.d/samba > /etc/codepages > /etc/codepages/codepage.437 > /etc/codepages/unicode_map.437 > /etc/codepages/codepage.737 > /etc/codepages/unicode_map.737 > /etc/codepages/codepage.775 > /etc/codepages/codepage.850 > /etc/codepages/unicode_map.850 > /etc/codepages/codepage.852 > /etc/codepages/unicode_map.852 > /etc/codepages/codepage.861 > /etc/codepages/unicode_map.861 > /etc/codepages/codepage.932 > /etc/gshadow- > /usr/bin/smbclient > /usr/bin/smbspool > /usr/bin/testparm > /usr/bin/testprns > /usr/bin/smbstatus > /usr/bin/rpcclient > /usr/bin/smbpasswd > /usr/bin/make_smbcodepage > /usr/bin/make_unicodemap > /usr/bin/nmblookup > /usr/bin/make_printerdef > /usr/bin/smbtar > /usr/bin/addtosmbpass > /usr/bin/convert_smbpasswd > /usr/bin/mksmbpasswd.sh > /usr/man/man1/make_smbcodepage.1 > /usr/man/man1/make_unicodemap.1 > /usr/man/man1/nmblookup.1 > /usr/man/man1/smbclient.1 > /usr/man/man1/smbrun.1 > /usr/man/man1/smbsh.1 > /usr/man/man1/smbstatus.1 > /etc/codepages/unicode_map.932 > /etc/codepages/codepage.866 > /etc/codepages/unicode_map.866 > /etc/codepages/codepage.949 > /etc/codepages/unicode_map.949 > /etc/codepages/codepage.950 > /etc/codepages/unicode_map.950 > /etc/codepages/codepage.936 > /etc/codepages/unicode_map.936 > /etc/codepages/codepage.1251 > /etc/codepages/unicode_map.ISO8859-1 > /etc/codepages/unicode_map.ISO8859-2 > /etc/codepages/unicode_map.ISO8859-5 > /etc/codepages/unicode_map.ISO8859-7 > /etc/codepages/unicode_map.KOI8-R > /etc/lmhosts > /etc/smb.conf > /etc/smbpasswd > /usr/man/man1/smbtar.1 > /usr/man/man1/testparm.1 > /usr/man/man1/testprns.1 > /usr/man/man5/lmhosts.5 > /usr/man/man5/smb.conf.5 > /usr/man/man5/smbpasswd.5 > /usr/man/man7/samba.7 > /usr/man/man8/nmbd.8 > /usr/man/man8/smbd.8 > /usr/man/man8/smbmnt.8 > /usr/man/man8/smbmount.8 > /usr/man/man8/smbpasswd.8 > /usr/man/man8/smbspool.8 > /usr/man/man8/smbumount.8 > /usr/sbin/smbd > /usr/sbin/nmbd > /var/log/samba > /var/lock/samba
> /etc/pam.d/ftp > /etc/logrotate.d/ftpd > /etc/ftpaccess > /etc/ftpconversions > /etc/ftpgroups > /etc/ftphosts > /etc/ftpusers > /home/ftp/ > /usr/man/man5/ftpconversions.5 > /usr/man/man5/xferlog.5 > /usr/man/man8/ftpd.8 > /usr/man/man8/ftpshut.8 > /usr/man/man8/ftprestart.8 > /usr/sbin/in.ftpd > /usr/sbin/ftpshut > /usr/sbin/ckconfig > /usr/bin/ftpcount > /usr/bin/ftpwho > /usr/man/man1/ftpcount.1 > /usr/man/man1/ftpwho.1 > /usr/man/man5/ftpaccess.5 > /usr/man/man5/ftphosts.5 > /usr/sbin/ftprestart > /usr/sbin/xferstats > /usr/sbin/wu.ftpd > /usr/sbin/in.wuftpd > /var/log/xferlog
Компиляция и оптимизация
Шаг 1
Введите следующие команды на вашем терминале:
CC="egcs" \
./configure \
--prefix=/usr \
--libdir=/etc \
--with-lockdir=/var/lock/samba \
--with-privatedir=/etc \
--with-swatdir=/usr/share/swat \
--with-pam \
--with-mmap \
--without-sambabook
ЗАМЕЧАНИЕ Опция “--with-mmap” может улучшить производительность на некоторых машинах, на других ничего не изменится, ну а на третьих она может упасть.
Эти опции говорят Samba:
Включить поддержку базы данных PAM паролей, поддерживаемых для лучшей безопасности.
Включить экспериментальную поддержку MMAP для улучшения производительности Samba.
Не инсталлируйте книги, поставляемые с дистрибутивом Samba.
Шаг 2
Сейчас мы должны инсталлировать Samba на нашем Linux сервере:
[root@deep source]# make all
[root@deep source]# make install
[root@deep source]# install -m 755 script/mksmbpasswd.sh /usr/bin/
[root@deep source]# rm -rf /usr/share/swat/
(если вы мне позволите совет, не позволяйте пользователям настраивать Samba через броузер).
[root@deep source]# rm -f /usr/sbin/swat
[root@deep source]# rm -f /usr/man/man8/swat.8
[root@deep source]# mkdir -p /var/lock/samba
[root@deep source]# mkdir -p /var/spool/samba (требуется только если вы планируете совместное использование принтера).
[root@deep source]# chmod 1777 /var/spool/samba/ (требуется только если вы планируете совместное использование принтера).
Команда “install” инсталлирует скрипт “mksmbpasswd.sh” в каталог “/usr/bin/”. Этот скрипт нужен, чтобы пользователи Samba могли подключаться к серверу, используя файл “smbpasswd”. О том как использовать пароли Samba читайте дальше в этой книге.
Команда “rm” удалит каталог “/usr/share/swat” и все файлы в нем, также она удалит исполняемый файл “swat” из каталога “/usr/sbin/”. SWAT – это конфигурационная утилита имеющая веб интерфейс, которая позволяет настраивать файл “smb.conf” из веб броузера. Она может открыть брешь в безопасности вашего сервера, поэтому я рекомендую удалить ее. Команда “mkdir” создаст каталог “/var/spool/samba/”, который используется при печати на принтере. Конечно, он необходим, если вы планируете использовать Samba для предоставление принтера в совместное использование. Так как мы не настраиваем наш сервер Samba на предоставление сервиса печати, нам не нужен этот каталог (“/var/spool/samba/”), и соответственно нет необходимости в команде “chmod”, устанавливающей “sticky” бит в “/var/spool/samba”, чтобы только владелец файла мог удалить его из каталога.
Очистка после работы.
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf samba-version/ samba-version.tar.gz
Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Samba. Также будет удален сжатый архив Samba из каталога “/var/tmp”.
Компиляция и оптмизация.
Перейдите в новый каталог Wu-ftpd и введите следующие команды на вашем терминале:
Шаг 1
Редактируйте файл ftpcount.c (vi +241 src/ftpcount.c) и измените строку:
#if defined (LINUX)
на:
#if defined (LINUX_BUT_NOT_REDHAT_6_0)
Шаг 2
Редактируйте файл pathnames.h.in (vi +42 src/pathnames.h.in) и измените строку:
#define _PATH_EXECPATH "/bin/ftp-exec"
на:
#define _PATH_EXECPATH "/usr/bin/ftp-exec"
Мы изменили каталог “/bin/ftp-exec” на “/usr/bin/ftp-exec”, для Red Hat Linux.
Шаг 3
Введите следующие команды на вашем терминале для конфигурирования Wu-ftpd:
CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions" \
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-dnsretry \
--enable-quota \
--enable-pam \
--disable-daemon \
--disable-newlines \
--disable-virtual \
--disable-plsm \
--disable-pasvip \
--disable-anonymous \
--enable-ls \
--enable-numericuid
Эти опции означают следующее:
Не повторять ошибочный DNS lookups для улучшения производительности.
Добавить поддержку квот для большей безопасности (только если ваша OS поддерживает это).
Добавить поддержку PAM для большей безопасности.
Не разрешать запускать, как автономный демон, позволять контролировать FTPD при помощи TCP-Wrappers.
Подавлять некоторые дополнительные пустые строки.
Не поддерживать виртуальные сервера.
Отключить блокирование PID ожидания сообщений (для загруженных серверов).
Не требовать идентичного IP для пассивного соединения.
Не разрешать анонимный ftp доступ для лучшей безопасности.
Использовать новую внутреннюю команду “ls” из Wu-ftpd вместо системной “ls” из Linux для большей безопасности.
Внутренняя “ls” выводит UID вместо имен пользователей для лучшей производительности.
Шаг 4
Сейчас, мы должны инсталлировать Wu-ftpd на Linux сервер:
[root@deep wu-ftpd-2.6.0]# make
[root@deep wu-ftpd-2.6.0]# make install
[root@deep wu-ftpd-2.6.0]# install -m 755 util/xferstats /usr/sbin/
[root@deep wu-ftpd-2.6.0]# touch /var/log/xferlog
[root@deep wu-ftpd-2.6.0]# chmod 600 /var/log/xferlog
[root@deep wu-ftpd-2.6.0]# cd /usr/sbin/
[root@deep sbin]# ln -sf in.ftpd /usr/sbin/wu.ftpd
[root@deep sbin]# ln -sf in.ftpd /usr/sbin/in.wuftpd
[root@deep sbin]# strip /usr/bin/ftpcount
[root@deep sbin]# strip /usr/bin/ftpwho
[root@deep sbin]# strip /usr/sbin/in.ftpd
[root@deep sbin]# strip /usr/sbin/ftpshut
[root@deep sbin]# strip /usr/sbin/ckconfig
[root@deep sbin]# strip /usr/sbin/ftprestart
Команды “make” и “ make install” настроят программное обеспечение под вашу систему и проверят ее функциональность на наличие необходимых библиотек, скомпилируют все файлы с исходными кодами в исполняемые двоичные программы и проинсталлируют их вместе с сопутствующими файлами в необходимые места.
Команда “install -m” будет инсталлировать программу “xferstats”, используемую для просмотра информации о переданных файлах. Команда “touch” создаст файл регистрации для “xferstats” в каталоге “/var/log”. “chmod” изменит права доступа к файлу “xferlog” на чтение-запись только пользователю “root”. Затем, мы создаем символическую ссылку для исполняемого файла “in.ftpd”, и, в заключении, удаляем отладочную информацию из всех исполняемых файлов, относящихся к Wu-ftpd.
Очистка после работы.
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf wu-ftpd-version/ wu-ftpd-version.tar.gz
Команды “rm” будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Wu-ftpd. Также будет удален сжатый архив Wu-ftpd из каталога “/var/tmp”.
Конфигурации.
Конфигурационный файл для разных сервисов очень специфичен и сильно зависит от того, что вам нужно. Некоторые хотят инсталлировать сервер Samba, рассчитывая на одно клиентское соединение, а некоторые на тысячу. Все программное обеспечение, описанное в книге, имеет определенный каталог и подкаталог в архиве “floppy.tgz”, включающей все конфигурационные файлы для всех программ. Если вы скачаете этот файл, то вам не нужно будет вручную воспроизводить файлы из книги, чтобы создать свои файлы конфигурации. Скопируйте файлы связанные с Samba из архива, измените их под свои требования и поместите в нужное место так, как это описано ниже. Файл с конфигурациями вы можете скачать с адреса:
Для запуска веб сервера Apache следующие файлы должны быть созданы или скопированы на ваш сервер.
Копируйте файлы smb.conf и lmhosts в каталог “/etc/”.
Копируйте smb в каталог “/etc/rc.d/init.d/”.
Копируйте samba в каталог “/etc/logrotate.d/”.
Копируйте samba в каталог “/etc/pam.d/”.
Вы можете взять эти файлы из нашего архива floppy.tgz.
Все программное обеспечение, описанное в книге, имеет определенный каталог и подкаталог в архиве “floppy.tgz”, включающей все конфигурационные файлы для всех программ. Если вы скачаете этот файл, то вам не нужно будет вручную воспроизводить файлы из книги, чтобы создать свои файлы конфигурации. Скопируйте файлы связанные с Wu-ftpd из архива, измените их под свои требования и поместите в нужное место так, как это описано ниже. Файл с конфигурациями вы можете скачать с адреса:
Для запуска ftp сервера следующие файлы должны быть созданы или скопированы на ваш сервер.
Копируйте файлы ftpaccess в каталог “/etc/”.
Копируйте файлы ftpusers в каталог “/etc/”.
Копируйте файлы ftphosts в каталог “/etc/”.
Копируйте файлы ftpgroups в каталог “/etc/”.
Копируйте файлы ftpconversion в каталог “/etc/”.
Копируйте ftpd в каталог “/etc/logrotate.d/”.
Копируйте ftp в каталог “/etc/pam.d/”.
Вы можете взять эти файлы из нашего архива floppy.tgz.
Конфигурация файла “/etc/ftpaccess”
“/etc/ftpaccess” – это основной конфигурационный файл, используемый для конфигурирования сервера Wu-ftpd. Этот файл первоначально предназначен для определения какие пользователи, сколько пользователей, могут получить доступ к вашему серверу, и прочих важных элементов настройки безопасности сервера.
Шаг 1
Редактируйте файл ftpaccess (vi /etc/ftpaccess) и добавьте/измените в нем следующие строки:
class openna guest 208.164.186.*
limit openna 20 MoTuWeTh,Fr0000-1800 /home/ftp/.too_many.msg email admin@openna.com
loginfails 3
readme README* login readme README* cwd=*
message /home/ftp/.welcome.msg login message .message cwd=* compress yes all tar yes all chmod yes guest delete yes guest overwrite yes guest rename yes guest
log commands real,guest log transfers real,guest inbound,outbound
guestgroup ftpadmin guestgroup webmaster
# We don't want users being able to upload into these areas. upload /home/ftp/* / no upload /home/ftp/* /etc no upload /home/ftp/* /dev no
# We'll prevent downloads with noretrieve. noretrieve /home/ftp/etc noretrieve /home/ftp/dev
log security real,guest
guest-root /home/ftp ftpadmin webmaster restricted-uid ftpadmin webmaster restricted-gid ftpadmin webmaster
greeting terse keepalive yes noretrieve .notar
Шаг 2
Сейчас мы должны изменить права доступа на 600:
[root@deep /]# chmod 600 /etc/ftpaccess
Эти параметры конфигурационного файла говорят следующее:
class openna guest 208.164.186.*
Опция “class” определяет классы пользователей, которые имеют доступ к вашему FTP серверу. Вы можете определить столько классов, сколько хотите. В нашем случае, например, мы определяем класс с именем <openna>, и позволяем пользователю <guest> с учетными записями на ftp сервере доступ к их домашним каталогам через FTP, если они заходят с адреса 208.164.186.*. Важно заметить, что существует три различных типа пользователей: anonymous, guest, и real. Пользователи Anonymous – это любой пользователь сети, который подключается к серверу и пересылает файлы не имея учетной записи на нем. Пользователь Guest – это реальный пользователь системы для которых сессии настроены также, как и для анонимных пользователей FTP (это то, что мы определили в нашем примере), и пользователь Real должен иметь учетную запись и командный процессор (shell) (это может приводить к риску для безопасности) на сервере для доступа к нему.
limit openna 20 MoTuWeTh,Fr0000-1800 /home/ftp/.too_many.msg
Опция “limit” определяет число пользователей данного класса, которым разрешается подключаться к серверу, и разрешенное время суток. В нашем примере, к FTP серверу из класса <openna> может подключаться максимум 20 пользователей, в понедельник, вторник, среда, четверг целый день, а в пятницу с полуночи до 6:00 вечера <Fr0000-1800>. Также, если количество пользователей достигло предела (20), то вновь подключаемым пользователям будет выдаваться сообщение </home/ftp/.too_many.msg>. Это очень полезный параметр для контроля за ресурсами сервера.
loginfails 3
Опция “loginfails” определяет число ошибочных попыток подключений к серверу, которое может осуществить пользователь до того, как будет отсоединен от сервера. В нашем примере мы отключаем пользователя от FTP сервера после трех попыток.
readme README* login
readme README* cwd=*
Опция “readme” определяет сообщение выдаваемое клиенту во время регистрации на сервере, или во время использования команды смены каталога, которая определяет файлы в текущем каталоге измененные в последнее время. В нашем примере, мы устанавливаем имя файла <README*> относительно каталога FTP, и условия вывода сообщения: при успешном входе в систему <login> или входе в новый каталог <cwd=*>.
message /home/ftp/.welcome.msg login
message .message cwd=*
Опция “message” определяет специальные сообщения, отображаемые клиентам, когда они либо вошли в систему, либо используют команду смены рабочего каталога. В нашем примере, мы показываем месторасположение и имя файлов выводимых файлов </home/ftp/.welcome.msg или .message>, и условия при которых они выводятся: при успешной регистрации в системе <login>, или когда клиент входит в новый каталог <cwd=*>. Для опций “readme” и “message”, когда вы определяете путь для анонимных пользователей, вы должны использовать абсолютный путь относительно анонимного FTP каталога.
compress yes all
tar yes all
chmod yes guest
delete yes guest
overwrite yes guest
rename yes guest
Опции “compress”, “tar”, “chmod”, “delete”, “overwrite” и “rename” определяют права, которые вы хотите дать вашим пользователям на выполнение этих команд. В нашем примере, мы даем права группе <guest> на команды chmod, delete, overwrite и rename, и позволяем всем <all> использовать команды compress и tar. Если вы не определите следующие директивы, они по умолчанию будут выставлены в “yes” для всех.
log commands real,guest
Опция “log commands” включает регистрацию команд пользователей из соображений безопасности. В нашем примере, мы регистрируем все индивидуальные команды пользователей real и guest <real,guest>. Результаты регистрации сохраняются в файле “/var/log/message”.
log transfers real,guest inbound,outbound
Опция “log transfers” включает регистрацию всех FTP пересылок из соображения безопасности. В нашем примере, мы регистрируем все пересылки пользователей real и guest <real,guest>, inbound и outbound <inbound,outbound> определяют направления пересылки, в нашем случае входящие и исходящие. Результаты сохраняются в файле “/var/log/xferlog”.
guestgroup ftpadmin
guestgroup webmaster
Опция “guestgroup” определяет всех реальных пользователей относящихся к группе гостей, сессии которых настроены также, как и в анонимном FTP <ftpadmin и webmaster>. Файл "/home/ftp/etc/group" имеет входы для каждой из этих групп, каждая из которых имеет только одного члена. Важно, что в конфигурационном файле в одной строке должна быть записана одна гостевая группа.
log security real,guest
Опция “log security” включает регистрацию нарушений правил безопасности для реальных, гостевых и/или анонимных FTP клиентов. В нашем примере, мы разрешаем регистрацию нарушений для пользователей использующих FTP сервер для доступа с реальных учетных записей и гостевых бюджетов <real,guest>.
guest-root /home/ftp ftpadmin webmaster
restricted-uid ftpadmin webmaster
restricted-gid ftpadmin webmaster
Эти опции, “guest-root”, “restricted-uid”, “restricted-gid”, определяют и контролируют могут или нет пользователи guest получить доступ в области FTP сервера вне их домашних каталогов (это важная функция повышения безопасности). В нашем примере, мы определяем chroot() путь для пользователей <ftpadmin и webmaster> в </home/ftp>, и они не могут получить доступа к другим файлам, потому что ограничены своими домашними каталогами <restricted-uid ftpadmin webmaster>, <restricted-gid ftpadmin webmaster>. Несколько диапазонов UID может задаваться в этой строке. Если для пользователя выбран guest-root, то домашний каталог пользователя из файла “<root-dir>/etc/passwd” используется для определения начального каталога, и их домашний каталог в масштабе всей системы из файла “/etc/passwd” не используется.
greeting terse
Опция “greeting” определяет, как много системной информации будет выводится до того, как удаленный пользователь войдет в систему. Здесь вы можете использовать три значения: <full> - используется по умолчанию, показывает имя хоста и версию демона, <brief> - только имя хоста, <terse> - просто сообщает "FTP server ready".
keepalive yes
Опция “keepalive” определяет должна ли система сообщения keep alive на удаленный FTP сервер. Если установлена в “yes”, то сервер получит необходимое предупреждение о разрыве соединения или падении удаленной машины.
Конфигурация файла “/etc/ftpconversions”
Файл “/etc/ftpconversions” содержит инструкции, которые разрешают вам по требованию сжимать файлы перед пересылкой.
Шаг 1
Редактируйте файл ftpconversions (vi /etc/ftpconversions) и добавьте в него следующие строки:
:.Z : : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS : : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS :.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP : : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP : : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR : : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS : : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP : : :.crc:/bin/cksum %s:T_REG::CKSUM : : :.md5:/bin/md5sum %s:T_REG::MD5SUM
Шаг 2
Измените права доступа на 600:
[root@deep /]# chmod 600 /etc/ftpconversions
Конфигурация файла “/etc/pam.d/ftp”
Сконфигурируйте ваш файл “/etc/pam.d/ftp” для использования pam аутентификации.
Создайте файл ftp (touch /etc/pam.d/ftp) и добавьте в него следующие строки:
#%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_shells.so account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.so
Конфигурация файла “/etc/ftphosts”
Файл “/etc/ftphosts” используется для определения следующего: может ли пользователь входить в систему с определенной машины или ему будет запрещен доступ.
Шаг 1
Создайте файл ftphosts (touch /etc/ftphosts) и добавьте, например, в него следующие строки:
# Пример файла host access # # Все, что после '#' это комментарии, # пустые строки игнорируются allow ftpadmin 208.164.186.1 208.164.186.2 208.164.186.4 deny ftpadmin 208.164.186.5
В нашем примере, мы разрешаем пользователю <ftpadmin> соединяться с FTP сервером из явно заданного списка адресов <208.164.186.1 208.164.186.2 208.164.186.4>, и запрещаем пользователю <ftpadmin> соединяться с сервера <208.164.186.5>.
Шаг 2
Измените права доступа на 600:
[root@deep /]# chmod 600 /etc/ftphosts
Конфигурация файла “/etc/ftpusers”
Файл “/etc/ftpusers” определяет пользователей, которым не разрешен доступ на FTP сервер.
Шаг 1
Создайте файл ftpusers (touch /etc/ftpusers) и добавьте в него следующих пользователей:
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
Шаг 2
Изменим права доступа к этому файлу на 600:
[root@deep /]# chmod 600 /etc/ftpusers
Конфигурация файла “/etc/lmhosts”
Настроим файл “/etc/lmhosts”. Он содержит соответствия между Samba Net BIOS именами и IP адресами. По формату, этот файл, подобен “/etc/hosts”, за исключением того, что компоненты имени хоста соответствуют формату имен Net BIOS.
Создадим файл lmhosts (touch /etc/lmhosts) и внесем в него клиентские компьютеры: # Пример Samba файла lmhosts. # 127.0.0.1 localhost 192.168.1.1 deep 192.168.1.4 win
В нашем примере, lmhots содержит три соответствия между IP и Net BIOS именами. localhost (127.0.0.1), клиент с именем deep (192.168.1.1) и клиент с именем win (192.168.1.4).
Конфигурация файла “/etc/logrotate.d/ftpd”
Настройте ваш файл “/etc/logrotate.d/ftpd” на автоматическую ротацию файлов регистраций каждую неделю.
Создайте файл ftpd (touch /etc/logrotate.d/ftpd) и добавьте в него следующие строки:
/var/log/xferlog { # ftpd должным образом не обрабатывает SIGHUP nocompress }
Конфигурация файла “/etc/logrotate.d/samba”
Сконфигурируем файл “/etc/logrotate.d/samba” на автоматическую еженедельную ротацию ваших файлов регистрации.
Создайте файл samba (touch /etc/logrotate.d/samba) и добавьте в него следующие строки: /var/log/samba/log.nmb { notifempty missingok postrotate /usr/bin/killall -HUP nmbd endrotate } /var/log/samba/log.smb { notifempty missingok postrotate /usr/bin/killall -HUP smbd endrotate }
Конфигурация файла “/etc/pam.d/samba”
Настроим файл “/etc/pam.d/samba” для использования pam аутентификации. Создайте файл samba (touch /etc/pam.d/samba) и добавьте в него следующие строки:
Auth required /lib/security/pam_pwdb.so nullok shadow
Account required /lib/security/pam_pwdb.so
Конфигурация скрипта “/etc/rc.d/init.d/smb”
Настроим скрипт “/etc/rc.d/init.d/smb”, который отвечает за запуск и остановку демонов Samba smbd и nmbd.
Создайте скрипт smb (touch /etc/rc.d/init.d/smb) и добавьте в него следующие строки: #!/bin/sh # # chkconfig: - 91 35 # описание: запуск и остановка демонов Samba smbd и nmbd \ # используемых для предоставления сетевого сервиса SMB. # Библиотека исходных функций. . /etc/rc.d/init.d/functions # Исходная сетевая конфигурация. . /etc/sysconfig/network # Проверки наличия сети. [ ${NETWORKING} = "no" ] && exit 0 # Проверка наличия файла smb.conf. [ -f /etc/smb.conf ] exit 0 RETVAL=0 # See how we were called. case "$1" in start) echo -n "Starting SMB services: " daemon smbd -D RETVAL=$? echo echo -n "Starting NMB services: " daemon nmbd -D RETVAL2=$? echo [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/smb \ RETVAL=1 ;; stop) echo -n "Shutting down SMB services: " killproc smbd RETVAL=$? echo echo -n "Shutting down NMB services: " killproc nmbd RETVAL2=$? [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /var/lock/subsys/smb echo "" ;; restart) $0 stop $0 start RETVAL=$? ;; reload) echo -n "Reloading smb.conf file: " killproc -HUP smbd RETVAL=$? echo ;; status) status smbd status nmbd RETVAL=$? ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVAL
Сейчас, мы должны сделать этот скрипт исполняемым и изменить права доступа к нему:
[root@deep /]# chmod 700 /etc/rc.d/init.d/smb
Создадим символическую rc.d ссылку для Samba:
[root@deep /]# chkconfig --add smb
Скрипт Samba не будет автоматически стартовать демоны smbd и nmbd, когда система перезагружена. Чтобы изменить это, выполните следующую команду:
[root@deep /]# chkconfig --level 345 smb on
Запустите сервер Samba вручную: [root@deep /]# /etc/rc.d/init.d/smb start Starting SMB services: [ OK ] Starting NMB services: [ OK ]
Конфигурационный файл “/etc/smb.conf”
Файл “/etc/smb.conf” – это основной конфигурационный файл сервера Samba, в котором вы можете определить каталоги к которым предоставляете доступ, с каких IP адресов разрешен доступ и пр. Первые несколько строк в секции [global] содержат глобальные конфигурационные директивы, которые являются общими для всех разделяемых ресурсов (пока они не переписаны в конкретных секциях для каждого ресурса), далее идут секции, отвечающие за конкретные ресурсы. Существует множество опций, и нужно обязательно прочитать документацию, поставляемую вместе с Samba, чтобы получить информацию о каждой из них.
Следующий пример представляет из себя минимальную рабочую конфигурацию для Samba с поддержкой шифрованных паролей. Также, замечу, что мы прокомментируем только те параметры, которые связаны с безопасностью и оптимизацией, а остальные оставим для вашего собственного изучения.
В нашем примере, мы создаем только один каталог, “[tmp]”, и позволяем доступ только машинам с IP адресами диапазона класса C. Также мы не используем сервис печати.
Редактируйте файл smb.conf (vi /etc/smb.conf) и добавьте/измените следующие параметры: [global] workgroup = OPENNA server string = R&D of Open Network Architecture Samba Server encrypt passwords = True security = user smb passwd file = /etc/smbpasswd log file = /var/log/samba/log.%m socket options = IPTOS_LOWDELAY TCP_NODELAY domain master = Yes local master = Yes preferred master = Yes os level = 65 dns proxy = No name resolve order = lmhosts host bcast bind interfaces only = True interfaces = eth0 192.168.1.1 hosts deny = ALL hosts allow = 192.168.1.4 127.0.0.1 debug level = 1 create mask = 0644 directory mask = 0755 level2 oplocks = True read raw = no write cache size = 262144
[homes] comment = Home Directories browseable = no read only = no invalid users = root bin daemon nobody named sys tty disk mem kmem users
[tmp] comment = Temporary File Space path = /tmp read only = No valid users = admin invalid users = root bin daemon nobody named sys tty disk mem kmem users
Эта опции говорят Samba следующее:
[global]
workgroup = OPENNA
Опция “workgroup” определяет рабочую группу в которую входит ваш сервер. Важно, чтобы клиенты и сервер входили в одну и туже группу.
server string = R&D of Open Network Architecture Samba Server
Опция “server string” определяет строку, которую получат пользователи в блоке комментария к принтеру в менеджере принтеров, или при IPC соединении по команде "net view" на Windows машинах.
encrypt passwords = True
Опция “encrypt passwords” если установлена в “True” инструктирует Samba использовать шифрованные пароли вместо паролей с открытым текстом. Снифферы несмогут определить ваш пароль, если он зашифрован. Эту опцию из соображений безопасности нужно установить в “True”.
security = user
Опция “security”, если установлена в “user”, определяет, что клиент должен вначале пройти аутентификацию по правильному имени и паролю, или соединение будет разорвано. При этом способе имя пользователя и пароль должно существовать в файле “/etc/passwd” Linux сервера и в файле “/etc/smbpasswd” Samba сервера, или соединение с клиентом не состоится. Смотрите “Безопасность samba” в этой главе для получения большей информации о файле “smbpasswd”.
smb passwd file = /etc/smbpasswd
Опция “smb passwd file” определяет путь к файлу с шифрованными паролями “smbpasswd”. Файл “smbpasswd” это копия файла “/etc/passwd” Linux системы содержащий разрешенные имена и пароли клиентов, которым разрешен доступ к серверу Samba. Samba читает этот файл, когда получает запрос на соединение.
log file = /var/log/samba/log.%m
Опция “log file” определяет месторасположение и имена файлов регистрации Samba. С расширением “%m”, у вас будут создаваться независимые файлы регистрации для каждого пользователя или машины, соединяющихся к вашему Samba серверу (например, log.machine1).
socket options = IPTOS_LOWDELAY TCP_NODELAY
Опция “ socket options” определяет параметры, которые вы можете включить в вашу конфигурацию Samba для настройки и улучшения сервера samba на оптимальную производительность. По умолчанию, мы выбрали настройку сервера на локальную сеть и улучшили производительность сервера Samba при пересылке файлов.
domain master = Yes
Опция “domain master” определяет, что один из демонов Samba, “nmbd”, будет установлен как домен мастер броузер для данной рабочей группы. Эта опция обычно устанавливается в “Yes” только на одном сервере Samba в некоторой сети и рабочей группе.
local master = Yes
Опция “local master” позволяет “nmbd” становится локальным мастер броузером в подсети. Подобно предыдущей опции эта опция должна быть установлена в “Yes” только на одном Samba сервере в подсети.
preferred master = Yes
Опция “preferred master” определяет и контролирует является ли “nmbd” привилегированным (preferred) мастер броузером рабочей группы. Опять же, эта опция обычно выставляется в “Yes” на одном сервере на вашей сети.
os level = 65
Опция “os level” определяет значение имеет ли “nmbd” шанс стать локальным мастер броузером для рабочей группы в локальной широковещательной области. Число 65 позволит победить любой NT сервер. Если в вашей сети есть NT сервер и вы хотите, чтобы Linux Samba сервер стал локальным мастер броузером, вы должны установить этот параметр равным 65. Эта опция должна быть определена только на одном Linux Samba сервере в сети, а на остальных ее надо отключить.
dns proxy = No
Опция “dns proxy” если установлена в “Yes” определяет, что “nmbd” когда выступает как WINS сервер и определяет, что Net BIOS имя не было зарегистрировано, должен интерпретировать Net BIOS имя слово в слово как DNS имя и делает lookup на DNS сервер действуя от имени клиента, запрашивающего данное имя. Так как мы не настраиваем Samba сервер как WINS сервер, нам не нужно устанавливать эту опцию в “Yes”. Устанавливая эту опцию в “Yes” мы ухудшим производительность Samba.
name resolve order = lmhosts host bcast
Опция “name resolve order” определяет, в каком порядке используются сервисы имен для резолвинга имени хоста в IP адрес. Параметры, который мы выбрали говорят использовать в первую очередь локальный “lmhosts” файл.
bind interfaces only = True
Опция “bind interfaces only” если установлена в “True”, позволяет вам ограничивать интерфейсы на которых будет принимать запросы “smb”. Эта возможность улучшающая безопасность системы. Опция “interfaces = eth0 192.168.1.1” дополняет данную опцию.
interfaces = eth0 192.168.1.1
Опция “interfaces” позволяет вам переписать список интерфейсов по умолчанию, на которых Samba будет обрабатывать запросы. По умолчанию, Samba принимает список из всех активных интерфейсов и любые интерфейсы (исключая 127.0.0.1), на которых поддерживается возможность широковещательных запросов. С этой опцией, Samba будет слушать только интерфейс “eth0” с IP адресом 192.168.1.1. Это возможность улучшающая безопасность, и дополняет ранее приведенную опцию “bind interfaces only = True”.
hosts deny = ALL
Опция “hosts deny” определяет список хостов, которым запрещен доступ к сервису Samba, если определенные сервисы не имеют собственных списков доступа. Для простоты, мы запрещаем доступ всем хостам по умолчанию, и разрешаем доступ некоторым компьютерам в опции “hosts allow =”, приведенной ниже.
hosts allow = 192.168.1.4 127.0.0.1
Опция “hosts allow” определяет, каким хостам разрешен доступ к Samba сервису. По умолчанию, мы пускаем компьютер с IP адресом класса C 192.168.1.4 и наш localhost 127.0.0.1. Заметим, что доступ с localhost должен быть всегда разрешен, иначе вы будете получать сообщения об ошибках.
debug level = 1
Опция “debug level” позволяет вам определить уровень регистрации. Если вы установите уровень отладки больше чем 2, то это приведет к падению производительности. Это связано с тем, что сервер сбрасывает информацию в файл регистрации после каждой операции, которые могут быть очень интенсивными.
create mask = 0644
Опция “create mask” определяет и устанавливает нужные права доступа, связывая таким образом режимы DOS с правами UNIX. С этой опцией установленной в 0644, все файлы копируемые или создаваемые из Windows систем на Unix будут иметь права доступа 0644.
directory mask = 0755
Опция “directory mask” определяет и устанавливает режим, который используется для конвертирования DOS режимов в UNIX режимы, когда создается UNIX каталог. С этой опцией установленной в 0755, все каталоги копируемые или создаваемые из Windows систем на Unix будут иметь права доступа 0755.
level2 oplocks = True
Опция “level2 oplocks”, если установлена в “True”, увеличит производительность множественного доступа к файлам, которые обычно не записываются (такие как файлы приложений .EXE).
read raw = no
Опция “read raw” контролирует будет или нет сервер осуществлять “необработанное” (raw) чтение SMB запросов, когда пересылает данные клиенту. Заметим, что распределение памяти не использует операцию "read raw". Таким образом, вы можете обнаружить, что распределение памяти более эффективно, если вы отключите "read raw", используя параметр "read raw = no".
write cache size = 262144
Опция “write cache size” позволяет Samba улучшить производительность систем у которых дисковая подсистема является узким местом. Значение этой опции определяется в байтах. Значение этой опции определяется в байтах, следовательно 262,144 представляет 256k кэш на файл.
[tmp]
comment = Temporary File Space
Опция “comment” позволяет вам определить комментарии, которые появляются, когда клиент организует запросы на сервер.
path = /tmp
Опция “path” определяет каталог, в который пользователю разрешается доступ. В нашем примере, это каталог “tmp”.
read only = No
Опция “read only” определяет должен ли пользователь иметь доступ “только на чтение” или нет. В нашем примере, так как это конфигурация для каталога “tmp”, пользователь может иметь больший доступ, чем “только на чтение”.
valid users = admin
Опция “valid users” определяет список пользователей, которые могут подключаться к этому сервису. В нашем примере, только пользователю “admin” разрешен доступ к каталогу “/tmp”.
invalid users = root bin daemon nobody named sys tty disk mem kmem users
Опция “invalid users” определяет список пользователей которым не разрешается подключаться к этому сервису. Это абсолютно "параноидальная" проверка, которая гарантирует, что неправильные установки не нарушат безопасность системы. Рекомендуется, чтобы вы включили в эту строку всех пользователей, созданных в системе по умолчанию, от имени которых запускаются демоны на сервере.
Конфигурирование
Перейдите в каталог Samba, а затем в подкаталог “source”.
Шаг 1
Редактируйте файл smbsh.in (vi +3 smbwrapper/smbsh.in) и измените строку:
SMBW_LIBDIR=${SMBW_LIBDIR-@builddir@/smbwrapper}
на:
SMBW_LIBDIR=${SMBW_LIBDIR-/usr/bin}
Это изменит месторасположение каталога “lib” Samba под каталог “/usr/bin”.
Шаг 2
Редактируйте файл Makefile.in (vi +28 Makefile.in) и измените строки:
SBINDIR = @bindir@
На:
SBINDIR = @sbindir@
VARDIR = @localstadir@
на:
VARDIR = /var/log/samba
Эти изменения определяет каталог ”/usr/sbin” для двоичных файлов Samba, и каталог ”/var” для файлов регистраций Samba (”/var/log/samba”).
Шаг 3
Редактируйте файл convert_smbpasswd (vi +10 script/convert_smbpasswd) и измените строку:
nawk 'BEGIN {FS=":"}
на:
gawk 'BEGIN {FS=":"}
Это изменение определит использование версии GNU Linux утилиты обработки текста awk, основанной на Bell Labs research версии программы awk для программы “smbpasswd”.
Шаг 4
Редактируйте файл smbmount.c file (vi +98 client/smbmount.c) и измените строку: static void close_our_files(int client_fd) { int i; for (i = 0; i < 256; i++) { if (i == client_fd) continue; close(i); }
на: static void close_our_files(int client_fd) { struct rlimit limits; int i; getrlimit(RLIMIT_NOFILE,&limits); for (i = 0; i < limits.rlim_max; i++) { if (i == client_fd) continue; close(i); }
Этот шаг сделает файл smbmount.c совместимым с библиотекой Red Hat’s glibc 2.1.
Linux FTP сервер
Краткий обзор.
Несмотря на прошедшие годы, использование File Transfer Protocol (FTP) является одним из самых популярных способов пересылки файлов с одной машины на другую через сеть. Клиенты и сервера написаны для каждой из популярных платформ присутствующих на рынке, делая таким образом FTP наиболее удобным способом пересылки файлов.
Существует много различных путей настройки вашего FTP сервера. Один из них приватный, только для пользователей системы, который является конфигурацией по умолчанию FTP сервера; приватный FTP сервер позволяет пользователям Linux системы соединиться с сервером по протоколу FTP и получить доступ к их файлам.
Другой тип ftp сервера – анонимный FTP. Такой сервер позволяет кому угодно соединяться с сервером и передавать файлы без получения учетной записи. Из за потенциального риска безопасности системы, должны быть приняты меры, чтобы позволить доступ только к определенным каталогам системы.
Конфигурация, которую мы охватываем здесь, предоставляет FTP полубезопасную область файловой системы (chroot гостевой FTP доступ). Она позволит пользователю получить доступ к каталогу FTP сервера, при этом он не сможет перейти на более высокий уровень. Это наиболее безопасная конфигурация для FTP сервера.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам “/var/tmp” (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем “root”.
wu-ftpd версии 2.6.0
Пакеты.
Домашняя страница Wu-ftpd:
FTP сервер Wu-ftpd:
Вы должны скачать: wu-ftpd-2.6.0.tar.gz
Раскройте тарбол:
[root@deep /]# cp wu-ftpd-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf wu-ftpd-version.tar.gz
Linux Samba сервер
Краткий обзор
Крупные организации часто используют много разных операционных систем, и им нужно объединять их в сеть для совместного использования файлов и принтеров. Работники могут работать на рабочих станциях Linux, Microsoft Windows 95/98/NT, OS/2 или Novel и им необходим доступ к серверам для повседневной работы. Linux сервер с поддержкой Samba может быть использован для этих целей.
Samba это надежный сетевой сервис для организации совместного использования файлов и принтеров, который работает на большинстве операционных систем доступных сегодня. Когда он хорошо настроен администратором, это более быстрый и безопасный файловый сервис, чем “родная” реализация на машинах Microsoft Windows.
Как описано в файле README для Samba:
Samba – это протокол, при помощи которого на большинстве PC-машинах совместно используются файлы, принтеры и другая информация, такая как списки доступных файлов и принтеров. Встроенную поддержку этого протокола имеют Windows 95/98/NT, OS/2 и Linux, а с помощью дополнительного пакета DOS, Windows, VMS, Unix всех других видов, MVS и многие другие. Apple Macs и некоторые Веб Броузеры также понимают его. Альтернативу SMB составляют Netware, NFS, AppleTalk, Banyan Vines, Decnet и др.; многие из них имеют большие возможности, но ни один не имеет общедоступной спецификации и широкой реализации на настольных машинах. Программное обеспечение Samba включает SMB сервер, предоставляющий файловый и принтерный сервис в стиле Windows NT и LAN Manager SMB клиентам (Windows 95, Warp Server, smbfs и др), NetBIOS (rfc1001/1002) сервер имен, который среди многих других вещей, дает возможность ftp-подобного просмотра ресурсов (дисков и принтеров) из Unix, Netware и других ОС, и расширение tar для клиентов для резервного копирования PC.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам “/var/tmp” (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем “root”.
Samba версии 2.0.7
Пакеты.
Домашняя страница Samba:
FTP сервер Samba:
Вы должны скачать: samba-2.0.7.tar.gz
Тарболы.
Хорошей идеей будет создать список файлов установленных в вашей системе до инсталляции Samba и после, в результате, с помощью утилиты diff вы сможете узнать какие файлы были установлены. Например,
До инсталляции:
find /* > Samba1
После инсталляции:
find /* > Samba2
Для получения списка установленных файлов:
diff Samba1 Samba2 > Samba-Installed
Раскройте тарбол:
[root@deep /]# cp samba-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf samba-version.tar.gz
Настройка бюджета пользователя FTP без командного процессора (shell)
Чрезвычайно важно, чтобы ваши пользователи FTP не имели реального командного процессора. В этом случае, если они по каким-либо причинам смогут покинуть chroot окружение FTP, то не смогут выполнить никаких задач, так как не имеют командного процессора.
Первое, создайте нового пользователя, которому вы планируете разрешить подключаться к вашему FTP серверу. Это должна быть учетная запись независимая от регулярно используемых, в связи с особенностями работы "chroot" окружения. Chroot создаст пользователю ощущение, будто каталог в который его поместили находится на самом верху файловой системы.
Шаг 1
Используйте следующие команды для создания пользователя в файле “/etc/passwd”. Этот шаг должен выполняться для каждого пользователя, кому нужен доступ к FTP серверу.
[root@deep /]# mkdir /home/ftp
[root@deep /]# useradd -d /home/ftp/ftpadmin/ -s /dev/null ftpadmin > /dev/null 2>&1
[root@deep /]# passwd ftpadmin
Changing password for user ftpadmin
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
Команда “mkdir” создаст каталог “ftp” в “/home” для хранения всех домашних каталогов FTP пользователей. Команда “useradd” добавит нового пользователя с именем “ftpadmin” в вашей системе. В заключении, команда “passwd” установит пароль для него. После того, как каталог “/home/ftp/” создан, вам не нужно будет создавать его для каждого нового пользователя.
Шаг 2
Редактируйте файл “/etc/shells” (vi /etc/shells) и добавьте в него несуществующий командный процессор, например “null”. Этот ложный shell ограничит доступ FTP пользователям к системе.
[root@deep /]# vi /etc/shells
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
/dev/null (это ваш несуществующий командный процессор)
ЗАМЕЧАНИЕ. В Red Hat Linux, специальное имя устройства (/dev/null) существует для подобных целей.
Шаг 3
Сейчас, редактируйте ваш файл “/etc/passwd” и вручную добавьте подстроку “/./”, разделяющую каталоги “/home/ftp” и “/ftpadmin”, где “ftpadmin” должен автоматически изменить каталог. Этот шаг должен быть выполнен для каждого FTP пользователя, добавляемого в файл “passwd”.
Редактируйте файл passwd (vi /etc/passwd) и добавьте/измените строку для пользователя “ftpadmin”:
ftpadmin:x:502:502::/home/ftp/ftpadmin/:/dev/null
на:
ftpadmin:x:502:502::/home/ftp/./ftpadmin/:/dev/null ^^
Обратите внимание, что путь к домашнему каталогу пользователя “ftpadmin” немного нечеткий. Первая часть “/home/ftp/” показывает файловую систему, которая должна стать новый корневым каталогом. Разделяющая точка “.” говорит, что из текущего каталога необходимо автоматически переходить в “/ftpadmin/”. Еще раз отметим, что часть “/dev/null” отключает вход в систему, как регулярного пользователя. С этим изменением, пользователь “ftpadmin” имеет ложный командный процессор вместо реального, тем самым имея ограничения в доступе к системе.
Настройка ftpd на использование tcp-wrappers из супер сервера inetd
Tcp-wrappers должен быть включен на запуск и остановку ftpd сервера. inetd читает настроечную информацию из своего конфигурационного файла “/etc/inetd.conf”. Для каждого поля этого файла должно обязательно присутствовать его значение, поля разделяются пробелами или символами табуляции.
Шаг 1
Редактируйте файл inetd.conf (vi /etc/inetd.conf) и добавьте или проверьте на наличие следующие строки:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
Чтобы изменения вступили в силу, пошлите демону inetd сигнал SIGHUP, используя следующую команду:
[root@deep /]# killall -HUP inetd
Шаг 2
Редактируйте файл hosts.allow (vi /etc/hosts.allow) и добавьте, например, следующую строку:
in.ftpd: 192.168.1.4 win.openna.com
Которая говорит, что клиенту с IP адресом “192.168.1.4” и именем хоста “win.openna.com” разрешен FTP доступ на сервер.
Оптимизация Samba
Установка параметра “wide links=” в конфигурационном файле Samba
Большой ошибкой будет установить параметр "wide links" в "no" в конфигурационном файле Samba “/etc/smb.conf”. Эта опция, если установлена в “no”, говорит Samba не следовать по символическим ссылкам вне экспортируемой области. Чтобы определить находится ли ссылка вне области, Samba следует по символической ссылке, а затем выполняет “directory path lookup”, чтобы определить, где на файловой системе символическая ссылка завершилась. Эта операция добавляет шесть дополнительных системных вызовов на каждый файловый lookup, а Samba просматривает имена файлов очень много раз. Тесты, которые были опубликованы, показали, что установка этого параметра снижает производительность Samba сервера на 25-30 процентов.
Настройка кэша буфера
Модификация параметров, влияющих на настройку кэша файловой системы, может значительно улучшить производительность файлового сервера Linux. Linux будет пытаться использовать память, не используемую для других целей, для кэширования файловой системы. Специальный демон, называемый “bdflush”, будет периодически сбрасывать на диск содержимое "грязных" буферов (буфер, который содержит модифицированные данные файловой системы или метаданные).
Секрет хорошей производительности – это сохранение в памяти так много данных, как это возможно. Запись на диск является самой медленной операцией при работе с любой файловой системой. Как и с большинством настраиваемых параметров ядра, вы можете изменять эти опции на лету, при помощи специальных файлов “/proc”.
Параметры по умолчанию для “bdflush” под Red Hat Linux:
"40 500 64 256 500 3000 500 1884 2"
Чтобы изменить значения bdflush введите следующие команды на вашем терминале:
Под Red Hat Linux 6.1
[root@deep /]# echo "80 500 64 64 15 6000 6000 1884 2" >/proc/sys/vm/bdflush
Вы должны добавить вышеприведенную команду в скрипт “/etc/rc.d/rc.local”, чтобы она выполнялась при каждой загрузке компьютера автоматически.
Под Red Hat Linux 6.2
Редактируйте файл “/etc/sysctl.conf” и добавьте следующие строки:
# Улучшение производительности файловой системы vm.bdflush = 80 500 64 64 15 6000 6000 1884 2
Вы должны перезагрузить сетевые настройки, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/network restart Setting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Эта строка говорит “bdflush” не беспокоиться о записи грязных блоков на диск пока кэш буферов файловой системы не заполниться на 80 процентов. Другое значение определяют максимальное количество грязных буферов, которое может быть записано за одну операцию (500), как долго разрешается грязному буферу существовать (60*HZ) и т.д. Полное описание всех параметров вы можете найти в документации, поставляемой вместе с ядром 2.2, в файле “linux/Documentation/sysctl/vm.txt”, и также, вы можете прочитать главу 4, “Общая системная оптимизация” этой книги.
Настройка buffermem
Другая полезная настройка должна сообщить Linux следующее: использовать минимум 60 процентов памяти для кэширования буферов; сокращать только когда процент используемой памяти для кэша буферов преодолеет 10 процентов (этот параметр сейчас не используется); и позволять расти до 60 процентов всей памяти (этот параметр сейчас не используется).
По умолчанию значения установленные для “buffermem” в Red Hat Linux равны:
"2 10 60"
Чтобы изменить значения buffermem введите следующую команду на вашем терминале:
Под Red Hat Linux 6.1
[root@deep /]# echo "60 10 60" >/proc/sys/vm/buffermem
Вы должны добавить вышеприведенную команду в скрипт “/etc/rc.d/rc.local”, чтобы она выполнялась при каждой загрузке компьютера автоматически. Полное описание всех параметров вы можете найти в документации, поставляемой вместе с ядром 2.2, в файле “linux/Documentation/sysctl/vm.txt”, и также, вы можете прочитать главу 4, “” этой книги.
Под Red Hat Linux 6.2
Редактируйте файл “/etc/sysctl.conf” и добавьте следующую строку:
# Улучшение производительности виртуальной памяти
vm.buffermem = 60 10 60
Вы должны перезагрузить сетевые настройки, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/network restart Setting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]
Напоминаем, что последние два параметра (10 и 60) сейчас не используются, поэтому мы не будем их изменять.
Организация защиты FTP
Файл ftpusers
Важно удостовериться, что вы настроили файл “/etc/ftpusers”. В нем определяются пользователи, которым не разрешено соединяться с вашим FTP сервером. В него должны быть включены, как минимум, следующие пользователи: root, bin, daemon, adm, lp, sync, shutdown, halt, mail, news, uucp, operator, games, nobody и ВСЕ другие определенные по умолчанию пользователи, доступные в вашем файле “/etc/passwd”.
Анонимный FTP
Для отключения анонимного FTP, удалите пользователя “ftp” из вашего файла паролей и проверьте, что пакет anonftp-version.i386.rpm не инсталлирован. Для удаления пользователя “ftp” выполните следующую команду:
[root@deep /]# userdel ftp
Для проверки, что RPM пакет анонимного FTP не инсталлирован у вас на системе выполните следующую команду:
[root@deep /]# rpm -q anonftp
package anonftp is not installed
Команда upload
По умолчанию, Wu-ftpd сервер разрешает upload всем пользователям. Параметр upload позволяет удаленным пользователям загружать и размещать файлы на FTP сервере. Для оптимальной безопасности, мы не хотим разрешать пользователям загружать файлы в подкаталоги “bin”, “etc”, “dev” и “lib” каталога “/home/ftp”. В нашем файле “/etc/ftpaccess” мы уже сменили корневой каталог (chroot) пользователей на “/home/ftp”, и поэтому они не имеют доступ к другим областям файловой системы.
Редактируйте файл ftpaccess (vi /etc/ftpaccess) и добавьте следующие строки, которые запретят upload в определенные области.
# Мы не хотим, чтобы пользователи могли закачивать файлы в эти области. upload /home/ftp/* / no upload /home/ftp/* /etc no upload /home/ftp/* /dev no upload /home/ftp/* /bin no (требуется только если вы не использовали опцию “-- enable-ls”)
upload /home/ftp/* /lib no (требуется только если вы не использовали опцию “-- enable-ls”)
Вышеприведенные строки запрещают upload в подкаталоги “/”, ”/etc”, ”/dev”, “/bin” и “/lib” chroot каталога “/home/ftp”.
Специальный файл “.notar”
Хотите ли вы разрешать таррить каталоги или нет, вы должны сделать так, чтобы нельзя было выполнить команду tar в областях, где запрещен upload.
Шаг 1
Чтобы сделать это, создайте специальный файл '.notar' в каждом каталоге и каталоге FTP.
[root@deep /]# touch /home/ftp/.notar
[root@deep /]# touch /home/ftp/etc/.notar
[root@deep /]# touch /home/ftp/dev/.notar
[root@deep /]# touch /home/ftp/bin/.notar (требуется только если вы не использовали опцию “--enable-ls”)
[root@deep /]# touch /home/ftp/lib/.notar (требуется только если вы не использовали опцию “--enable-ls”)
[root@deep /]# chmod 0 /home/ftp/.notar
[root@deep /]# chmod 0 /home/ftp/etc/.notar
[root@deep /]# chmod 0 /home/ftp/dev/.notar
[root@deep /]# chmod 0 /home/ftp/bin/.notar (требуется только если вы не использовали опцию “--enable-ls”)
[root@deep /]# chmod 0 /home/ftp/lib/.notar (требуется только если вы не использовали опцию “--enable-ls”)
Шаг 2
Файл нулевой длины “.notar” может привести в замешательство некоторые веб клиенты и FTP прокси, чтобы решить эту проблему, надо запретить пересылку этого файла.
Редактируйте файл ftpaccess (vi /etc/ftpaccess) и добавьте следующую строку, чтобы маркировать файл “.notar” как непересылаемый.
noretrieve .notar
Команда noretrieve.
Параметр noretrieve сервера Wu-ftpd позволяет вам запретить пересылку выбранных каталогов или файлов. Хорошей идеей будет предотвращение передачи некоторых подкаталогов (bin, etc, dev, and lib) из каталога “/home/ftp” при помощи команды “noretrieve” в файле “/etc/ftpaccess” file. Редактируйте файл ftpaccess (vi /etc/ftpaccess) и добавьте следующие строки для предотвращения передачи ряда каталогов.
# Мы предотвращаем перекачку при помощи noretrieve. noretrieve /home/ftp/etc noretrieve /home/ftp/dev noretrieve /home/ftp/bin (требуется только если вы не использовали опцию “-- enable-ls”)
noretrieve /home/ftp/lib (требуется только если вы не использовали опцию “-- enable-ls”)
Организация защиты Samba
Иммунизация важных конфигурационных файлов
Бит “постоянства” используется для предотвращения случайного удаления или переписывания файлов, которые защищаются. Он также не дает создавать символические ссылки к этим файлам. Так как файлы “smb.conf” и “lmhosts” уже настроены, хорошей идеей будет иммунизировать их:
[root@deep /]# chattr +i /etc/smb.conf
[root@deep /]# chattr +i /etc/lmhosts
Создание файла с шифрованными паролями Samba
В файле “/etc/smbpasswd” хранятся шифрованные пароли Samba. Он хранит имя пользователя; Unix UID, хешированный пароль SMB, информационный флаг учетной записи и время последнего изменения пароля. Важно создать этот файл с паролями и включить в него всех пользователей до того, как они будут подключаться к вашему серверу Samba. Без этого никто не сможет подключиться к нему.
Шаг 1
Для создания учетной записи Samba, вы должны, для начала, завести пользователя Linux. Поэтому, вначале, создайте в файле “/etc/passwd” всех пользователей, которые должны подключаться к серверу Samba. Добавьте нового пользователя в файл “/etc/passwd” используя следующую команду:
[root@deep /]# useradd smbclient
Определите пароль для него используя команду:
[root@deep /]# passwd smbclient
Changing password for user smbclient
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
Шаг 2
После того, как вы внесли всех пользователей в файл “/etc/passwd”, вы можете создать файл “smbpasswd”, используя “/etc/passwd”. Для этого введите следующую команду:
[root@deep /]# cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
Шаг 3
В заключении, на последнем шаге, мы должны создать бюджет пользователя в нашем файле “/etc/smbpasswd”.
Для создания учетной записи пользователя Samba используйте команду:
[root@deep /]# smbpasswd -a smbclient (помните, что “smbclient” должен быть реальным пользователем Linux).
New SMB password:
Retype new SMB password:
Added user smbclient.
Password changed for user smbclient.
Шаг 4
Не забудьте изменить права доступа к вашему новому файлу “smbpasswd” на чтение-запись только для пользователя “root’ (0600/-rw-------). Это делается из соображения безопасности.
[root@deep /]# chmod 600 /etc/smbpasswd
[root@deep /]# testparm (эта команда проверит файл smb.conf на наличие ошибок).
ЗАМЕЧАНИЕ. Смотрите файл ENCRYPTION.txt, находящийся в дистрибутиве Samba в каталоге /doc/texts/ для большей информации.
Установка пользовательского окружения chroot
Далее вы должны создать основу корневой файловой системы с достаточным количеством необходимых компонентов (исполняемые файлы, файлы парлей и т.д.), чтобы позволить Unix выполнить chroot, когда пользователь входит в систему. Заметим, что если вы использовали опцию “--enable-ls” во время компиляции, как мы предлагали выше, то каталоги “/home/ftp/bin” и “/home/ftp/lib” не нужны, так как Wu-ftpd будет использовать собственную функцию “ls”. Мы остановимся на демонстрации старого метода, при котором люди копируют “/bin/ls” в chroot FTP каталог (“/home/ftp/bin”) и создают соответствующие библиотеки, связанные с “ls”.
Необходимо выполнить следующие шаги, чтобы запустить Wu-ftpd в chroot окружении:
Шаг 1
Создадим все необходимые каталоги chroot окружения:
[root@deep /]# mkdir /home/ftp/dev
[root@deep /]# mkdir /home/ftp/etc
[root@deep /]# mkdir /home/ftp/bin (требуется, если вы не использовали опцию “--enable-ls”)
[root@deep /]# mkdir /home/ftp/lib (требуется, если вы не использовали опцию “--enable-ls”)
Шаг 2
Измените права доступа к новым каталогам на 0511 из соображений безопасности:
[root@deep /]# chmod 0511 /home/ftp/dev/
[root@deep /]# chmod 0511 /home/ftp/etc/
[root@deep /]# chmod 0511 /home/ftp/bin (требуется, если вы не использовали опцию “--enable-ls”)
[root@deep /]# chmod 0511 /home/ftp/lib (требуется, если вы не использовали опцию “--enable-ls”)
Команда “chmod” изменит права доступа к chroot каталогам “dev”, “etc”, “bin” и “lib” на чтение и исполнения для “root” и исполнение для группы и всех остальных пользователей.
Шаг 3
Копируйте исполняемый файл "/bin/ls" в каталог "/home/ftp/bin" и изменим права доступа к нему на 0111. (Вы не хотите позволять пользователям модифицировать этот файл):
[root@deep /]# cp /bin/ls /home/ftp/bin (требуется, если вы не использовали опцию “--enable-ls”)
[root@deep /]# chmod 0111 /bin/ls /home/ftp/bin/ls (требуется, если вы не использовали опцию “--enable-ls”)
ЗАМЕЧАНИЕ. Этот шаг необходим только если вы не использовали при конфигурировании опцию “--enable-ls”. Смотрите секцию “Компиляция и оптимизация” в этой главе.
Шаг 4
Утилиты пользователя Samba
Команды описанные ниже, мы будем часто использовать, но на самом деле их много больше, и вы должны изучить страницы руководства (man) и документацию, чтобы получить более подробную информацию.
smbclient
Утилита “smbclient” работает подобно ftp программам, но для Samba. Эта небольшая программа позволяет вам забирать файлы с сервера на локальную машину, перекладывать файлы с локальной машины на сервер, передавать информацию о каталогах с сервера и пр.
Для соединения с Windows машиной при помощи утилиты smbclient, используйте команду: [root@deep /]# smbclient //sbmserver/sharename -U smbclient [root@deep /]# smbclient //gate/tmp -U smbclient Password: Domain=[OPENNA] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0] smb: \> ls . D 0 Tue Mar 14 15:31:50 2000 .. D 0 Tue Mar 14 15:31:50 2000 PostgreSQL D 0 Tue Mar 14 15:32:22 2000 Squid D 0 Tue Mar 14 15:32:28 2000 Imap D 0 Tue Mar 14 15:32:38 2000 E_comm D 0 Tue Mar 14 15:32:42 2000 StackGuard.pdf A 61440 Tue Dec 21 20:41:34 1999 installation-without-XFree86 A 448 Tue Dec 21 20:41:28 1999 lcap-0_0_3-2_src.rpm A 13481 Thu Jan 13 01:50:12 2000 mirc561t.exe A 948224 Tue Dec 21 20:41:54 1999
65510 blocks of size 32768. 5295 blocks available
smb: \>
где “//sbmserver” это имя сервера, к которому вы хотите подключиться. “/sharename” – каталог на этом сервере, а “smbclient” – это имя пользователя, под которым вы подключаетесь к серверу.
Альтернативы tar и dump
AMANDA
Домашняя страница AMANDA:
BRU
Домашняя страница BRU:
Автоматизация задачи резервного копирования при помощи tar
Всегда интересно автоматизировать задачу резервного копирования. Автоматизация предлагает огромные возможности использования вашего Linux сервере для целей, которые вы поставили. Следующий пример, представляет из себя скрипт для резервного копирования, называемый “backup.cron”. Этот скрипт написан для запуска на любом компьютере, при этом, вы должны поменять только четыре переменные: COMPUTER, DIRECTORIES, BACKUPDIR и TIMEDIR. Мы считаем, что вы устанавливаете этот сценарий для запуска его в начале месяца для получения полной резервной копии, а затем используете его в течении месяца для получения добавочных копий. В нашем примере, мы создаем резервную копию в каталоге на локальном сервере (BACKUPDIR), но вы можете изменить это для использования ленты на локальном сервере или смонтированной файловой системы NFS.
Шаг 1
Создайте скрипт резервного копирования backup.cron (touch /etc/cron.daily/backup.cron) и добавьте в него следующие строки: #!/bin/sh # скрипт полного и добавочного резервного копирования # создан 07 февраля 2000 # Базируется на скрипте Daniel O'Callaghan <danny@freebsd.org>
# и модифицирован Gerhard Mourani <gmourani@videotron.ca>
# Измените следующие пять переменных под вашу систему COMPUTER=deep # имя этого компьютера DIRECTORIES="/home" # каталог для резервного копирования BACKUPDIR=/backups # где храним резервные копии TIMEDIR=/backups/last-full # где сохраняем время полной резервной копи TAR=/bin/tar # имя и расположение tar #Вы не должны менять то, что написано ниже PATH=/usr/local/bin:/usr/bin:/bin DOW=`date +%a` # День недели, например Mon DOM=`date +%d` # Дата, например 27 DM=`date +%d%b` # Дата и месяц, например 27Sep # 1-го числа каждого месяца постоянно делаем полную резервную копию # Каждое воскресенье делаем полную копию – переписываем копию от # последнего воскресенья # В остальное время делаем добавочную резервную копию. Каждая добавочная # резервная копия переписывает добавочную копию с предыдущей недели, с # тем же именем. # # если NEWER = "", тогда tar создает резервные копии всех файлов в каталог, # иначе только новее чем дата в NEWER. NEWER берет дату из файла # записываемого каждое воскресенье. # Ежемесячная полная резервная копия if [ $DOM = "01" ]; then NEWER="" $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DM.tar $DIRECTORIES fi # Еженедельная полная резервная копия if [ $DOW = "Sun" ]; then NEWER="" NOW=`date +%d-%b` # Обновление даты еженедельной полной резервной копии echo $NOW > $TIMEDIR/$COMPUTER-full-date $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES # Создание добавочной резервной копии – переписывание аналогичной с # последней недели else # Берем дату последней полной резервной копии NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`" $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES fi
Здесь приводится список файлов созданных после недели работы данного скрипта:
[root@deep /]# ls -l /backups/
total 22217
-rw-r--r-- 1 root root 10731288 Feb 7 11:24 deep-01Feb.tar
-rw-r--r-- 1 root root 6879 Feb 7 11:24 deep-Fri.tar
-rw-r--r-- 1 root root 2831 Feb 7 11:24 deep-Mon.tar
-rw-r--r-- 1 root root 7924 Feb 7 11:25 deep-Sat.tar
-rw-r--r-- 1 root root 11923013 Feb 7 11:24 deep-Sun.tar
-rw-r--r-- 1 root root 5643 Feb 7 11:25 deep-Thu.tar
-rw-r--r-- 1 root root 3152 Feb 7 11:25 deep-Tue.tar
-rw-r--r-- 1 root root 4567 Feb 7 11:25 deep-Wed.tar
drwxr-xr-x 2 root root 1024 Feb 7 11:20 last-full
ЗАМЕЧАНИЕ. Каталог в котором вы планируете хранить резервные копии (BACKUPDIR) и каталог , где запоминаете время (TIMEDIR) должны быть созданы до запуска этого скрипта, иначе вы получите сообщение об ошибке.
Шаг 2
Если вы не запустили этот скрипт вначале месяца (1 день месяца), добавочным резервным копиям для корректной работы будет нужно время полной воскресной резервной копии. Если вы запускаете скрипт в середине недели, вам нужно создать файл со временем в TIMEDIR. Для этого выполните следующую команду:
[root@deep /]# date +%d%b > /backups/last-full/myserver-full-date
где </backups/last-full> ваша переменная TIMEDIR, описывающая место хранения даты последней полной резервной копии, а <myserver-full-date>
- это имя вашего сервера (например, deep); наш файл времени состоит из одной строки содержащей дату (например 15-Feb).
Шаг 3
Сделайте скрипт исполняемым и измените права доступа к нему (755).
[root@deep /]# chmod 755 /etc/cron.daily/backup.cron
ЗАМЕЧАНИЕ. Так как этот скрипт расположен в каталоге “/etc/cron.daily”, он будет автоматически выполняться в час ночи каждый день.
Дополнительная документация
Для получения больших деталей вы можете прочитать следующую страницу
руководства (man):
tar (1) - GNU версия утилиты архивирования данных tar
Программа резервного копирования dump
Описание
Dump полностью отличается от tar; эта программа предназначена для резервного копирования и восстановления файловой системы. Она создает резервные копии элементов файловой системы – не файлов. Dump проверяет файлы на файловой системе ext2, определяет резервные копии каких из них необходимо выполнить и копирует эти файлы на заданный диск, ленту, файл или другой носитель. Это позволяет получить дамп одной файловой системы быстро и эффективно. К сожалению, его нельзя применить к отдельным каталогам, поэтому архивы потребляют больше места на устройстве хранения. Dump был написан специально для резервного копирования. Команда restore выполняет функцию обратную dump; она восстанавливает полную резервную копию файловой системы. Последующие добавочные резервные копии могут быть наложены слоями на вершину полной копии. Отдельные файлы и каталоги могут быть также восстановлены из полной или частичной резервной копии. Вы можете использовать dump если нуждаетесь в процедуре резервного копирования и восстановления файловых систем.
Уровни Dump
Dump имеет несколько уровней резервного копирования. Уровни входят в диапазон от 0 до 9, где уровень номер 0 это полная резервная копия системы, который гарантирует, что все элементы файловой системы будут скопированы. Уровни выше 0 – добавочные резервные копии, которые говорят dump копировать все файлы новее или модифицированные после последнего дампа из некоторых или более низкого уровня. Чтобы быть более точным, на каждом уровне добавочного резервного копирования вы сохраняете все изменения произошедшие после создания последней резервной копии на том же или предыдущем уровне. Каковы преимущества и причины использования многоуровневого резервного копирования? Я попробую объяснить это при помощи следующих схем:
0 3 2 5 4 7 6 9 8 9 | | | | | | | | | | 0 полная резервная копия | | | | | | | | | | | | 3 копирует все новее или измененное после уровней 0 и 3. | | | | | | | | 2 копирует все новее или измененное после уровней 0 и 2. | | | | | | | 5 копирует все новее или измененное после уровней 0, 3 и 5. | | | | | | 4 копирует все новее или измененное после уровней 0, 3 и 4. | | | | | 7 копирует все новее или измененное после уровней 0, 3, 4 и 7. | | | | 6 копирует все новее или измененное после уровней 0, 3, 4 и 6. | | | 9 копирует все новее или измененное после уровней 0, 3, 4, 6 и 9. | | 8 копирует все новее или измененное после уровней 0, 3, 4, 6 и 8. | 9 копирует все новее или измененное после уровней 0, 3, 4, 6, 8 и 9.
Преимуществом этого метода является то, что более дешевым способом удается продлить хронологию резервных копий. Длинная хронология полезна тем, что часто в течении долгого времени не обнаруживается удаление или порча нужных файлов. Даже не самые новые версии файлов лучше, чем полная их потеря. Также, уровни резервирования используются, чтобы свести время выполнения резервных копий и восстановления к минимуму. Страницы руководства dump предлагает хорошую схему, чтобы использовать все преимущества уровней резервного копирования: 3, 2, 5, 4, 7, 6, 9, 8, 9 и так далее, как описано ниже в таблице. Число лент необходимых для восстановления зависит от количества времени между двумя полными резервными копиями.
Лента | Уровень | Резервная копия (дней) | Ленты для восстановленья |
1 | 0 | Нет | 1 |
2 | 3 | 1 | 1,2 |
3 | 2 | 2 | 1,3 |
4 | 5 | 1 | 1,2,4 |
5 | 4 | 2 | 1,2,5 |
6 | 7 | 1 | 1,2,3,6 |
7 | 6 | 2 | 1,2,5,7 |
8 | 9 | 1 | 1,2,5,7,8 |
9 | 8 | 2 | 1,2,5,7,9 |
10 | 9 | 1 | 1,2,5,7,9,10 |
Программа резервного копирования tar
Описание
Программа резервного копирования tar – это программа архивирования, которая была создана для хранения и извлечения файлов из архива, известного как тарфайл. Тарфайл может быть создан на лентопротяжном устройстве; однако, чаще всего тарфайлы записываются как обычные файлы.
Простая схема резервного копирования
Когда вы решили создавать резервные копии ваших файлов, вы должны выбрать схему резервного копирования до начала этой процедуры. Существует множество схем резервного копирования, зависящих от политики резервного копирования, которую вы хотите использовать. В дальнейшем, я покажу вам одну из схем, которую вы можете использовать, которая использует преимущественно возможности программы tar. Эта схема выглядит так: сперва копировать все, что возможно, а в дальнейшем все, что изменилось со времени создания последней резервной копии. Первая резервная копия называется полной, а остальные добавочными.
Резервное копирование и восстановление в Linux
Краткий обзор.
Безопасность и надежность сервера вплотную связана с процедурой регулярного резервного копирования. Иногда могут возникать различные повреждения. Они могут быть следствием атак, ошибок аппаратного обеспечения, людских ошибок, перепадов напряжения и пр. Самый надежный метод резервного копирования это записать данные в место независимое от вашего Linux сервера, например, через сеть, на стример, сменный носитель, записываемый CD-ROM и пр.
В Linux существует много методов выполнить резервное копирование, среди них такие, как “dump”, “tar”, “cpio” и “dd”. Также доступны утилиты базирующиеся на текстовых файлах, например “Amanda”, которая разработана, чтобы добавить дружественный пользовательский интерфейс к процедуре резервного копирования и восстановления данных. И наконец, коммерческие пакеты резервного копирования, например “BRU”.
Процедуры выполнения резервного копирования и восстановления данных будет отличаться в зависимости от выбранного вами решения. Из этих соображений, мы будем обсуждать здесь процедуру резервного копирования при помощи традиционных для UNIX утилит: “tar” и “dump”.
Что такое резервное копирование
Основная идея резервного копирования – это создание копий всего что установлено на вашей системе, но с некоторыми исключениями, о которых мы напишем ниже. Будет не логичным включать их в ваши резервные копии, так как это будет напрасная трата времени и пространства на носители. Основными исключениями, не включаемыми в ваши резервные копии, являются:
Файловая система “/proc”: так как она содержит только данные, которые ядро генерирует автоматически, и нет никакого смысла сохранять их.
Файловой системы “/mnt”, потому что в нее вы монтируете ваши сменные носители, подобные CD-ROM, гибким дискам и пр.
Каталоги и носители, содержащие резервные копии, такие как стримеры, CD- ROM, смонтированная файловая система NFS, удаленные/локальные каталоги и прочие виды носителей.
Программное обеспечение, которое может быть легко повторно установлено, хотя оно может иметь конфигурационные файлы, которые необходимо копировать, чтобы не выполнять работы по их настройке позже. Я рекомендую сохранять их (конфигурационные файлы программного обеспечения) на дискете.
Создание резервных копий и восстановление через сеть
Резервное копирование позволяет вам восстановить доступность и целостность информационных ресурсов после нарушений безопасности и несчастных случаев. Без резервного копирования вы не сможете восстановить данные на компьютере после системных сбоев. Важно разработать план, который будет охватывать все ваши сервера. Мы должны определить, файлы какой категории нужно резервировать. Например, вы можете решить создавать резервные копии только файлов пользователей (/home), потому что поврежденная система должна быть восстановлена с оригинального дистрибутива.
Здесь приводятся общие технологические подходя к резервному копированию файлов. Для сетевых серверов, авторитетная версия информационного наполнения создается и поддерживается на защищенной . Если сервер скомпрометирован и его содержимое повреждено, его можно перезагрузить с безопасной системы поддерживающей авторитетную версию. Этот подход обычно используется на публичных системах, таких как Веб сервера, потому что содержимое изменяется в предсказуемые интервалы.
Важно гарантировать, что резервные копии выполнены безопасным способом и что их содержимое остается защищенным. Мы рекомендуем, чтобы в своем плане вы определили:
Исходные данные шифруются перед отправкой их на устройство хранения.
Данные хранятся на устройстве хранения в зашифрованном виде.
Хранители информации находятся в физически безопасном устройстве, которое защищено от искусственный и естественный бедствий.
Пересылка вашей резервной копии в безопасной манере через сеть
В предыдущей секции, мы показали вам как сделать резервную копию с помощью утилит tar и dump на ленту или в файл на той же системе, где выполнялась процедура резервного копирования. Эти программы способны также делать резервное копирование через сеть. Чтобы осуществлять резервное копирование по сети надо убедиться, что у вас установлены пакеты “rmt” и “rsh”. Утилита “rmt” предоставляет удаленный доступ к ленточному устройству программам подобным dump и tar. Пакет “rsh” содержит набор программ, которые позволяют пользователям выполнять команды на удаленной машине, подключаться к удаленным машинам и копировать файлы между машинами (rsh, rlogin и rcp).
Так как “rsh” может быть легко взломана, а “rmt” зависит в своей работе от “rsh”, мы не инсталлировали эти пакеты (смотрите главу 2, “Инсталляция вашего Linux сервера” для большей информации). Поэтому мы должны найти другой путь для осуществления резервного копирования через сеть. Технология SSH поможет решить эту проблему (смотрите главу 11, Программы обеспечения безопасности и сетевая безопасность), потому что она позволяет копировать данные через сеть командой “scp” с поддержкой шифрования. Следующий метод использует возможности программы SSH для пересылки наших резервных копий, сделанных командами tar или dump в безопасной манере, используя утилиту “scp”.
Использование SSH команды “scp”для передачи резервных копий через сеть
Команда “scp” копирует файлы между хостами в сети. Она использует SSH для пересылки данных, используя туже систему аутентификации и предоставляя тот же уровень безопасности, что и SSH. В отличии от утилиты “rcp” из пакета “rsh”, “scp” запрашивает пароль или парольную фразу. В нашем примере, мы пересылаем файл резервной копии, созданный программой tar; процедура передачи файла, созданного командой dump аналогична.
Для копирования файла на удаленную систему используйте команду:
[admin@deep /]# scp <localdir/to/filelocation> <user@host:/dir/for/file>
где <localdir/to/filelocation> - это каталог находится резервная копия на локальном сервере, а <user@host:/dir/for/file> представляет, по порядку, имя пользователя (user) на удаленной машине, который будет владеть резервной копией, имя компьютера (host), куда вы хотите отправить файл, и каталог на этом компьютере.
Реальный пример будет выглядеть так:
[admin@deep /]# scp -Cp /backups/deep-01Feb.tar admin@backupserver:/archive/deep/deep-01Feb.tar
admin@backupserver's password:
deep-01Feb.tgz | 10479 KB | 154.1 kB/s | ETA: 00:00:00 | 100%
ЗАМЕЧАНИЕ. Опция “C” включает сжатие для более быстрой передачи файла, опция “p” говорит, что необходимо сохранить время модификации, время доступа и режимы доступа к файлу, что обычно неплохо. Важно заметить, что каталог “dir/for/file” на удаленном компьютере (“/archive/deep” в нашем примере) должен принадлежать “username”, заданному в команде scp (“admin” в нашем примере) или вы получите следующее сообщение об ошибке:
scp: /archive/deep/deep-01Feb.tar: Permission denied.
Для копирования файла с удаленной системы на локальную используйте команду:
[admin@deep /]# scp <user@host:/dir/for/file> <localdir/to/filelocation>
где <user@host:/dir/for/file> представляет, по порядку, имя пользователя (user) на удаленной машине, который владеет резервной копией, имя компьютера (host), откуда вы хотите получить файл, и каталог на этом компьютере, в котором лежит файл, а <localdir/to/filelocation> - это локальный каталог в который вы хотите поместить файл, полученный с удаленного компьютера. Реальный пример выглядит примерно так:
[admin@deep /]# scp -Cp admin@backupserver:/archive/deep/deep-01Feb.tar /backups
admin@backupserver's password:
deep-01Feb.tgz | 10479 KB | 154.1 kB/s | ETA: 00:00:00 | 100%
Создание резервных копий с dump
Если вы хотите использовать многоуровневую процедуру резервного копирования, то вас заинтересует как использовать программу dump. Ниже, я приведу процедуру, имеющую длинную историю резервного копирования, и поддерживающую время резервного копирования и восстановления данных на минимуме. В следующем примере, мы подразумеваем, что записываем резервную копию каталога (/home) на ленточное устройство (/dev/st0). Важно всегда начинать с 0 уровня резервного копирования, например:
Пятница 1, (используется лента 1 для первой полной резервной копии).
[root@deep /]# dump -0u -f /dev/st0 /home
DUMP: Date of this level 0 dump: Fri Jan 28 21:25:12 2000
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/sda6 (/home) to /dev/st0
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 18582 tape blocks on 0.48 tape(s).
DUMP: Volume 1 started at: Fri Jan 28 21:25:14 2000
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: DUMP: 18580 tape blocks on 1 volumes(s)
DUMP: finished in 4 seconds, throughput 4645 KBytes/sec
DUMP: Volume 1 completed at: Fri Jan 28 21:25:18 2000
DUMP: Volume 1 took 0:00:04
DUMP: Volume 1 transfer rate: 4645 KB/s
DUMP: level 0 dump on Fri Jan 28 21:25:12 2000
DUMP: DUMP: Date of this level 0 dump: Fri Jan 28 21:25:12 2000
DUMP: DUMP: Date this dump completed: Fri Jan 28 21:25:18 2000
DUMP: DUMP: Average transfer rate: 4645 KB/s
DUMP: Closing /dev/st0
DUMP: DUMP IS DONE
Понедельник, (используется лента 2 для добавочной резервной копии).
[root@deep /]# dump -3u -f /dev/st0 /home
Вторник, (используется лента 3 для добавочной резервной копии).
[root@deep /]# dump -2u -f /dev/st0 /home
Среда, (используется лента 4 для добавочной резервной копии).
[root@deep /]# dump -5u -f /dev/st0 /home
Четверг, (используется лента 5 для добавочной резервной копии).
[root@deep /]# dump -4u -f /dev/st0 /home
Пятница 2, (используется лента 6 для добавочной резервной копии).
[root@deep /]# dump -7u -f /dev/st0 /home
Понедельник, (используется лента 2 для добавочной резервной копии).
[root@deep /]# dump -3u -f /dev/st0 /home
Вторник, (используется лента 3 для добавочной резервной копии).
[root@deep /]# dump -2u -f /dev/st0 /home
Среда, (используется лента 4 для добавочной резервной копии).
[root@deep /]# dump -5u -f /dev/st0 /home
Четверг, (используется лента 5 для добавочной резервной копии).
[root@deep /]# dump -4u -f /dev/st0 /home
Пятница 3, (используется лента 7 для добавочной резервной копии).
[root@deep /]# dump -6u -f /dev/st0 /home
Понедельник, (используется лента 2 для добавочной резервной копии).
[root@deep /]# dump -3u -f /dev/st0 /home
Вторник, (используется лента 3 для добавочной резервной копии).
[root@deep /]# dump -2u -f /dev/st0 /home
Среда, (используется лента 4 для добавочной резервной копии).
[root@deep /]# dump -5u -f /dev/st0 /home
Четверг, (используется лента 5 для добавочной резервной копии).
[root@deep /]# dump -4u -f /dev/st0 /home
Пятница 4, (используется лента 8 для добавочной резервной копии, только если в месяце пять пятниц).
[root@deep /]# dump -9u -f /dev/st0 /home
Понедельник, (используется лента 2 для добавочной резервной копии, только если в месяце пять пятниц).
[root@deep /]# dump -3u -f /dev/st0 /home
Вторник, (используется лента 3 для добавочной резервной копии, только если в месяце пять пятниц).
[root@deep /]# dump -2u -f /dev/st0 /home
Среда, (используется лента 4 для добавочной резервной копии, только если в месяце пять пятниц).
[root@deep /]# dump -5u -f /dev/st0 /home
Четверг, (используется лента 5 для добавочной резервной копии, только если в месяце пять пятниц).
[root@deep /]# dump -4u -f /dev/st0 /home
Месяц, (используйте другую ленту для полной резервной копии, когда изменяется месяц).
[root@deep /]# dump -0u -f /dev/st0 /home
где “-0 до -9” – уровни резервного копирования, которые вы хотите использовать, опция “u” говорит обновлять файл “/etc/dumpdates” после удачного дампа, опция “-f” указывает записывать резервную копию в файл; файл может быть специальным файлом устройства, например, “/dev/st0” (ленточное устройство), “/dev/rsd1c” (дисковое устройство), обычным файлом, или “-“ (стандартным вывод). В заключение, вы должны определить, резервную копию чего, вы хотите сделать. В нашем примере это каталог “/home”. Вы можете видеть, что мы используем одни и те же ленты со 2 по 5 для ежедневного резервного копирования (С понедельника по Четверг = 4 ленты), ленты 6, 7 и 8 для еженедельного резервного копирования (другие пятницы, 6 + 7 + 8 = 3 ленты; заметим, что может быть пять пятниц в месяце), и ленту 1 и любую новую ленту для ежемесячной резервной копии (первая пятница каждого месяца, 1 + любые следующие “11 месяцев” = 12 лент). Итого, если мы используем 8 лент (4 + 3 + 1 = 8), мы можем получить полную резервную копию в первом месяце и повторить процедуру с 8 лентами в следующие 11 месяцев, чтобы получить в итоге 1-годовую индивидуальную полную резервную копию. Полные резервные копии должны делаться в определенный интервал, скажем, один месяц, и на наборе чистых лент, на которые записывается навсегда. Для этого типа процедуры, вы должны иметь 12 лент на 12 месяцев, которые содержат хронологию и изменения вашей системы за год. Затем, вы можете скопировать 12 лент с резервными копиями на отдельный компьютер, предназначенный для долгого хранения всех годовых резервных копий, и использовать их (12 лент) в новом году.
Создание резервных копий с tar
С шестью лентами вы можете делать резервные копии каждый день; процедура использует ленту 1 для полного резервного копирования (Пятница 1), и ленты со 2 по 5 для добавочного резервного копирования (С понедельника по четверг). Затем, мы делаем новую полную резервную копию на ленту 6 (вторая пятница), и далее делаем добавочные копии на лентах со 2 по 5. Важно сохранить 1 в неприкосновенности, пока мы не получим полную резервную копию на ленте 6. В следующем примере, мы подразумеваем, что записываем резервные копии на SCSI ленточное устройство с именем (/dev/st0), и создаем резервную копию домашнего каталога (/home) нашей системы.
Первое, мы должны переместиться в корневой раздел. Когда “tar” создает архивные файлы, он удаляет начальный символ “/” (слеш) из пути к файлу. Это значит, что после восстановления файлы могут оказаться не на своем месте. Чтобы решить эту проблему, необходимо до изготовления резервных копий и восстановления данных переходить в корневой раздел вашей файловой системы.
Переместитесь в корневой раздел:
[root@deep]# cd /
Важно всегда начинать с изготовления полной резервной копии, например, в пятницу:
Пятница 1, (используйте ленту 1 для первой полной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." --directory / home
Понедельник, (используется лента 2 для добавочной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpNf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." --directory / home
Вторник, (используется лента 3 для добавочной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpNf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." --directory / home
Среда, (используется лента 4 для добавочной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpNf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." --directory / home
Четверг, (используется лента 5 для добавочной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpNf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." --directory / home
Пятница 2, (используется лента 6 для полной резервной копии).
[root@deep /]# cd /
[root@deep /]# tar cpf /dev/st0 --label=" full-backup created on `date '+%d-%B-%Y'`." --directory / home
Далее, делаем добавочные резервные копии на лентах со 2 по 5 и так далее.
Опция “c” определяет, что мы создаем архивный файл.
Опция “p” сохраняет права доступ.
Опция “N” делает добавочную резервную копию и запоминает файлы новее чем DATE.
Опция “f” говорит, что следующий аргумент будет либо имя архивного файла, либо имя устройства на которое производится запись.
Объясним как мы получили имя файла, который содержит текущую дату: просто поместите команду “date” между обратными кавычками. К основному имени добавляется суффикс “tar” для не сжатых архивов, и суффикс “tar.gz” для сжатых. Так как мы не определяем конкретное имя для файла резервной копии, то воспользуемся опцией "--label", которая позволяет записать некоторую информацию в архивный файл. В заключении мы определяем, что только файлы из каталога "/home" будут записаны на ленту.
Так как лента это устройство посимвольного ввода, мы не можем определить имя файла. Поэтому, в качестве аргумента для опции “имя файла” программы tar используется просто имя устройства, "/dev/st0". Устройство “/dev/st0" не перематывается после создания резервной копии; поэтому, мы имеем возможность записать на одну ленту несколько сессий. Вы можете, также сказать устройству “/dev/st0”, автоматически перемотать ленту после окончания записи резервной копии. При работы с лентой, вы можете использовать следующие команды для перематывания и извлечения ленты из устройства:
[root@deep /]# mt -f /dev/st0 rewind
[root@deep /]# mt -f /dev/st0 offline
ПРЕДОСТЕРЕЖЕНИЕ. Для уменьшения пространства занимаемого tar архивом, резервная копия может быть сжата при помощи опции “z” программы tar. К сожалению, использование этой опции может создать ряд проблем. Из природы работы сжатия следует, что если хотя бы один бит будет испорчен, то и все данные нужные для восстановления будут потеряны. Поэтому рекомендуется не использовать сжатие (опция “z”) для создания резервной копии при помощи команды tar.
Если ваша резервная копия не помещается на ленте, то вам надо использовать опцию --multi-volume (-M) для создания многотомных архивов:
[root@deep /]# cd /
[root@deep /]# tar cMpf /dev/st0 /home
Prepare volume #2 for /dev/st0 and hit return:
После того, как вы создали резервную копию, вы должны убедиться, что все OK, используя опцию --compare (-d):
[root@deep /]# cd /
[root@deep /]# tar dvf /dev/st0
Для резервного копирования всей системы используйте следующую команду:
[root@deep /]# cd /
[root@deep /]# tar cpf /archive/full-backup-`date '+%d-%B-%Y'`.tar \
--directory / --exclude=proc --exclude=mnt --exclude=archive \
--exclude=cache --exclude=*/lost+found .
Опция ”--directory” говорит tar, что до начала резервного копирования надо перейти в следующий каталог (в нашем примере “/”). Опция “--exclude” говорит tar не создавать резервные копии заданных каталогов и файлов. Символ “.”, находящийся в конце командной строки говорит tar, что он должен копировать все в текущем каталоге.
ПРЕДУПРЕЖДЕНИЕ. Когда вы создаете резервную копию вашей системы, не включайте в нее псевдофайловую систему "/proc"! Файлы "/proc" не настояшие файлы, это просто файлоподобные ссылки к структуре ядра. Также не включайте каталоги “/mnt”, “/archive” и все “lost+found”.
Тестирование возможности восстановления из резервных копий
Для многих системных администраторов, восстановление файлов из резервной копии редкое действие. Периодическое выполнение проверки возможности восстановления файлов из резервных копий поможет вам выявить проблемы с процедурами резервного копирования, чтобы вы могли скорректировать их до того, как потеряете данные. Некоторое программное обеспечение восстановления файлов некорректно восстанавливает права доступа и владельца файлов. Проверьте атрибуты восстановленных файлов, чтобы они были установлены правильно. Периодически тестируйте возможность полного восстановления системы из ваших резервных копий.
Восстановление файлов с dump
Команда restore выполняет функцию противоположную функции dump(8). Она восстанавливает файлы и каталоги из резервных копий полученный программой dump. Может быть восстановлена полная резервная копия файловой системы, а затем и уровни добавочных резервных копий поверх ее. Также может из полной резервной копии или частичной могут быть восстановлены отдельные файлы и каталоги. Вы имеете ряд возможных команд и опций для восстановления данных из резервных копий, полученных программой dump. Ниже мы покажем вам процедуру, которая использует все возможности программы restore с большинством возможных опций. Все это также сделано в диалоговом режиме. При диалоговом восстановлении файлов из дампа, программа restore предоставляет shell подобный интерфейс, который позволяет пользователю перемещаться по дереву каталогов, выбирая файлы для извлечения, после чтения информации о каталогах из дампа. Далее , мы покажем, что вы увидите, при восстановлении каталога “/home”:
Первое, мы должны перейти в раздел файловой системы, где мы хотим восстанавливать нашу резервную копию. Это требуется, так как в диалоговом режиме программа restore восстанавливает все файлы с раздела файловой ситемы, из которой она была запущена.
Перейдите в раздел, который вы хотите восстановить (каталог “/home” в нашем случае) используя следующую команду:
[root@deep /]# cd /home
Для восстановления файлов из дампа в диалоговом режиме используйте команду:
[root@deep /home]# restore -i -f /dev/st0
restore >
На вашем терминале вы увидите командную строку, для получения списка файлов текущего или заданного каталога используйте команду “ls”:
restore > ls
.:
admin/ lost+found/ named/ quota.group quota.user wahib/
restore >
Для изменения текущего рабочего каталога в заданный используйте команду “cd” (в нашем примере, мы переходим в каталог wahib):
restore > cd wahib
restore > ls
./wahib:
.Xdefaults .bash_logout .bashrc
.bash_history .bash_profile Personal/
restore >
Для внесения текущего каталога или файла в список файлов для извлечения используйте команду “add” (если задан каталог, то в список вносится он и все его потомки):
restore > add Personal/ restore >
Файлы, которые входят в список для извлечения обозначаются символом “*”, когда они выводятся командой “ls”:
restore > ls
./wahib:
.Xdefaults .bash_logout .bashrc
.bash_history .bash_profile *Personal/
Для удаления текущего каталога или заданного файла из списка файлов для извлечения используйте команду “delete” (если задан каталог, тогда вместе с ним будут удалены и все его элементы):
ЗАМЕЧАНИЕ Наиболее подходящий путь для извлечения большинства файлов из каталога это добавить каталог в список для извлечения, а затем удалить ненужные файлы.
restore > cd Personal/
restore > ls
./wahib/Personal:
*Ad?le_Nakad.doc *Overview.doc
*BIMCOR/ *Resume/
*My Webs/ *SAMS/
*Contents.doc *Templates/
*Divers.doc *bruno universite.doc
*Linux/ *My Pictures/
restore > delete Resume/
restore > ls
./wahib/Personal:
*Ad?le_Nakad.doc *Overview.doc
*BIMCOR/ Resume/
*My Webs/ *SAMS/
*Contents.doc *Templates/
*Divers.doc *bruno universite.doc
*Linux/ *My Pictures/
Для восстановления всех файлов из списка для извлечения используйте команду “extract” (Restore спросит какой том пользователь хочет монтировать. Наиболее быстрый путь извлечь несколько файлов – это начать с последнего тома и закончить первым):
restore > extract
You have not read any tapes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1
set owner/mode for '.'? [yn] y
Для выхода из интерактивного режима программы restore после завершения восстановления файлов используйте команду “quit”.
/sbin/restore > quit
ЗАМЕЧАНИЕ. О других методах восстановления информации из резервных копий созданных программой dump читайте в страницах руководства (man).
Восстановление файлов с tar
Более важным, чем выполнение регулярных резервных копий, является их доступность в момент, когда надо восстановить информацию! Здесь мы рассмотрим методы восстановления файлов, которые были скопированы командой “tar”.
Следующая команда будет восстанавливать все файлы из архива “full-backup- Day-Month-Year.tar”, который является примером резервной копии нашего каталога “home” и был создан в нашем примере описанном выше. Для восстановления полной резервной копии каталога “home” используйте следующую команду:
[root@deep /]# cd / [root@deep /]# tar xpf /dev/st0/full-backup-Day-Month-Year.tar
Вышеприведенная команда извлекает все файлы, содержащиеся в архиве, сохраняя оригинальные значения владельцев файлов и прав доступа к ним.
Опция “x” обозначает извлечение файлов.
Опция “p” сохраняет права доступа.
Опция “f” указывает на то, что следующим аргументом является имя архива или устройства.
Если вам не надо извлекать все файлы и каталоги из архива, вы можете указать, что вам нужно.
Для задания одного или более файлов, которые вы хотите извлечь из архива используйте следующую команду:
[root@deep]# cd /
[root@deep]# tar xpf /dev/st0/full-backup-Day-Month-Year.tar \
home/wahib/Personal/Contents.doc home/quota.user
Вышеприведенная команда извлекает файлы “/home/wahib/Personal/Contents.doc” и “/home/quota.user” из архива. Если вы хотите посмотреть, какие файлы находятся в архиве, то используйте опцию --list (-t):
[root@deep /]# tar tf /dev/st0
ПРЕДУПРЕЖДЕНИЕ. Если вы имеете в своей системе файлы с установленным битом “постоянства”, то используйте команду “chattr +i”, так как этот бит не сохраняется при резервном копировании при помощи команды tar.