середу, 10 грудня 2008 р.

Tablet genius EasyPen в gentoo

На свой День Вырождения разжился данным планшетом. Планшет работает через последовательный порт(на сегодняшний день - считается морально устаревшим). Понятно, сразу возникло жгучее желание завести это устройство в Xorg, чтобы поваять в GIMP


ABSTRACT (этот раздел можно пропустить)

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




Thom Yorke, Radiohead - Speed Painting by Nico Di Mattia, gimp.com



После саундтрека к этому ролику (Street spirit1) я заценил, что Radiohead не только труЪ банда, которая презирает DRM'щиков, но ещё и интересную мне музыку сочиняет, местами довольно зашибенную (то, что "местами" - лично моё ИМХО) :-)


INFO


Вот немного фотографий планшета:

  • Непосредственно сам планшет:


  • довольно заеложенный ящик из под планшета:

  • Содержимое ящика:

    • Бумажки всякие, по большому счёту ненужные, но добавляющие солидности: гарантийка, инструкция и т.п.
    • Дискетка с неким "Patch'ем"
    • CD с драйверами
    • Подставка для "карандаша"




  • Подставка чем-то мне очень понравилась. Тяжёленькая, аскетичной формы, с приятной "антискользящей" бархатной подложкой



  • А разьём - вот такой, для последовательного порта PC. Это тот, который в продуктах и документации одной грязной корпорации назван как COM1 или COM2 :) .



  • На всякий случай предъявлю заводскую наклейку в общем виде, может кому и пригодится эта информация





CONFIGURATION

Настройка для Xorg

(Справка по версиям, у меня установлены:
x11-base/xorg-x11-7.2
x11-base/xorg-server-1.3.0.0-r6
x11-drivers/xf86-input-summa-1.1.0
sys-libs/gpm-1.20.1-r6)


Редактируем /etc/make.conf - добавляем в переменную INPUT_DEVICES новый драйвер - summa:

...
INPUT_DEVICES="keyboard mouse summa"
...


Пересобираем xorg-server:

root ~ # emerge xorg-server


добавляем в /etc/X11/xorg.conf в секцию ServerLayout следующую строку:

/etc/X11/xorg.conf
...
Section "ServerLayout"
Identifier     "X.org Configured"
Screen      0  "Screen0" 0 0
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Tablet"
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
...


Добавляем в секцию Module строку:

/etc/X11/xorg.conf
...
Section "Module"
Load  "glx"
Load  "extmod"
Load  "xtrap"
Load  "record"
Load  "GLcore"
Load  "dbe"
Load  "dri"
Load  "drm"
Load  "freetype"
Load  "type1"
Load  "summa"   # для планшета
EndSection
...



Добавляем в xorg.conf ещё одну секцию InputDevice, только "Identifier" устанавливаем как "Tablet"

/etc/X11/xorg.conf
...
Section "InputDevice"
Driver "summa"
Identifier "Tablet"
Option "Device" "/dev/ttyS0"
Option "InputFashion" "Tablet"
Option "Mode" "Absolute"
Option "Name" "EasyPen"
Option "Compatible" "True"
Option "Cursor" "Stylus"
Option "Protocol" "Auto"
Option "SendCoreEvents" "on"
Option "Vendor" "GENIUS"
EndSection
...


теперь завершаем свою сессию в иксах, выйдя в ваш *dm. Затем заходим в системную консоль (Ctrl+Alt+F1) и перезагружаем иксы:

root ~ # /etc/init.d/xdm restart


Уже здесь планшет должен заработать. Во-первых - то, что он определился можно заметить по моргающему зелёному светодиоду на самом планшете, а также непосредственно - когда попытаетесь поводить "карандашом" (пером) по планшету, курсор на экране будет двигаться за его движениями :)


Вот собственно всё, что касается настройки планшета для иксов.

Дополнительно настроить для рисования ускорение, точность и кнопки можно в GIMP в меню "Файл --> Настроить --> Дополнительные устройства ввода"

Вот что было нашкарябано для проверки:




Видите, как минимум, у меня планшет работает :)

Настройка для работы в системной консоли

Отъявленные мизантропы могут настроить планшет и для использования в системной консоли, используя стандартный демон gpm. Сейчас объясню в чём особенность этой ситуации:
  • В начале я настроил именно в консоли, но дальнейшем колдовстве у меня пару раз намертво висли иксы, утаскивая с собой клавиатуру и прочие устройства ввода. Мало приятного в вынужденной перезагрузке после двухнедельного аптайма, без возможности вызвать EmergencySync
  • С планшетом можно работать либо в консоли, либо в Xorg. /dev/ttySxx походу неделим между процессами. Поэтому, если хотите работать с планшетом чисто в консоли, то закомментируйте в xorg.conf следующую строку в секции ServerLayout:

    /etc/X11/xorg.conf
    ...
    Section "ServerLayout"
    Identifier     "X.org Configured"
    Screen      0  "Screen0" 0 0
    InputDevice    "Mouse0" "CorePointer"
    #InputDevice    "Tablet"
    InputDevice    "Keyboard0" "CoreKeyboard"
    EndSection
    ...
    



для настройки необходимо, чтобы никакие проги не использовали планшет. Обычно это ранее запущенный gpm или xorg. Если что, на всякий случай выполните:


root ~ # /etc/init.d/xdm stop
root ~ # /etc/init.d/gpm stop


потом просто выполните:

root ~ # gpm -m /dev/ttyS0 -t summa


планшет должен заработать без особых проблем.

BUGS


  • Не стоит одновременно настраивать/использовать планшет в xorg и консоли.

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

    root ~ # gpm -t summa -m /dev/ttyS0
    O0o.oops(): [server_tools.c(88)]: Use -m device -t protocol [-o options]!
    


    Возможно это глюки только для моей версии ядра либо gpm, но видать из за этих "Oops"'ов у меня в процессе настройки пару раз подвисана намертво видеосистема с клавой вдобавок.



LINKS

Планшеты :: FAQ :: Genius: (тут ещё для XFree86 рассказывают, старая фигня, но наиболее полезная)

gpm-types(7) - Linux man page Список типов устройств ввода, поддерживаемых gpm. Список вариантов для опции -t команды gpm



1
как оказалось - в ролике была использована очень трофейная акустическая версия этой песни. Еле нашёл после долгого перекапывания интернетов, притом - в gnutella'е.




Читать далее

вівторок, 9 грудня 2008 р.

siemens C72 в gentoo

NAME

Подключение siemens C72 через FUSE->SieFS в среде Gentoo Linux. В итоге с содержимым телефона можно будет работать как с обычным usb_flash-накопителем.


DESCRIPTION

Недавно намутил себе данный телефон в полудохлом состоянии. После пятнадцати минут ковыряния отвёрткой (полная разборка мобилы) и старательной и аккуратной чистки нужных мест волшебной стирательной резинкой, получил вполне классный телефон, который ещё ни разу меня не подвёл (не смотря на свой довольно почтенный возраст и потрёпанный вид).

Со временем возникла задача слить с телефона фотки и другую полезную информацию в Linux без мучения с wine либо виртуальными машинами.

После пары минут шуршания в поисковике нарыл подходящие инструкции для общих случаев, но инструкций непосредственно для Gentoo, (да ещё и на русском) не нашёл. Решил заполнить этот пробел в документации к gentoo, написав данный коротенький HOWTO.

SOURCE

Вот весь набор в выпотрошенном виде:


  • Коробок

  • Кулёк

  • Mini-CD "SIM Mobile phone manager" - проприетарная прога под Грязное Поделие Зла. (говорю сразу - в wine не идёт)

  • Непосредственно USB кабель (Куплено на "Героев Труда" за 35 гульденов)






Разъём к телефону:



Разъём к компьютеру, USB (скорей всего - с встроенным в него ВЧ фильтром)





CONFIGURATION

Что делать:

Установить поддержку USB to Serial в ядре:



Device Drivers --->
USB support --->

[M] Support for Host-side USB

USB Serial Converter support --->
USB Serial Converter support
[*] USB Generic Serial Driver
[M] USB Prolific 2303 Single Port Serial Driver



также не забудьте о необходимости включенийя поддержки FUSE (Filesystem in USErspace):


File systems --->
[M] Filesystem in Userspace support


Если эти опции не были включены ранее, то включить их, пересобрать ядро. Загрузить модули/перезагрузить комп.

Подключить мобилу к компу через USB кабель. Выполнить команду:


root ~ # dmesg | tail


На консоль должно выйти нечто, по смыслу похожее на следующий текст:


usb 1-5: new full speed USB device using ohci_hcd and address 4
usb 1-5: configuration #1 chosen from 1 choice
pl2303 1-5:1.0: pl2303 converter detected
usb 1-5: pl2303 converter now attached to ttyUSB0


Если у вас вышел аналогичный текст, то всё в порядке. Продолжаем.

Соберите sys-fs/fuse:


root ~ # emerge sys-fs/fuse


Теперь загрузите модуль FUSE:


root ~ # modprobe fuse




Соберите пакет sys-fs/siefs - поддержку SieFS для fuse:


root ~ # emerge sys-fs/siefs


создайте каталог для мобильника


root ~ # mkdir -p /mnt/mobile


Теперь просто примонтируйте ваш мобильник командой mount, подставив имя устройства /dev/ttyUSBx, которое было выведено в результате выполнения dmesg | tail. Монтируйте из-под root'а, это некрасиво, зато работает сразу и без особых костылей.


root ~ # mkdir -p /mnt/mobile
root ~ # mount -t siefs /dev/ttyUSB0 /mnt/mobile


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


root ~ # ls -l /mnt/mobile
drwxrwxrwx 1 root root 0 Янв 1 2004 Data


Или ещё симпатичнее (если у вас установлена утилита app-text/tree):


root ~ # tree -L 2 /mnt/mobile
/mnt/mobile
`-- Data
|-- Animations
|-- Java
|-- Misc
|-- MmsTemp
|-- Pictures
|-- Skins
|-- Sms archive
|-- Sounds
|-- System
|-- Text module
|-- Themes
|-- Videos
`-- Voice memo

14 directories, 0 files


Если всё именно так, то можете сливать и заливать информацию на телефон без особых проблем.


SECURITY

Не смотря на угрожающе-навязчивое использование учётки root'а в этом HOWTO, именно в этом случае такой расклад уместен, и всё не так уж плохо. Особенно - если учесть соотношение времени, когда нужно залить\слить файлы с мобилы, и время потраченное на костылизацию изначально стройной системы прав доступа и конфигов в Gentoo, то в большинстве случаев игра не стоит свеч и можно смело пользоваться учёткой root.
Непривелигерованные пользователи по идее не должны добраться до содержимого мобилки, т.к. для них системой уготован следующий отлуп:


user ~ % ls -l /mnt
ls: невозможно получить доступ к /mnt/mobile: Отказано в доступе
итого 0
drwxr-xr-x 6 root root 160 Дек 1 14:46 backups
drwx------ 2 root root 72 Июн 17 20:41 cdrom
drwxr-xr-x 2 root root 48 Сен 5 10:14 flash
drwx------ 2 root root 72 Июн 17 20:41 floppy
?????????? ? ? ? ? ? mobile
drwxr-xr-x 2 root root 48 Сен 26 11:08 secretar
drwxr-xr-x 2 root root 48 Сен 16 17:04 sto-db
drwxr-xr-x 2 root root 48 Ноя 21 11:13 zames

user ~ % ls -l /mnt/mobile
ls: невозможно получить доступ к /mnt/mobile: Отказано в доступе

user ~ % ls -l /mnt/mobile/Data
ls: невозможно получить доступ к /mnt/mobile/Data: Отказано в доступе


и т.д.

И всё-же я вам нисколько не советую расслабляться лишний раз. Информацию слили либо залили - не забудьте вскоре отмонтировать телефон, как говорится - "бережёного боХ бережёт". ИМХО, не стоит злоупотреблять всякими конструкторами костылей, коими являются вещи, подобные связке FUSE->SieFS, даже если они выполняют свою основную работу в userspace.

BUGS

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


root ~ # ls /mnt/mobile
ls: чтение каталога /mnt/mobile: Ошибка ввода/вывода


В таком случае мне помогал следующий пакет действий:

Отмонтируем телефон:


root ~ # umount /mnt/mobile


смотрим, не остались ли висеть процессы монтирования:


root ~ # ps ax | grep siefs
23669 ? Ssl 0:00 /sbin/mount.siefs /dev/ttyUSB0 /mnt/mobile -o rw


если остались - безжалостно их мочим:


root ~ # killall -9 mount.siefs


потом отключаем мобилу и сам кабель от компа. Мобилу выключаем, затем включаем, ждём около 30 сек/1 минуты (у меня это время, когда начинает полноценно работать основное меню в мобильнике).

Потом подключаем кабель к телефону и компу, ждём около 5...10 сек и монтируем как указано выше.
Мне подобный рецепт помогает.

PS: Фото в этом ээ... "HOWTO" сняты с помощью описываемого C72. Как видите, ничего фантастического :)

LINKS

Opennet.ru: Монтирование телефонов Siemens под Linux как USB диска

TODO


  • Проверить возможность сливания содержимого SIM-карты, контакт-листа, заметок и прочего полезного барахла, которое может быть сохранено в мобильник


  • Использовать c72 как GPRS-модем. Думаю, это будет элементарно: просто порт модема в wvdial прописывается как /dev/ttyUSBxx, а дальше работаем как с обычным модемом с помощью AT-команд, но с учётом специфики GPRS подключения




Читать далее

пʼятницю, 5 вересня 2008 р.

[SOLVED] xorg-server свежие иксы не запускаются dlopen: /usr/lib64/xorg/modules/drivers//atimisc_drv.so: undefined symbol: ATIFoundryNames

Решил собрать свежую x86_64 систему чисто под мой athlon64. "Затык" произошёл при запуске иксов, для которых я решил принципиально использовать только открытые драйвера на мой radeon_x300 (задолбали внезапные падения иксов в самый неподходящий момент, ещё и с panic'ами ядра). В инете в итоге нашёл штуки четыре ссылки, в которых под разным соусом мне говорилось, что проблема нерешаема, нужно ставить проприетарное гавно от ati. Короче, я подумал и похоже разобрался, как устранить этот глюк.

Вот что выдавала X -configure


root ~ # X -configure


X Window System Version 1.3.0
Release Date: 19 April 2007
X Protocol Version 11, Revision 0, Release 1.3
Build Operating System: UNKNOWN
Current Operating System: Linux grog 2.6.25-gentoo-r7 #7 SMP Wed Sep 3 21:32:57 EEST 2008 x86_64
Build Date: 05 September 2008
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Fri Sep 5 09:35:52 2008
List of video drivers:
radeon
r128
atimisc
ati
dlopen: /usr/lib64/xorg/modules/drivers//atimisc_drv.so: undefined symbol: ATIFoundryNames
(EE) Failed to load /usr/lib64/xorg/modules/drivers//atimisc_drv.so
(EE) Failed to load module "atimisc" (loader failed, 7)
(++) Using config file: "/root/xorg.conf.new"
(WW) RADEON: No matching Device section for instance (BusID PCI:3:0:1) found
(**) RADEON(0): RADEONPreInit
(II) Module already built-in


Xorg detected your mouse at device /dev/input/mice.
Please check your config if the mouse is still not
operational, as by default Xorg tries to autodetect
the protocol.

Your xorg.conf file is /root/xorg.conf.new

To test the server, run 'X -config /root/xorg.conf.new'



[Solution]
В итоге сделал несколько шагов и проблема решилась:

включил в конфиге ядра

menuconfig:

Device drivers -->
Graphics support -->
[M] Direct rendering manager -->
[M] ATI Radeon



root ~ # emerge x11-base/x11-drm

root ~ # modprobe drm
root ~ # modprobe radeon

root ~ # /etc/init.d/xdm restart


Думаю, это сэкономит время тем, кто будет искать способ разрешения проблемы с atimisc_drv.so: undefined symbol: ATIFoundryNames


Читать далее

середу, 16 липня 2008 р.

Укртелеком и его DNS баны

Упал DSL-линк, убил весь день, чтобы всё-таки докопаться до истины, а именно - до того, что у Укртелекомовских DNS-Серверов возможно, установлена защита от DDoS'а или нечто подобное
В общем - эта статья - возможно, важная информация для пользователей с ADSL ("ОГО" и т.д.) подключением к интернету от Укртелекома, которым могут пользоваться виндовые клиенты.




У меня модем DLink DSL-2500BRU/D, хороший модем, работает без проблем (правда, греется как сволочь...). Иногда его крепко подглючивало - DNS-запросы переставали перенаправляться на сервера имён Укртелекома, но соединения через IP работали без проблем.

типа вот так:


user@host ~ % ping rambler.ru
ping: unknown host rambler.ru


зато:


user@host ~ % ping 81.19.70.3
PING 81.19.70.3 (81.19.70.3) 56(84) bytes of data.
64 bytes from 81.19.70.3: icmp_seq=1 ttl=52 time=118 ms
64 bytes from 81.19.70.3: icmp_seq=2 ttl=52 time=118 ms
64 bytes from 81.19.70.3: icmp_seq=3 ttl=52 time=115 ms
^C
--- 81.19.70.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 115.089/117.314/118.583/1.578 ms


Через время пропадал даже такой способ связаться с инетом, скорей всего модем из за отсутствия соединений впадал в сон, хотя это и маловероятно.

Лечило положение выключение/включение модема (чтобы он себе новый IP присвоил)

Короче, за последние три дня эта ситуация настолько обострилась, что модем стал нормально работать минут 10, а потом вис DNS и приходилось идти, перезагружать его вручную (так и не понял, какого хрена вместе с форвардингом DNS зависал и веб-фейс модема)...

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

Ну, я модем перепрошил самой свежей версией прошивки (хотя бывшая версия была залита туда всего месяц назад), сбросил настройки, залил дефолтный прошивочный конфиг, и нифига - не пашет DNS, отваливается через 3-5 минут.

Стал грешить на локальный сервер имён (djbdns), излазил его вдоль и поперёк, и - нашёл вредителя!

Исследуя логи tinydns, заценил следуюшие записи:


/etc/tinydns/log/main/current
...
@40000000487e038b2b840d84 0a0301f0:0548:1740 - 0001 asbmx.sbell.com.cn
@40000000487e038b31105b2c 0a0301f0:0548:1745 - 0001 sbbmail4.sbb.ch
@40000000487e038b311066e4 0a0301f0:0548:1744 - 0001 sbbmail2.sbb.ch
@40000000487e038b31129194 0a0301f0:0548:1743 - 0001 sbbmail3.sbb.ch
@40000000487e038b31141834 0a0301f0:0548:1742 - 0001 sbbmail1.sbb.ch
@40000000487e038d0bbe89d4 0a0301f0:0548:1746 - 0001 smtp.mediacat.ne.jp
@40000000487e038d18d7f664 0a0301f0:0548:1747 - 0001 sbt.co.in
@40000000487e038d38024b84 0a0301f0:0548:1749 - 0001 mail.sbstone.com
@40000000487e038d3802573c 0a0301f0:0548:1748 - 0001 cle1.visn.net
@40000000487e038f2a9bff44 0a0301f0:0548:1766 - 000f sb-hausmeisterservice.de
@40000000487e038f2a9c0afc 0a0301f0:0548:1765 - 000f sbhauditors.com
@40000000487e038f2a9c0ee4 0a0301f0:0548:1764 - 000f sbhatt.fsnet.co.uk
@40000000487e038f2a9c12cc 0a0301f0:0548:1763 - 000f sbhatnagar.com
@40000000487e038f2a9d66a4 0a0301f0:0548:1762 - 000f sbhassociates.com
@40000000487e038f2a9e7fe4 0a0301f0:0548:1761 - 000f sbhart.com
@40000000487e038f2a9fb864 0a0301f0:0548:1760 - 000f sbha.org.uk
@40000000487e038f2aa11024 0a0301f0:0548:175f - 000f sbhaonline.com
@40000000487e038f2aa2545c 0a0301f0:0548:175e - 000f sbhamm.de
...


как видно из этой картины (запросы имён идут по алфавиту и с минимальной задержкой), некий комп перебирает dns-имена, и это скорее всего, делается для рассылки спама, или взлома ssh или для другой работы, которой занимаются компы в ботнете.

Тут-же проверил ситуацию tcpdump-ом, и засёк источник спама - один из ноутов менеджеров. Судя по всему, на нём жил целый выводок вирусов.

пришёл, заценил, как народ браво щеголяет эксплорером (ноут личный), пожурил, забрал ноут на лечение. Нашёл на нём видов 6 всякой гадости, в которой точно были пара-тройка спам-ботов.

Заметьте - как только я отключил зловредный ноут от сети и перегрузил роутер, инет стал работать как по маслу 8)

Итог "исследования"

Скорее всего, на Укртелекомовских DNS-серверах стоит защита от DDoS атак, dns-флуда либо чего-то подобного. Она срабатывает, когда идёт частый перебор доменных имён с большим процентом запроса несуществующих. Если DNS стал падать, проверьте траффик, проходящий через ваш ADSL роутер на наличие DNS-флуда, виндовые компы, выходящие с него в инет - на наличие спамботов и прочих вирусов.

Бан работает довольно эффективно и просто - на любые запросы с "флудящих" IP-адресов перестают отвечать ихние DNS-сервера. Извне это выглядит так, как будто их серверы "легли" от нагрузки - пинги к ним не проходят, прямые запросы (через то-же dnsq) перестают восприниматься.

Лечился бан перезагрузкой роутера, чтобы тот взял новый динамический IP, не занесённый в бан-лист. Работало это в зависимости от интенсивности флуда.

PS: подобное поведение я ранее замечал, были подозрения, подтверждавшиеся опытами и просмотров DNS-запросов. Всё устаканивалось, как только большая часть народа с ноутами сруливало по командировкам.

PPS:
А в этот раз ещё прибавилась и жара, от которой даже у довольно неприхотливых свичей чердак съезжал, и их приходилось перегружать. А ведь модем грелся и без жары прилично. В итоге пришлось слепить из валявшегося в загашнике кулера, переключателя, пары гнёзд, шурупа и куска металлической заглушки от корпуса компа сваять импровизированную охлаждающую установку :) . Фотки этого девайса, исполненного в "технобомж" стиле выложу чуть позже :)


Читать далее

вівторок, 3 червня 2008 р.

sudo постоянно спрашивает пароль, что делать

Блин, битых три часа бодался с sudo, чтобы оный не спрашивал пароли постоянно, т.к хотел использовать sudo в скрипте. Самое интересное, что в итоге на двух почти одинаковых машинах проверял - в одной пашет, в другой - пароль постоянно спрашивает.


В общем, в итоге просто сравнив между всё, что только можно - PAM, всё касательно ldap, переменные окружения, версии пакетов, группы...

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

Добавляете Вашего пользователя в группу users и всё пашет:


root ~ # gpasswd -a my_user users


Поменьше-бы таких непоняток :)


А вот зачем это всё нужно было: для одной досовской софтины на FoxPro нужно было получать доступ к файлам на удалённом файлсервере через виндовый протокол

Вот на всякий случай мой конфиг от sudo:

/etc/sudoers
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.

# Host alias specification

Host_Alias LHOST=localhost,grog



# User alias specification
User_Alias STO_USERS=%stousers

# Cmnd alias specification
Cmnd_Alias MOUNT_STO=/bin/mount /mnt/sto-db,/bin/umount /mnt/sto-db

# Defaults specification

# Reset environment by default
Defaults env_reset

# Runas alias specification

Runas_Alias SUP=root

# User privilege specification
root ALL=(ALL) ALL

#
# Local specs
#

STO_USERS LHOST=(SUP) NOPASSWD: MOUNT_STO


вот нужная строка из fstab:


/etc/fstab
//fuzz/sto_db /mnt/sto-db smbfs codepage=cp866,iocharset=utf8,guest ,uid=root,gid=stousers,fmask=660,dmask=770,noauto


В итоге командой

root ~ # sudo mount /mnt/sto-db


я монтирую из сервера samba каталог, доступный для монтирования и записи членам группы stousers. Довольно изящное решение благодаря такому "макросу", как %ваша_группа в /etc/sudoers


Читать далее

пʼятницю, 16 травня 2008 р.

zsh forever

Где-то неделю назад познакомился с этой зашибенной командной оболочкой. Сделал chsh -s /bin/zsh видать надолго 8)

zsh - замечательная командная оболочка, основной фишкой которой является развитый алгоритм автодополнения, притом - удобно расширяемый. Вобщем - в отличии от bash, zsh более направлена в сторону эффективной и быстрой работы с командной строкой.


Но в ней присутствовал один неприятный момент - в xterm криво работающие клавиши "Home", "End", я это исправил, вобщем - всё написано в конфиге

Общесистемный конфиг для zsh


/etc/zsh/zshrc
#
# /etc/zsh/zshrc by NETZMB
#
# прототип:
# http://www.freesource.info/wiki/AltLinux/DotFiles/Shells/Zsh/Sovety&
#

#
# менюобразная подсветка вариантов окончаний
#

zmodload zsh/complist
zstyle ':completion:*' menu yes select

#
# чтобы видеть все процессы для kill или killall
#

zstyle ':completion:*:processes' command 'ps -xuf'
zstyle ':completion:*:processes' sort false
zstyle ':completion:*:processes-names' command 'ps xho command'

#
# Настройка приглашения оболочки
# тема приглашения
#

autoload promptinit
promptinit
prompt gentoo

#
# Автодополнение имени хоста для SSH
#
if [ -e $HOME/.ssh/known_hosts ] ; then
hosts=(${${${(f)"$(<$HOME/.ssh/known_hosts)"}%%\ *}%%,*})
zstyle ':completion:*:hosts' hosts $hosts
fi



#
# Установка нормального поведения клавиш Delete, Home, End и т.д.:
#


case $TERM in
#
# для системной консоли (/dev/tty*)
#
linux|screen|screen.linux)

bindkey "^[[2~" yank
bindkey "^[[3~" delete-char
bindkey "^[[5~" up-line-or-history
bindkey "^[[6~" down-line-or-history
bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line
bindkey "^[e" expand-cmd-path # C-e for expanding path of typed command
bindkey "^[[A" up-line-or-search # up arrow for back-history-search
bindkey "^[[B" down-line-or-search # down arrow for fwd-history-search
bindkey " " magic-space # do history expansion on space
;;

#
# для X-терминалов
#
*xterm*|rxvt|(dt|k|E)term)

bindkey "^[[2~" yank
bindkey "^[[3~" delete-char
bindkey "^[[5~" up-line-or-history
bindkey "^[[6~" down-line-or-history
bindkey "^[[H" beginning-of-line # Клавиша Home
bindkey "^[[F" end-of-line # Клавиша End
bindkey "^E" expand-cmd-path # C-e добавляет к набираемой команде её
# абсолютный путь
# т.е. например, ls заменяется на /bin/ls.

# Действует аналогично команде `which ls`

bindkey "^[[A" up-line-or-search # Стрелка-вверх, пройтись назад по
# истории введённых команд

bindkey "^[[B" down-line-or-search # Стрелка-вверх, пройтись вперёд по
# истории введённых команд
bindkey " " magic-space ## do history expansion on space
;;
esac

# Примечание: если, скажем, в KDE для konsole
# выбрать тип Linux console, необходимости
# во второй секции нет.


#
# Убираем повторяющиеся каталоги из путей подстановки файлов
# при автодополнениях
#
typeset -U path cdpath fpath manpath


# Список хостов, к которым будет применяться автодополнение
# при наборе в командной строке
# Например, как аргументов браузера или ftp-клиента (см. man zstyle)

hosts=('hostname' sky.eth.net modem.eth.net ap1.eth.net wf-vaio.neb.net)


# Число команд, сохраняемых в файл истории введеных команд (HISTFILE)
SAVEHIST=500

# Чucлo koмaнg, coxpaняeмыx в сеансе
HISTSIZE=500

# максимальный размер стека каталогов
DIRSTACKSIZE=20

#
# Опции истории команд:
# Дописывание файла истрии
setopt APPEND_HISTORY
# Игнopupoвaть вce пoвтopeнuя команд
setopt HIST_IGNORE_ALL_DUPS
# Игнopupoвать лишние пpoбeлы
setopt HIST_IGNORE_SPACE
# Удалять из файла истории пустые строки
setopt HIST_REDUCE_BLANKS




Личные настройки пользователя zsh:


~/zshrc
#
# ~/zshrc by NETZMB

#
# включаем подстветку типов файлов для ls и делаем команду "ls"
# более "говорливой"
#

alias ls='ls --color'
alias cp='cp --verbose'

#
# Устанавливаем личные лимиты использования ресурсов компьютера
# дабы предотвратить заполнение системных каталогов ненужными
# файлами дампов аварийно завершившихся программ, а также предотвратить
# неконтролируемое потребление ресурсов компа кривой программой, или даже
# предупредить локальную DDoS атаку
#

limit stack 8192 # лимит объёма памяти, выделеной под стек.
# помогает от переполнения стека

limit core 0 # Выключаем запись файлов-дампов упавших программ

umask 022 # Установка атрибутов доступа для вновь создаваемых файлов
# В данном случае - rw-r--r--


#
# Каталоги, именованные для быстрого доступа к ним по короткой метке
# (например, здесь - вместо того, чтобы набирать
# /var/local/misc/dosemu-root/root/src/sto-ed/bin/tex, можно просто написать
# ~prc )
#

hash -d prc=/var/local/misc/dosemu-root/root/src/sto-ed/bin/tex




И ещё - если Вы в момент набора команды нажали клавишу Escape, то командная строка zsh начинает себя вести как редактор vi. Вобщем, если это Вам не нужно, то просто нажмите Ctrl+C, после чего zsh вернёт Вам контроль над историей ком. строки и проч.



Советую почитать, даже если вы не использовали zsh ранее (мой конфиг частично был содран оттуда) :Советы по настройке zsh


PS: пока это то, на что хватило времени написать. Остальное - чуть позже


Читать далее

середу, 14 травня 2008 р.

Лечим utf8 в man


Наверняка Вы заметили, что не смотря на рекомендации мануала по переводу на\включению юникода в gentoo, русские man'ы выводятся в искажённом виде. В этом посте можете оценить лёгкий способ, как избавиться от этой ошибки



Вот исходный вид вывода man mc на свежеустановленном Gentoo, но уже при настроенном юникоде (файлы русских man'ов идут в кодировке koi8-r):


/etc/man.conf
...
NROFF /usr/bin/nroff -Tascii -c -mandoc
...


вот что выводит man mc при такой настройке man'а


MC(1) GNU Midnight Commander MC(1)



iaeiaii-:-aiea
mc - -:-EUOAIOIAN IAIIIbEA AIN Unix-DIAIAIUE OEOOAI.

...


Как можно заключить из повторяющихся символов, исходной восьмибитной кодировке man'а (koi8-r) обрубили восьмой бит, а потом вывели в юникод.
Если последовать рекомендации Использование UTF-8 в Gentoo, и изменить строку с NROFF в /etc/man.conf на


/etc/man.conf
...
NROFF /usr/bin/nroff -mandoc -c

...


то получим чуть более содержательную кашу из символов:


MC(1) GNU Midnight Commander MC(1)



îáéíåîï÷áîéå
mc - ÷ÉÚÕÁÌØÎÁÑ ÏÂÏÌÏÞËÁ ÄÌÑ Unix-ÐÏÄÏÂÎÙÈ ÓÉÓÔÅÍ.

...


Вобщем, одному хорошему человеку срочно понадобился man 3 exp, который у меня идёт в русском варианте. Решил из принципа подкинуть именно русский ман. Смотрите, что я на коленке состряпал за пару минут:


/etc/man.conf
...
NROFF /usr/bin/nroff -mandoc -c | iconv -c -f utf8 -t iso8859-1 | iconv -c -f koi8-r -t utf8
...


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


/etc/man.conf
...
NROFF /usr/bin/nroff -mandoc -c | iconv -c -t iso8859-1 | iconv -c -f koi8-r
...



А вот что получилось:


MC(1) GNU Midnight Commander MC(1)



НАИМЕНОВАНИЕ
mc - Визуальная оболочка для Unix-подобных систем.

...


Вот так :)


Читать далее

пʼятницю, 11 квітня 2008 р.

root-tail, островок логов на Вашем Xroot. Обои из логов для труЪ-админов

Предыстория находки

Однажды я лазил по портежам, перебирая харчами терминалами1, я наткнулся на root-tail, о котором eix мне сказал следующее:


grog ~ # eix root-tail
[I] x11-terms/root-tail
Available versions: 1.2-r2 {debug kde}
Installed versions: 1.2-r2(20:47:12 11.04.2008)(-debug -kde)
Homepage: http://www.goof.com/pcg/marc/root-tail.html
Description: Terminal to display (multiple) log files on the root window



что меня несколько заинтриговало. Решил поставить и проверить. Оказалось, преполезнейшая и весьма перспективная вещь.


Что делает

Выводит в указаной области экрана квадрат с постоянно обновляющимися строчками логов в нём, которые могут быть из нескольких файлов и указанного Вами цвета. Вобщем, смотрите скриншот, и всё поймёте с первого взгляда ;)



Как видите, простой командой


grog ~ # root-tail -g 800x250+100+50 -font fixed \
/var/log/messages,green \
/var/log/vsftpd.log,red,'ALERT'



Указав область (ключ -g, что обозначает "geometry") размером 800x250, начинающуюся с отступом 100 пикселей слева и 50 - сверху, выводим на ней строками зелёного цвета последние строки, что пишутся в файл /var/log/messages, а строками красного цвета - последняя группа строк из файла /var/log/vsftpd.log, которые будут озаглавлены словом 'ALERT'2.


Чем полезна, какие проблемы решает

Вобщем, для меня root-tail - очень полезная штука, особенно в виду преследовавших меня двух причин:


  • Теперь частенько смотрю в логи, а это поверьте, очень полезная информация для предупреждения проблем в будущем, кроме того, данное благое дело - прямая обязанность заботливого админа

  • Решил вопрос, что-же всё-таки повесить как обои для root window, чтобы соблюдался должный уровень унылой утилитарной мизантропии который я так ценю 8)



PS: Эта информация - просто пища для процесса повышения играбельности админской профессии. Т.е. - для того, чтобы поставить такую полезную вещь, как root-tail на автозагрузку, чтобы она постоянно освещала кулуарную жизнь вашей машины, для неё желательно написать незамысловатый скрипт, в котором root-tail будет запускаться через sudo, либо поколдовать с группами читаемых лог-файлов, либо натстроить SELinux что подойдёт для оголтелых радикально настроеных админов. Вобщем, выберите подходящий подход к безопасности.

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



1

захотелось чего-то ещё более минималистического, более тощего и молниеносно запускающегося в отличии от xterm. У меня постоянно забита RAM, притом - всякими полезностями да emerge'-ми так что прошу не кидать в меня помидоры по поводу криво настроенного drm и прочего


2

Не буду спорить, этот пример я почти подчистую выдрал с man root-tail, но ничего, чуть позже я переработаю материал на основе собственного опыта использования root-tail так сказать, в "промышленных" условиях :)







update Пнд Сен 22 15:43:43 UTC 2008

Опечален вот таким поворотом событий:

Пнд Сен 22 15:43:43 UTC 2008



grog ~ # emerge -pv root-tail

These are the packages that would be merged, in order:

Calculating dependencies |
!!! All ebuilds that could satisfy "x11-terms/root-tail" have been masked.
!!! One of the following masked packages is required to complete your request:
- x11-terms/root-tail-1.2-r2 (masked by: package.mask)
/portage/profiles/package.mask:
# Jeremy Olexa (12 Sep 2008)
# Masked for removal in 60 days. dead upstream, missed modular X transition.
# See bug #127193


Жаль, что такой полезный замес возможно удалят из официального дерева портежей :-(


Читать далее

середу, 12 березня 2008 р.

отстройка консольного гудка, change console system bell


Лично меня несколько кумарил сигнал системного динамика, который выдавался по умолчанию. Ведь он отстроен на наилучшую слышимость, но когда пару суток фигачишь за компом и нервы того, то от внезапного писка можно на стуле подскочить, тем более в некоторых случаях он здорово демаскирует твоё присутствие 8) .
Поэтому решил заделиться рецептом, как это безобразие подстроить под себя.




Настройка "пищалки" относится к настройкам системных терминалов (консолей) (/dev/tty*), потому настраивается она следующей командой:


setterm -blength длительность_сигнала -bfreq частота_сигнала


где


длительность_сигнала

указывается в дипазоне от 0 до 2000 миллисекунд

частота_сигнала

указывается в хрен знает чём, видать в герцах, вобщем в мане толкового ничо не написано про эту опцию, ибо и так понятно





У меня стоят следующие параметры:


setterm -blength 50 -bfreq 50



чтобы не писать это каждый раз при входе в систему, нужно добавить эту команду в .bash_profile:



~/.bash_profile
setterm -blength 50 -bfreq 50




X-терминалы настраиваются тоже похожим на настройку консолей образом:



xset b громкость частота длительность


вот как man расшифровывает опции утилиты xset:


[b {on|off}] [b [volume [pitch [duration]]]]


У меня настроено так:


xset b 10 50



теперь осталось добавить эту команду в .bashrc:



~/.bashrc

[ $DISPLAY ] && xset b 10 50


Наслаждайтесь ;-)



Читать далее

запоминалка gnupg-пароля, используем gpg-agent


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

Чтобы упростить себе жизнь, стоит пользоваться утилитой gpg-agent, которая идёт в составе пакета app-crypt/gnupg



Проблема в том, что по умолчанию в Gentoo gnupg-agent не пашет, его нужно слегка допилить напильником до рабочего состояния.

Раньше мой gpg-agent при запуске вываливася со следующим воплем:


gor@grog ~ $ gpg-agent
gpg-agent[17182]: can't connect to `/home/gor/.gnupg/S.gpg-agent': В соединении отказано
gpg-agent: нет gpg-agent доступого для данной сессии


чтобы такого не было, нужно запустить его со следующими ключами:


gor@grog ~ $ gpg-agent --daemon --use-standard-socket
GPG_AGENT_INFO=/home/gor/.gnupg/S.gpg-agent:22826:1; export GPG_AGENT_INFO;
gor@grog ~ $


Затем при следующей операции шифрования Вас разок должны спросить пароль и потом можно на время про него забыть. :)

Это время можно продлить, либо укоротить с помощью следующего ключа --default-cache-ttl секунды

Вот что о нём пишут в man gpg-agent:


--default-cache-ttl n
Set the time a cache entry is valid to n seconds. The default
are 600 seconds.



Красиво добавить его в bash_profile можно следующим образом:


#
# запоминалка паролей для GnuPG
#

if [ -z "$(ps -u gor | grep gpg-agent)" ]
then rm $HOME/.gnupg/S.gpg-agent
/usr/bin/gpg-agent --daemon --use-standard-socket > /dev/null
echo gpg-agent started
fi




Вобщем, всё должно работать ;)

Если всё-же есть проблемы - тогда отписывайтесь :)


Читать далее