CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
20.02.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки

Новые интересные порты

Unix.ginras.ru

Тем верным читателям, которые начали высказывать нетерпение, ко времени появления очередной статьи в этой колонке. BSD Hacks наконец завершена.

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

Отсечение установленных портов

Для начала, я разобралась c sysutils/pkg_cutleaves, описанном на Richard Bejtlich's weblog. У Ричарда жуткая способность шагать в ногу с тремя моими любимыми предметами: FreeBSD, коллекцией портов и безопасностью.

Если вы используете portupgrade для поддержания ваших портов в актуальном состоянии, рекомендую добавить в ваш набор pkg_cutleaves. Этот интерактивный Perl-скрипт исследует вашу базу данных установленных портов на предмет "листьев", или программ, которые были установлены, как зависимости и уже не нужны. Это даёт вам возможность очищать ваш винчестер от программ, которые вам больше не нужны или от неиспользуемых, в связи с модернизацией, зависимостей.

После того, как вы собрали порт из /usr/ports/sysutils/pkg_cutleaves, потратьте минуту на чтение man pkg_cutleaves. Затем, выполните как superuser:

# pkg_cutleaves
Package 1 of 73:
AbiWord2-2.0.5 - An open-source, cross-platform WYSIWYG word processor
AbiWord2-2.0.5 - [keep]/(d)elete/(f)lush marked pkgs/(a)bort? k
** Keeping AbiWord2-2.0.5.

На этой конкретной системе, у меня есть 250 установленных портов, 73 из которых полностью независимы. pkg_cutleaves покажет каждый из них, делая паузу, чтобы я могла решить - оставить или удалить этот порт. Я решила сохранить AbiWord-2, равно как и 6 следующих портов, связанных с XFree86.

Package 8 of 73:
apache-ant-1.6.1 - Java- and XML-based build tool, \
		conceptually similar to make
apache-ant-1.6.1 - [keep]/(d)elete/(f)lush marked pkgs/(a)bort? d
** Marking apache-ant-1.6.1 for removal.

Тем не менее, я решила удалить apache-ant поскольку он остался как память о давно удаленном приложении, чьей зависимостью он являлся. Я буду продолжать, пока не приму решение по всем 73 портам. Когда я закончу, pkg_delete выполнит удаление выбранных приложений. В этом примере я решила удалить 25 портов:

Package 73 of 73:
zip-2.3_1 - Create/update ZIP files compatible with pkzip
zip-2.3_1 - [keep]/(d)elete/(f)lush marked pkgs/(a)bort? k
** Keeping zip-2.3_1.

Deleting apache-ant-1.6.1 (package 1 of 25).
--->  Deinstalling 'apache-ant-1.6.1'
[Updating the pkgdb <format:bdb1_btree> in /var/db/pkg ... - 250
packages found (-1 +0) (...) done]

Когда удаление будет завершено, pkg_cutleaves еще раз пройдётся по базе данных установленных портов, чтобы выяснить, не появились ли новые "листья":

Go on with new leaf packages ((y)es/[no])? y

Этот процесс будет продолжаться, пока я не покончу со всеми "листьями". После этого он подведёт итог модификации пакетов:

Didn't find any new leaves, exiting.
** Deinstalled packages:
apache-ant-1.6.1
<snip>
** Number of deinstalled packages: 53

Когда вы запустите pkg_cutleaves в следующий раз, он снова спросит вас о портах, которые вы хотите сохранить. В моём примере это были AbiWord2 и несколько портов XFree86. Если вы знаете, что хотите сохранить, и вас раздражает необходимость подтверждать это каждый раз, создайте файл /usr/local/etc/pkg_leaves.exclude, содержащий имена портов, которые требуется сохранить:

AbiWord2
XFree86

Не забудьте включить ключ x (исключение):

% pkg_cutleaves -x

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

Улучшим Fortunes

Следующий порт для тех, кому нравится юмор в стиле BOFH (Bastard Operator From Hell - Адский Ублюдок Сисадмин - прим. переводчика; незаконнорожденный оператор из древнегерманской преисподней - это круто, прим. редактора:-)). Если шутки в стиле юмора забавляют вас, добавьте к своим fortunes BOFH-стиль, установив /usr/ports/misc/fortune-mod-bofh.

После установки, попробуйте его:

% fortune /usr/local/share/games/fortune/bofh
BOFH excuse #419:

overflow error in /dev/null

Если вы хотите, чтобы эти шутки случайным образом появлялись вместе с другими fortunes, скопируйте их как superuser в системную fortunes-директорию:

% cp /usr/local/share/games/fortune/bofh* /usr/share/games/fortune/

После копирования BOFH файлов, можете попробовать стиль BOFH в fortune набрав:

% fortune bofh

Это намного короче, чем предыдущее заклинание.

Ну и наконец, если вы фанат Futurama, повторите вышеописанное, для порта /usr/ports/misc/fortune-mod-futurama:

% cd /usr/ports/misc/fortune-mod-futurama
% make install clean
% cp /usr/local/share/games/fortune/futurama* /usr/share/games/fortune/
% exit
% fortune futurama
Fry: I want to see the edge of the universe.
Amy: Ooh, that sounds cool.
Zoidberg: It's funny. You live in the universe but you
never do these things 'til someone comes to visit.

Эта забава заставила меня поискать fortunes по Дугласу Адамсу. Быстрый поиск в Google навёл меня на fortune-hitchhiker project. Скачиваем fortune-hitchhiker.tgz, затем:

% tar xzvf fortune-hitchhiker.tgz
% cp fortune-hitchhiker/hitchhiker* /usr/share/games/fortune
% exit
% fortune hitchhiker
"'You know,' said Arthur, 'it's at times like this, when
I'm trapped in a Vogon airlock with a man from Betelgeuse,
and about to die from asphyxiation in deep space that I
really wish I'd listened to what my mother told me when I
was young.'
'Why, what did she tell you?'
'I don't know, I didn't listen.'"

-- Arthur coping with certain death as best as he could.

Возможно, другие фаны "Путеводителя по Галактике..." добавят его в коллекцию портов, что даст мне возможность обнаружить его на FreshPorts.

От переводчика: существует и порт ru-fortunes. Я могу ошибаться, но по-моему там была коллекция анекдотов. Честно говоря, меня этот порт не вдохновил... А вот от перевода fortune-hitchhiker'а я бы не отказался...

Получение подлежащих и согласование глаголов

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

# cd /usr/ports/textproc/queequeg
# make install clean

Этот порт установит qq - скрипт на Python'е, который может работать с любыми текстовыми, LaTeX, или HTML файлами, примерно так:

% qq filename

Queequeg project все еще на этапе бета-версии. Его цель - помочь автору, для которого английский язык не родной, правильно согласовывать времена, склонять глаголы и т.п. В настоящий момент разработчики всё еще дорабатывают фильтрацию некорректного определения правильных форм, так что результат всё ещё может быть огорчительным для тех, кто не в ладах с английской грамматикой. Что ж, если английская грамматика - ваш конёк и вы располагаете свободным временем, проект ищет экспертов. Когда этот проект перерастёт стадию бета-версии - он будет отличным подспорьем для неанглоязычных разработчиков в нелёгком деле написания man-ов на английском языке.

Укрепляем безопасность системы

Последний порт, который я хотела бы продемонстрировать, я нашла в /usr/ports/security/lockdown. Сначала я отнеслась к нему скептически, поскольку утверждалось, что порт является сценарием, укрепляющим безопасность системы FreeBSD. Я настороженно отношусь к таким утверждениям, поскольку улучшение безопасности системы явно не попадает в категорию один-размер-подходит-всем.

Однако, Daniel Blankensteiner проделал отличную работу по созданию полностью настраиваемого сценария, позволяющего вам использовать различные варианты заказных конфигураций. Администратор может легко создать несколько файлов настроек для каждой из своих систем. Легко использовать не только конфигурационные файлы, так же легко просмотреть полную запись изменений, внесённых в свежеустановленную или обновлённую систему.

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

Затем:

% cp /usr/local/etc/lockdown.conf.sample /usr/local/etc/lockdown.conf

Замечание: Если вы планируете создать конфигурационные файлы для нескольких систем, включите hostname системы в имя копируемого файла конфигурации. Таким образом, вы можете централизованно хранить множество файлов настроек в одном месте. Затем, когда вы будете использовать утилиту lockdown, вы сможете выбрать предпочтительный файл конфигурации, определяя его по имени и используя ключ -f.

Скопируйте файл и откройте его в своём любимом редакторе. вы обнаружите, что он хорошо задокументирован и снабжен множеством примеров, укрепляющих вас в намерении немедленно приступить. К примеру, эта секция ужесточает /etc/fstab для более защищенного монтирования ваших разделов:

####################
# Mounting options #
####################
# If the mount point exists, mount it with the specified options.
# Please remember that /tmp has to be executable to "make world"
# and if you need to jail a process in a partition, don't mount it with
"nodev"

mount /tmp       rw,noexec,nosuid,nodev,nosymfollow
mount /var/tmp   rw,noexec,nosuid,nodev,nosymfollow
mount /home      rw,noexec,nosuid,nodev
mount /usr/home  rw,noexec,nosuid,nodev
mount /var       rw,nosuid,nodev
mount /var/mail  rw,noexec,nodev,nosuid

Если вы впервые сталкиваетесь с этими опциями монтирования, взгляните на раздел секции -o на странице man mount. Также для определения опций, наиболее подходящих для вашей системы, весьма полезным окажется ресурс FreeBSD Security How-To:

Следующий раздел позволяет вам установить опции /etc/rc.conf а также даёт несколько идей - с чего начать. Смотрите man rc.conf для определения каждой опции.

########################
# /etc/rc.conf options #
########################
# This will just add some options to /etc/rc.conf
rc_conf enable_sendmail="NONE"
rc_conf kern_securelevel_enable="YES"
rc_conf portmap_enable="NO"
rc_conf inetd_enable="NO"
rc_conf kern_securelevel="3"
rc_conf clear_tmp_enable="YES"
#rc_conf update_motd="NO"
rc_conf syslogd_flags="-ss"	# Comment this if this is a
				# log server (or change it)

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

##################
# Stealth server #
##################
# If this is a log server, firewall or gateway you can put it into
# stealth mode.
# This is NOT recommended for normal server use.
# Note: For a stealthier server you should also block some icmp request
# like:
# Echo, Time and Netmask requests
#rc_conf tcp_drop_synfin="YES"
#sysctl net.inet.tcp.blackhole=2
#sysctl net.inet.udp.blackhole=1
#kern 	options	IPSTEALTH
#kern 	options	TCP_DROP_SYNFIN

Securing FreeBSD освещает эти и многие последующие опции более детально.

Следующий раздел посвящен настройке различных сетевых конфигураций:

######################
# Networking options #
######################
rc_conf icmp_drop_redirect="YES"
rc_conf icmp_log_redirect="YES"
rc_conf log_in_vain="YES"
kern 	options	RANDOM_IP_ID
openssh AllowGroups wheel
openssh Protocol 2

set_warning "
Warning
I blah blah blah blah
and then some"

Последние опции настраивают SSH. Более подробно они описаны в Configuring SSH.

Далее, вы можете настроить по своему вкусу /etc/login.conf:

#######################
# Login Class options #
#######################
login_class default minpasswordlen=8
login_class default mixpasswordcase=true
login_class default uname=077
# Encryption of passwords
auth_conf crypt_default=blf
login_class default passwd_format=blf

Затем, /etc/ttys:

##############
# Root Login #
##############
allow_direct_root_login NO	# Set tty* in /etc/ttys to
				# insecure
password_protect_singleuser_mode YES	# Set console to insecure
					# in /etc/ttys

Теперь пользовательские настройки:

#####################
# Restrict the user #
#####################
allow_cron NO
allow_at NO
sysctl security.bsd.see_other_uids=0	# Use kern.ps_showallprocs  
                                        # for 4.X

Как обычно - опции ядра:

##################
# Kernel options #
##################
kern options	SC_NO_HISTORY           # Don't keep history,
                                        # so there can't be scrolled
kern options	SC_DISABLE_REBOOT       # Disable ctrl+alt+del
#kern options	SC_DISABLE_DDBKEY       # Uncomment if using the
					# kernel debugger

Наконец, целый раздел о разрешениях и флагах файлов:

#################################
# Restrict access to suid files #
#################################
# If you want /somefile to have:
#	Permissions 0000
#	User root
#	Group wheel
#	Flags uappnd and schg
# Just write:
# file /somefile p: 0000 u: root g: wheel f: uappnd,schg
file /bin/rcp p: disable
file /sbin/mksnap_ffs p: noWorld file /sbin/ping p: noWorld
<snip long list of files> ################################ # Restrict access to gid files # ################################ file /usr/bin/fstat p: noWorld file /usr/bin/netstat p: noWorld file /usr/bin/vmstat p: noWorld file /usr/bin/wall p: noWorld file /usr/bin/write p: noWorld file /usr/bin/lpq p: noWorld file /usr/bin/lpr p: noWorld file /usr/bin/lprm p: noWorld file /usr/libexec/sendmail/sendmail p: noWorld file /usr/sbin/trpt p: noWorld file /usr/sbin/lpc p: noWorld ######################################## # Restrict access to information files # ######################################## # if you change permissions on files also # listed in /etc/newsyslog.conf, # Lockdown will also adjust /etc/newsyslog.conf accordingly file /sbin/sysctl p: noWorld file /usr/bin/uname p: noWorld file /sbin/kldstat p: noWorld #file /usr/bin/netstat p: noWorld #Uncomment if using 4.X file /sbin/route p: noWorld <snip long list of files>

Меня очень порадовала полнота файла и то, как легко внести свои изменения. Если вы хотите предложить новые секции для добавления в файл, Daniel всегда открыт для предложений. Контактная информация находится на его сайте.

Вывод

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

Ну и наконец, если вы живёте в Северной Америке, отметьте 13-16 майские числа в своём календаре и проверьте, сможете ли вы приехать в Оттаву, Онтарио, Канада. Да-да, надвигается BSDCan и на нем будет много докладчиков. Это ваш шанс встретиться с другими пользователями FreeBSD, увидеть лицом к лицу людей, чьи имена вы наверняка видели на сайте и в почтовых рассылках FreeBSD. Я буду заведовать регистрационным столом, и надеюсь увидеть вас там. Мы также попытаемся к тому времени отпечатать BSD Hacks.

Dru Lavigne is an instructor at Marketbridge Technologies in Ottawa and the maintainer of the Open Protocol Resource.





Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds