2010-07-08

Файлообменник на samba. Часть 2

До сих пор не была решена проблема с установкой дисковых квот для пользователей. Сколько ни копался в гугле, так и не понял, как же использовать директивы в конфиге самбы: set quota command и get quota command. В итоге обошелся директивой root preexec, запускающей от root мой скрипт назначения квоты на пользователя:

[homes]
valid users = YOUDOMAIN+%S
browseable = no
writable = yes
create mode = 0400
directory mode = 0700
root preexec = /usr/sbin/set_quota %S
; admin users = %S
read list = YOUDOMAIN+%S
write list = YOUDOMAIN+%S


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

# pacman -S quota-utils


и настроить раздел в /etc/fstab на использование квот:

/dev/sdc1 /home ext4 defaults,usrquota 0 1


После перемонтировать раздел с квотированием и выполнить команды:

quotacheck /dev/sdс1
quotaon /dev/sdс1


Скриптик set_quota для установки квот тоже прост, как три копейки:

#!/bin/sh
/usr/sbin/setquota -u $1 400000 500000 400 500 /dev/sdс1

По команде:

# pacman -Ql quota-utils


можно получить список всех утилит пакета, но меня заинтересовали только edquota (ручное редактирование квот), repquota (сведения о квотах) и quota (информация о квоте на пользователя). Некоторые примеры использования:

Выдать информацию по квоте, только если она превышена:

# quota -q maotm


Выдать информацию по квотам пользователей в удобочитаемом формате, за исключением учеток компьютеров:

# repquota -s /dev/sdс1 | grep -v "#"

2010-07-05

Файлообменник на samba. Часть 1

Возникла необходимость создать файлообменник из одной сети в другую, с запретом удаления передаваемых файлов, чтобы контролировать, что гуляет из сети в сеть. В последнее время в деле создания критически важных сервисов мой выбор падает на Arch. Вот и в этот раз мой выбор пал не него :)
После некоторых экспериментов со схемами передачи файлов, остановился на следующей: вводим Samba-сервер в домен, после чего доступ будет организовываться только через доменные учетные записи. Каждому пользователю при входе создается домашняя папка по его логину в домене. Попутно можно создать общие папки для всех пользователей.
Процедура настройки линуксового сервера с samba в домен Windows расписана достаточно подробно в журналах (LXF200910) и сети Интернет, поэтому смысла перетирать все это заново нет. Технология создания домашних папок пользователей описана здесь.
В процессе настройки доступа к домашней папке наступил на грабли. Прописав в smb.conf заменитель (separator) обратного слэша, я безуспешно пытался войти в созданную папку. Оказалось, заменитель надо ставить везде в конфиге (например, YOUDOMAIN+%S). После этого все заработало.
Ниже привожу свой smb.conf:
#======================= Global Settings =====
[global]

workgroup = YOUDOMAIN

server string = Samba Server

security = ads

netbios name = SHARE

log file = /var/log/samba/%m.log

max log size = 50

realm = YOUDOMAIN.LOCAL

auth methods = winbind

idmap uid = 10000-20000
idmap gid = 10000-20000

winbind separator = +

winbind enum users = Yes
winbind enum groups = Yes

winbind use default domain = Yes

;winbind offline logon = Yes

preferred master = No

panic action =

log file = /var/log/samba/log.%m
debug level = 0
syslog = 0

interfaces = 10.10.0.0/24 10.11.0.0/16

obey pam restrictions = Yes

#======================= Share Definitions ===
[homes]
valid users = YOUDOMAIN+%S
browseable = no
writable = yes
create mode = 0400
directory mode = 0700
read list = YOUDOMAIN+%S
write list = YOUDOMAIN+%S

;[data]
; path = /media/data
; valid users = Administrator, @"Domain Users"
; admin users = Administrator
; write list = @"Domain Users"
;; read list = @"Domain Users"
; inherit permissions = yes
; inherit owner = yes

2010-01-07

Подключение к Fidonet

Недавно, нарвавшись на новость о выходе новой версии пакета программ fidoip для подключения к сети Fidonet, решил установить сей пакет и заодно получить пойнта.

Установка прошла гладко, но после запуска и последующего выхода из читалки GoldED-NSF обнаружил, что процессор начинает сильно загружаться. Поковыряв, откуда у этой беды растут руки, обнаружил, что в скрипте запуска используется перекодировщик luit, который и начинает после выхода из ge бесконтрольно жрать процессорное время. А все потому, что забыли добавить ключ -x, который завершает его работу после завершения работы запускаемой им программы:
/usr/bin/luit -x -encoding koi8-r /usr/local/bin/ge

После этого все пришло в норму. На этом заморочки не закончились. После запуска gl (ge через luit) при входе в любую область (так называются папки) сначала выскакивает сообщение:
"Индексы нодлиста недоступны"

Решение проблемы в том, чтобы запустить скрипт:
/usr/local/bin/nodelist.sh

Теперь golded не ругается. Последняя найденная заморочка в том, как написать из golded в конфу, область для которой еще не создана. Для этого оказалось достаточным прописать соответствующую строчку в конфиге fidoip:
/usr/local/etc/fido/config

по аналогии с другими, существующими, областями и снова запустить gl. Вуаля, область конфы появилась в списке!

Ноду в Махачкале не нашел ( а когда-то были), получил пойнта по IP у Виталия Гейдеко из Ставрополя. Так что теперь написать мне можно и по адресу 2:5064/54.44 :) Увы, пока лишь убедился в том, что в Fidonet по нынешним временам жизнь не бурлит, среди подписанных мной, наблюдаю относительную активность только в эхо-конфах RU.ANEKDOT и RU.BINKD. Есть ли жизнь на Марсе, покажет время. В сети я всего лишь 3-4 дня, так что выводы пока делать рано...

2009-12-23

Пополнение в семействе :)

    За прошедшее с предыдущего поста время сдался последний оплот Debian'а в моей квартире :) Правда, совместить мой старенький, по нынешним меркам, десктоп с ноутом по пакетной базе не получилось, ибо проц - 32-разрядный Pentium-4 1,7 ГГц. Но, в общем, переезд состоялся успешно, и позавчера-вчера я настроил на нем прием ТВ на тюнер KWorld на чипе bt878, сканер Umax Astra 2000P и принтер HP LaserJet 1018.

    С принтером проблем не было (да и откуда им быть, если на ноуте настроено все то же самое), да и вообще установка принтера под Linux сейчас, как мне кажется, почти беспроблемна.

    Со сканером пришлось повозиться. Он и раньше работал на Debian, но у меня так и не дошли руки разбора проблемы работы только под root. Пересобрал sane-backend с опцией прямого доступа к параллельному порту. В этот раз указание порта в /etc/sane.d/umax_pp.conf как /dev/parport0 вместо 0x378 решило проблему. Естественно, пользователь должен входить в группу scanner. Правда, получаемые изображения выглядят чуть светлее, чем на предпросмотре, ну для случаев, когда преимущественно сканируется текст, это не беда.

    В дополнение к сканеру поставил CuneiForm - открытую OCR-систему, и YAGF - интерфейс на Qt4 к ней. Увы, распознать таблицы эта система не смогла. Интерфейс YAGF несколько бедноват, но со своей задачей справляется. Только вывод лучше ставить в HTML. В принципе, я был довольно сильно удивлен приличным качеством распознавания печатного текста. Вот если бы еще таблицы и картинки... Поставил на пробу так же cuneiform-qt-git, но он выводил вместо текста только каракули. Так что пока этому пакету жирный минус.

    TV-плата была настроена по этой ссылке. Еще надо включить своего пользователя в группу video, т.к. ей, наряду с root, принадлежит устройство /dev/video0.

2009-10-27

3G от Мегафона

Недавно поставил брату Arch, но, так как у него ожидается переезд, не стали подключать кабельный интернет, а решили обойтись 3G-модемом с его работы. Три дня рыл по вечерам инет, т.к. модем нужно было возвращать, пробовал разные варианты, но все никак не ладилось. Нужно сказать, что информации по настройке в российских сотовых сетях маловато, IMHO. Вроде пишут, что в Ubuntu все делается легко, т.к. в NetworkManager есть настройки для всех сотовых операторов, но в Arch'е подобная перспектива не улыбается, да и не хочется ставить NM. Но в итоге, собрав отрывочные сведения в онлайне и оффлайне, заставил работать 3G-интернет.
Итак, имеется 3G-модем Huawei E220, залоченный под Мегафон и, собственно, мой любимый Arch :). Собственно, проблема в том, что модем сначала подключается как дисковое устройство, что препятствует его нормальной работе как модема. И все из-за Windows, под которую написано все ПО модема. Проблема решается установкой usb_modeswitch, но и его установка не столь тривиальна, как кажется. Бинарник уже скомпилирован, но только для 32-разрядной системы, поэтому сначала придется пересобрать его под x86_64 (описано в README):
gcc -l usb -o usb_modeswitch usb_modeswitch.c

далее стандартно:
# make install

вроде можно радоваться, ан нет. Еще вручную надо раскидать файлы:
usb_modeswitch.sh и usb_modeswitch.tcltcl установлен?) в /usr/sbin
80-usb_modeswitch.rules в /etc/udev/rules.d
каталог usb_modeswitch.d в /etc
и еще взять с этого же сайта последний usb_modeswitch.conf и закинуть его в /etc.

Ну теперь вроде все. Остается настроить в /etc/usb_modeswitch.conf секцию соответствующего модема (по умолчанию все секции закомментированы):

########################################################
# Huawei E220 (aka "Vodafone EasyBox II", aka "T-Mobile wnw Box Micro")
# Huawei E230
# Huawei E270
# Huawei E870
# and probably most other Huawei devices (just adapt product ID)
#
# Two options: 1. removal of "usb-storage" 2. the special control
# message found by Miroslav Bobovsky
#
# Contributor: Hans Kurent, Denis Sutter, Vincent Teoh

DefaultVendor= 0x12d1;
DefaultProduct= 0x1003

# choose one of these:
;DetachStorageOnly=1
HuaweiMode=1


и после можно втыкать модем :)
Теперь настраиваем соединение через pppd. Описывать мучения с настройкой не буду, а приведу готовые конфиги (некоторые опции здесь наверняка лишние, как-нибудь надо будет подчистить):

/etc/ppp/peers/megafon-h3g

# /etc/ppp/peers/huawei-e220 pppd script
# pppd call huawei-e220

/dev/ttyUSB0
460800
modem
crtscts
user megafon
password megafon
noccp
nopcomp
noaccomp
nobsdcomp
nodeflate
novj
novjccomp
debug
dump

noipdefault
defaultroute
persist
nodetach
usepeerdns
connect "/usr/sbin/chat -v -f /etc/ppp/megafon-h3g.chat"
noauth

/etc/ppp/megafon-h3g.chat

TIMEOUT 3
ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT DELAYED
'' ATZ
OK 'AT+CGDCONT=1,"IP","internet"'
OK ATQ0V1E1S0=0&C1&D2+FCLASS=0
OK ATDT*99#
CONNECT ''

/etc/ppp/options
закомментировал все опции


После всех настроек ppp0 поднимается командой:
# pon megafon-h3g

Конечно, для нормального использования (после окончательной шлифовки) нужно закомментировать опции nodetach, dump и debug.
Тестил скорость через speedtest.net, показало download 0,51 Mb/s, upload 0,28 Mb/s, ping 208 ms на сервер в Воскресенске. EDGE нервно курит в сторонке :)
Теперь претензии. Иногда (а большей частью тестил вечером) не удается получить адрес от DHCP-сервера. На выходных тестил, иногда адрес получает с 1-2 попытки. Наверно, зависит от загрузки сети и станций. Другая проблема в том, что выданные DNS-сервера не отвечают, поэтому лучше, скорее всего, завести в /etc/resolv.conf свои, закомментировав опцию usepeerdns в /etc/ppp/peers/megafon-h3g.

2009-10-03

Проблема после обновления pacman'а

Вчера нарвался на необычную проблему. При обновлении пакетов через какое-то время внезапно закачиваемый пакет начинал расти в размерах, пока не заполнял собой все свободное пространство на винчестере. На русскоязычном форуме Archвыяснилось, что проблема существует не первый день, и активно обсуждается на англоязычном форуме. Опуская подробности, которые можно прочесть на обоих форумах, предлагается:
1. Подредактировать файл /etc/pacman.conf, разблокировав одну из опций XferCommand;
2. Скачать патченый pacman той же версии, что и оригинальный. Существует для обоих веток дистрибутива.
Поначалу отредактировал настроечный файл, но потом все же поставил патченый pacman. пока претензий нет.

2009-09-15

Собственная Wikipedia

Что-то вздумалось посмотреть на mediawiki, заодно освоить в азах конфигурирование apache и php. Все оказалось довольно просто.
Собственно, установим mediawiki, apache, php5 и mysql. Далее перейдем к настройке.
Свяжем php5 с веб-сервером apache. По умолчанию соответствующих строк в конфиге apache нет, хотя соответствующая библиотека php5 установлена и в archwiki они указаны:

/etc/httpd/conf/httpd.conf

LoadModule php5_module modules/libphp5.so

...

# PHP5
Include conf/extra/php5_module.conf


Вписываем эти строки в соответстующих местах конфига (где есть аналогичные). Так что archwiki придерживаться не нужно, ибо она устарела и некорректна.
Попробуем теперь запустить mediawiki:
http://localhost/mediawiki

Если видим заставку, то все в порядке, можно двигаться дальше, к настройке mediawiki. Но пока рано, ибо еще нет связки php5 с mysql (или другой БД, о чем вас предупредят, если попытаетесь сразу перейти к настройке). Тут archwiki уже точна:
* Отредактируйте /etc/php/php.ini (это в /usr/etc на старых системах) раскомментируйте следующие строки:

;extension=mysql.so

Теперь можно снова запустить mediawiki и приступить к настройке (среди прочего нам понадобится пароль mysql root). После заполнения полей и продолжительного ожидания, пока будет запущен процесс создания БД и начальной настройки сайта, получим готовую wiki, которую можно начать заполнять и улучшать. Правда, сначала нужно перенести файл LocalSettings.php из подкаталога config в корневой каталог mediawiki. Далее можно добавить в этот настроечный файл строки с установкой логотипа и иконки сайта (см. Configuration settings list на Main_Page)