Иногда Linux просто потрясает меня своей простотой и гибкостью, на опеннете увидел следующий пост.
источник тут
Потребовалось незаметно прослушать, что происходит в удалённом помещении в
котором находился компьютер в Linux, с настроенным ssh и Web камерой.
Для чтения с устройства hw:2,0, с временем прерывания 5 секунд, в формате wav
нужно использовать команду:
arecord -F 5 -D hw:2,0 -t wav -f dat -c 1
имя устройства можно узнать так:
cat /proc/asound/pcm
01-00: SAA7134 PCM : SAA7134 PCM : capture 1
00-01: AD198x Digital : AD198x Digital : playback 1
00-00: AD198x Analog : AD198x Analog : playback 1 : capture 1
02-00: USB Audio : USB Audio : capture 1
Для преобразование в mp3 потока из stdin и выводе результата в stdout:
lame -
Для проигрывания mp3 потока с stdin
mpg123 -
В итоге команда для прослушивания выглядит так:
ssh user@host "arecord -F 5 -D hw:2,0 -t wav -f dat -c 1 | lame -" | mpg123 -
или
ssh user@host "arecord -F 5 -D hw:2,0 -t wav -f dat -c 1 | lame -" > listening.mp3
При подключение к host запускается команда записи с микрофона, конвертирования
и записи потока "звука" в stdout который передаётся через ssh на локальный
компьютер, на котором этот поток направляется в mp3 проигрыватель или файл
понедельник, 5 октября 2009 г.
пятница, 7 августа 2009 г.
пятница, 3 апреля 2009 г.
Спасение RAID5 в Linux или восстановление mdadm на другой машине
взято от сюда http://uragana.ru/2009/04/rescue-raid-lvm думаю всем бдует полезно
Сегодня на работе сдох сервер. Без признаков жизни и включения. А на нем важная информация.
Не срочная, но важная. Главня проблема в том что нужные файлы были на рэйде (mdadm), да еще и на LVM.
Расскажу, как спасал информацию...
Отключаю диски, достаю, кладу на стол. Сервер отвожу в ремонт. И начинаю реанимировать диски.
А схема там такая - из 3-х 400 гигабайтных дисков собран RAID5 в mdadm,
поверх рэйда - LVM, на LVM - файловая система XFS.
Подключаю все диски к рабочему компьютеру, пытаюсь загрузиться со своего рабочего диска - не грузится.
Некогда разбираться - пробую грузится с live-cd с Ubuntu. Загрузилось!
Начинается самое интересное:
N.B. - все операции проводились под root, поэтому нужно в консоли сделать sudo su
1) Поскольку диски sata - открываем консоль и смотрим, что нашлось (ненужные строчки пропущены):
root@ubuntu:/home/ubuntu# dmesg | grep sd
[ 40.566532] sd 2:0:0:0: [sda] 488397168 512-byte hardware sectors (250059 MB)
[ 40.592220] sd 2:0:1:0: [sdb] 781422768 512-byte hardware sectors (400088 MB)
[ 40.611879] sd 3:0:0:0: [sdc] 781422768 512-byte hardware sectors (400088 MB)
[ 40.635162] sd 3:0:1:0: [sdd] 781422768 512-byte hardware sectors (400088 MB)
root@ubuntu:/home/ubuntu#
ага. есть 4 диска - 1 диск sda-250GB - это рабочий, остальные (sdb,sdc,sdd) - части рэйда.
2) В live-cd Ubuntu нет ни mdadm, ни lvm. Исправим это. Настраиваем сеть, и выполняем в терминале:
root@ubuntu:/home/ubuntu# apt-get update && apt-get install mdadm lvm2
Установилось. Хорошо, едем дальше.
3) Пытаемся пересобрать RAID в автоматическом режиме:
root@ubuntu:/home/ubuntu# mdadm --assemble --scan
mdadm: /dev/md0 has been started with 2 drives (out of 3) and 1 spare.
root@ubuntu:/home/ubuntu# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[0] sdd1[1]
781417472 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
unused devices:
Видим что массив нашелся, но сломанный - один диск отвалился.
Игнорируем, потому что рэйд пятого уровня - позволяет сохранить данные при поломке одного диска.
Массив нашелся, поднялся. Двигаемся дальше.
4) Поднимаем LVM:
Загружаем модуль
root@ubuntu:/home/ubuntu# modprobe dm-mod
Активируем LVM:
root@ubuntu:/home/ubuntu# vgchange -a y
1 logical volume(s) in volume group "files" now active
Проверяем какие logical volumes у нас есть:
root@ubuntu:/home/ubuntu# lvscan
ACTIVE '/dev/files/filesrv' [700,00 GB] inherit
видим один раздел - /dev/files/filesrv на 700 гигов.
Создаем точку монтирования и монтируем раздел:
root@ubuntu:/home/ubuntu# mkdir /files
root@ubuntu:/home/ubuntu# mount /dev/files/filesrv /files
Смотрим что получилось:
root@ubuntu:/home/ubuntu# ls -lh /files/
total 20K
drwxrwxrwx 79 root root 8,0K 2009-03-30 06:24 other
drwxrwxrwx 15 root root 4,0K 2008-12-08 05:55 public
drwxrwxrwt 7 1000 1000 76 2009-04-02 10:33 vmdata
drwxrwxrwx 5 1000 1000 47 2009-02-20 10:22 webfiles
Ура! Все файлы видны и доступны!
Теперь можно скопировать их на рабочий диск:
root@ubuntu:/home/ubuntu# mkdir /workhdd
root@ubuntu:/home/ubuntu# mount /dev/sda4 /workhdd
root@ubuntu:/home/ubuntu# cp -r /files/vmdata /workhdd/
или через ssh на другой сервер:
root@ubuntu:/home/ubuntu# scp -r /files/vmdata root@192.168.1.6:/files/
После того как все скопировалось - можно заняться восстановлением RAID. Проверяем еще раз статус:
root@ubuntu:/home/ubuntu# cp -r /files/vmdata/
root@ubuntu:/home/ubuntu# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdc1[0] sdd1[1]
781417472 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
unused devices:
видим что в RAID сейчас два диска - sdc и sdd. Недостающий диск - sdb.
Добавим его:
root@ubuntu:/home/ubuntu# mdadm /dev/md0 --re-add /dev/sdb1
mdadm: re-added /dev/sdb1
Диск добавился. Следим за его пересборкой:
root@ubuntu:/home/ubuntu# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb1[3] sdc1[0] sdd1[1]
781417472 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
[>....................] recovery = 0.0% (95748/390708736) finish=3261.8min speed=1994K/sec
Прогрессбар движется, до окончания пересборки осталось 3261 минута, то есть больше 2 суток.
Это уже не нормально, да и диск начал слышно стучать. Понятно. Пора ему на свалку.
вторник, 31 марта 2009 г.
Обработка XML данных в командной строке при помощи xmlstarlet
Думаю что в хозяйстве однозначно пригодится
Обработка XML данных в командной строке при помощи xmlstarlet
В составе Debian, Ubuntu и других Linux дистрибутивах можно найти пакет xmlstarlet (http://xmlstar.sourceforge.net/),
представляющий собой набор утилит командной строки для преобразования, выборки данных и проверки XML документов.
Реализует для работы с XML функции похожие на утилиты grep, tr, sed, awk, diff, patch, join и т.п.,
что очень удобно для разбора XML документов в скриптах.
Например, для парсинга RSS и вывода заголовков можно использовать:
curl url_rss | xmlstarlet sel -t -m /rss/channel/item -v title -n
вывод из RSS ссылки и заголовка, разделенные символом "|"
curl url_rss | xmlstarlet sel -t -m /rss/channel/item -v link -o "|" -v title -n
Для ленты в формате Atom, с построчным разделением URL от заголовка:
curl url_rss | sed 's/xmlns=/_xmlns=/'| xmlstarlet sel -t -m /feed/entry -v link/@href -n -v title -n
Опция -t информирует о начале задания шаблона, определенного далее идущими директивами.
-m указывает, параметры XPath выборки, в нашем случае, обработка всех- внутри
внутри .
-v - определяем содержимое какого поля выводить.
-n - инициирует вывод символа перевода строки,
-o - позволяет вывести произвольный текст.
Быстрый просмотр текста в ODT файле
unzip -p document.odt content.xml | xmlstarlet sel -N text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" \
-T -t -m '//text:p' -v . -n
Построить список изображений, используемых в заданной странице:
cat test.html| xmlstarlet sel --html -t -m "//img" -v "@src" -n
Примеры использования xmlstarlet для различных ситуаций можно найти в директории /usr/share/doc/xmlstarlet/examples
Обработка XML данных в командной строке при помощи xmlstarlet
В составе Debian, Ubuntu и других Linux дистрибутивах можно найти пакет xmlstarlet (http://xmlstar.sourceforge.net/),
представляющий собой набор утилит командной строки для преобразования, выборки данных и проверки XML документов.
Реализует для работы с XML функции похожие на утилиты grep, tr, sed, awk, diff, patch, join и т.п.,
что очень удобно для разбора XML документов в скриптах.
Например, для парсинга RSS и вывода заголовков можно использовать:
curl url_rss | xmlstarlet sel -t -m /rss/channel/item -v title -n
вывод из RSS ссылки и заголовка, разделенные символом "|"
curl url_rss | xmlstarlet sel -t -m /rss/channel/item -v link -o "|" -v title -n
Для ленты в формате Atom, с построчным разделением URL от заголовка:
curl url_rss | sed 's/xmlns=/_xmlns=/'| xmlstarlet sel -t -m /feed/entry -v link/@href -n -v title -n
Опция -t информирует о начале задания шаблона, определенного далее идущими директивами.
-m указывает, параметры XPath выборки, в нашем случае, обработка всех
-v - определяем содержимое какого поля выводить.
-n - инициирует вывод символа перевода строки,
-o - позволяет вывести произвольный текст.
Быстрый просмотр текста в ODT файле
unzip -p document.odt content.xml | xmlstarlet sel -N text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" \
-T -t -m '//text:p' -v . -n
Построить список изображений, используемых в заданной странице:
cat test.html| xmlstarlet sel --html -t -m "//img" -v "@src" -n
Примеры использования xmlstarlet для различных ситуаций можно найти в директории /usr/share/doc/xmlstarlet/examples
понедельник, 15 декабря 2008 г.
установка флеша x64
Обновив в отпуск свой компьютер установил систему x64, тут описано небольшое руководство по установке альфа версии флеша для 64ёх разрядных систем
sudo apt-get remove flashplugin-nonfree nspluginwrapper
cd ~/Desktop
tar -zxvf libflashplayer-10.0.d20.7.linux-x86_64.so.tar.gz
mkdir ~/.mozilla/plugins
cp libflashplayer.so ~/.mozilla/plugins
а вот таким образом можно откатиться назад к x32:
rm ~/.mozilla/plugins/libflashplayer.so
sudo apt-get install flashplugin-nonfree
sudo apt-get remove flashplugin-nonfree nspluginwrapper
cd ~/Desktop
tar -zxvf libflashplayer-10.0.d20.7.linux-x86_64.so.tar.gz
mkdir ~/.mozilla/plugins
cp libflashplayer.so ~/.mozilla/plugins
а вот таким образом можно откатиться назад к x32:
rm ~/.mozilla/plugins/libflashplayer.so
sudo apt-get install flashplugin-nonfree
понедельник, 13 октября 2008 г.
Софт для анализа профайлинг-логов в Unix
KCachegrind (есть билд под QT4)
GraphViz
Valgrind - дебагер - не обязателен
GraphViz
Valgrind - дебагер - не обязателен
понедельник, 7 июля 2008 г.
Запуск "кластера 1С 8.1 Предприятие" в Slackware Linux
Встала задача поставить 1С 8.1 кластерную на линукс. В списке рекомендованных систем для установки только Red Hat и производные. А у меня из мощностей только свободный сервер под Slackware Linux 12.1. В целом с установкой самой 1С'ы сложностей не возникло. Я только переписал стартовые скрипты, System V отказались работать, написал свои:
root@srv-pdc:~# cat /etc/rc.d/rc.postgresql
#!/bin/sh
# Start/stop/restart/status the PostgreSQL:
PATH=/usr/bin
DBCLUSTER=/mnt/storage0/1CDB/pgsql
SERVERLOG=/var/log/pgsql/server.log
pgsql_start() {
echo "Starting PostgreSQL Server"
/bin/su postgres -c "pg_ctl start -D $DBCLUSTER -l $SERVERLOG"
}
pgsql_stop() {
echo "Stoping PostgreSQL Server"
/bin/su postgres -c "pg_ctl stop -D $DBCLUSTER -m smart"
sleep 10
}
pgsql_restart() {
echo "Restarting PostgreSQL Server"
/bin/su postgres -c "pg_ctl reload"
}
pgsql_status() {
echo "Status PostgreSQL Server"
/bin/su postgres -c "pg_ctl status -D $DBCLUSTER"
}
case "$1" in
'start')
pgsql_start
;;
'stop')
pgsql_stop
;;
'status')
pgsql_status
;;
'restart')
pgsql_restart
;;
*)
echo "usage $0 start|stop|restart|status"
esac
-----------------------------------------------------------------------------
root@srv-pdc:~# cat /etc/rc.d/rc.srv1cv81
#!/bin/sh
# Start/stop/restart the srv1cv81:
AGENTUSR=usr1cv81
INSTDIR=/opt/1C/v8.1/i386
srv_start() {
echo -n "Starting 1C:Enterprise 8.1 server: "
/bin/su $AGENTUSR -c "$INSTDIR/ragent -daemon"
}
srv_stop() {
echo -n "Stopping 1C:Enterprise 8.1 server: "
killall ragent
killall rmngr
killall rphost
sleep 10
}
srv_restart() {
echo -n "Restarting 1C:Enterprise 8.1 server: "
srv_stop
srv_start
}
case "$1" in
'start')
srv_start
;;
'stop')
srv_stop
;;
'restart')
srv_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
--------------------------------------------------------------------------
root@srv-pdc:~# cat /etc/rc.d/rc.local
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
/usr/sbin/dhcpd
/opt/hasp/aksusbd
/etc/rc.d/rc.postgresql start
/etc/rc.d/rc.srv1cv81 start
--------------------------------------------------------------------------
root@srv-pdc:~# cat /etc/rc.d/rc.local_shutdown
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
killall /usr/sbin/dhcpd
killall /opt/hasp/aksusbd
/etc/rc.d/rc.postgresql stop
/etc/rc.d/rc.srv1cv81 stop
root@srv-pdc:~# cat /etc/rc.d/rc.postgresql
#!/bin/sh
# Start/stop/restart/status the PostgreSQL:
PATH=/usr/bin
DBCLUSTER=/mnt/storage0/1CDB/pgsql
SERVERLOG=/var/log/pgsql/server.log
pgsql_start() {
echo "Starting PostgreSQL Server"
/bin/su postgres -c "pg_ctl start -D $DBCLUSTER -l $SERVERLOG"
}
pgsql_stop() {
echo "Stoping PostgreSQL Server"
/bin/su postgres -c "pg_ctl stop -D $DBCLUSTER -m smart"
sleep 10
}
pgsql_restart() {
echo "Restarting PostgreSQL Server"
/bin/su postgres -c "pg_ctl reload"
}
pgsql_status() {
echo "Status PostgreSQL Server"
/bin/su postgres -c "pg_ctl status -D $DBCLUSTER"
}
case "$1" in
'start')
pgsql_start
;;
'stop')
pgsql_stop
;;
'status')
pgsql_status
;;
'restart')
pgsql_restart
;;
*)
echo "usage $0 start|stop|restart|status"
esac
-----------------------------------------------------------------------------
root@srv-pdc:~# cat /etc/rc.d/rc.srv1cv81
#!/bin/sh
# Start/stop/restart the srv1cv81:
AGENTUSR=usr1cv81
INSTDIR=/opt/1C/v8.1/i386
srv_start() {
echo -n "Starting 1C:Enterprise 8.1 server: "
/bin/su $AGENTUSR -c "$INSTDIR/ragent -daemon"
}
srv_stop() {
echo -n "Stopping 1C:Enterprise 8.1 server: "
killall ragent
killall rmngr
killall rphost
sleep 10
}
srv_restart() {
echo -n "Restarting 1C:Enterprise 8.1 server: "
srv_stop
srv_start
}
case "$1" in
'start')
srv_start
;;
'stop')
srv_stop
;;
'restart')
srv_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
--------------------------------------------------------------------------
root@srv-pdc:~# cat /etc/rc.d/rc.local
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
/usr/sbin/dhcpd
/opt/hasp/aksusbd
/etc/rc.d/rc.postgresql start
/etc/rc.d/rc.srv1cv81 start
--------------------------------------------------------------------------
root@srv-pdc:~# cat /etc/rc.d/rc.local_shutdown
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
killall /usr/sbin/dhcpd
killall /opt/hasp/aksusbd
/etc/rc.d/rc.postgresql stop
/etc/rc.d/rc.srv1cv81 stop
среда, 25 июня 2008 г.
изменение sid'ов у пользователей домена под управлением Samba
Итак, вводные:
PDC по управлением Samba 3.26 (и до 3.30 включительно ситуация идентчина)
бекэенд для хранения паролей tdbsam
пользователи добавлялись в домен с помощью smbpasswd
затем мне понадоиблось имзенить ихние сиды, точнее только последний разряд - RID. Для этого я прибег к утилите входящей в самбу под названием pdbedit. У нее есть соответсвующий ключик для изменения сидов и ридов.
На примере себя делаю так:
#pdbedit -u skonev -U 1115 -r
для тех кто в танке - 1115 это RID моего SID'а
в результате имеем следующее сообщение, это при уровне дебага - 1
Server's Role (logon server) NOT ADVISED with domain-level security
Unable to modify TDB passwd ! Error: Record does not exist
occured while storing the RID index (RID_0000045b)
Unable to modify entry!
Но при этом мой SID изменился, домен функционирует, все в порядке. Но! делаем второй ход, меняем мне пароль через smbpasswd:
#smbpasswd skonev
New SMB password:
Retype new SMB password:
Unable to modify TDB passwd ! Error: Record does not exist
occured while storing the RID index (RID_0000045b)
Failed to modify entry for user skonev.
Failed to modify password entry for user skonev
Опаньки, а проль не изменился, пробуем порулить моей учетной записью из консоли Windows - пользвоатель не найден.
Вообщем бился я с этой проблемой весь вечер, итог таков:
Начальный способ заведения пользвоателя в базу значения не имеет, это может быть как и smbpasswd, так и "pdbedit -u Vasiliy -a". При изменении сида или рида (значения не имеет) pdbedit, чтото колечит в базе. Чтоже делать? Сид мне необходимо изменит во чтобы то ни стало. И способ был найден.
для начала удаляем "кривого" пользователя из базы
#pdbedit -x skonev
причем процедуру лутше провести дважды, для надежности
а далее создаем его снова, только средствами именно pdbedit, и в качестве парметра указываем нужный нам RID или SID (кому что нужно)
#pdbedit -u skonev -a -U 1115 -b tdbsa
и радость - все работает, пользвоатель добавлен с нужным мне сидом, база цела, ничего не глючит. И есть возожность руления доменом из винды!
Как будет настроение я напишу как рулить самбой из винды и напишу как я реализовал в несколько усеченом виде групповые политики в самбе.
PDC по управлением Samba 3.26 (и до 3.30 включительно ситуация идентчина)
бекэенд для хранения паролей tdbsam
пользователи добавлялись в домен с помощью smbpasswd
затем мне понадоиблось имзенить ихние сиды, точнее только последний разряд - RID. Для этого я прибег к утилите входящей в самбу под названием pdbedit. У нее есть соответсвующий ключик для изменения сидов и ридов.
На примере себя делаю так:
#pdbedit -u skonev -U 1115 -r
для тех кто в танке - 1115 это RID моего SID'а
в результате имеем следующее сообщение, это при уровне дебага - 1
Server's Role (logon server) NOT ADVISED with domain-level security
Unable to modify TDB passwd ! Error: Record does not exist
occured while storing the RID index (RID_0000045b)
Unable to modify entry!
Но при этом мой SID изменился, домен функционирует, все в порядке. Но! делаем второй ход, меняем мне пароль через smbpasswd:
#smbpasswd skonev
New SMB password:
Retype new SMB password:
Unable to modify TDB passwd ! Error: Record does not exist
occured while storing the RID index (RID_0000045b)
Failed to modify entry for user skonev.
Failed to modify password entry for user skonev
Опаньки, а проль не изменился, пробуем порулить моей учетной записью из консоли Windows - пользвоатель не найден.
Вообщем бился я с этой проблемой весь вечер, итог таков:
Начальный способ заведения пользвоателя в базу значения не имеет, это может быть как и smbpasswd, так и "pdbedit -u Vasiliy -a". При изменении сида или рида (значения не имеет) pdbedit, чтото колечит в базе. Чтоже делать? Сид мне необходимо изменит во чтобы то ни стало. И способ был найден.
для начала удаляем "кривого" пользователя из базы
#pdbedit -x skonev
причем процедуру лутше провести дважды, для надежности
а далее создаем его снова, только средствами именно pdbedit, и в качестве парметра указываем нужный нам RID или SID (кому что нужно)
#pdbedit -u skonev -a -U 1115 -b tdbsa
и радость - все работает, пользвоатель добавлен с нужным мне сидом, база цела, ничего не глючит. И есть возожность руления доменом из винды!
Как будет настроение я напишу как рулить самбой из винды и напишу как я реализовал в несколько усеченом виде групповые политики в самбе.
понедельник, 7 апреля 2008 г.
Аутентификация Ubuntu-desktop в домене Active Directory
Дано: FQDN домена: MYDOMAIN.LOCAL, FQDN домен-контроллера: PDC.MYDOMAIN.LOCAL, netbios-имя машины, которую добавляем: UBUNTU, netbios-имя домена: MYDOMAIN, учетная запись с правами администратора домена: quizz.
1. Установим следующие пакеты (и все зависимости, которые они за собой тянут):
sudo apt-get update
sudo apt-get install krb5-user winbind samba
2. Поправим /etc/krb5.conf (sudo gedit /etc/krb5.conf), он должен выглядеть точно так, как написано ниже, только конечно же не забудьте заменить имена домена, компьютера и т.д. своими именами:
[logging]
default = FILE10000:/var/log/krb5lib.log
[libdefaults]
ticket_lifetime = 24000
default_realm = MYDOMAIN.LOCAL
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
[realms]
MYDOMAIN.LOCAL = {
kdc =PDC.MYDOMAIN.LOCAL
admin_server = PDC.MYDOMAIN.LOCAL
default_domain = MYDOMAIN.LOCAL
}
[domain_realm]
.domain.internal =MYDOMAIN.LOCAL
domain.internal = MYDOMAIN.LOCAL
3. Отредактируем /etc/samba/smb.conf (sudo gedit /etc/samba/smb.conf):
[global]
security = ads
netbios name = UBUNTU
realm = MYDOMAIN.LOCAL
password server = PDC.MYDOMAIN.LOCAL
workgroup = MYDOMAIN
idmap uid = 500-10000000
idmap gid = 500-10000000
winbind separator = +
winbind enum users = no
winbind enum groups = no
winbind use default domain = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
domain master = no
4. Сделаем /etc/nsswitch.conf (sudo gedit /etc/nsswitch.conf) точно таким, как написано ниже:
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns wins
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
5. Отредактируем настройки PAM (для редактирования каждого из следующих файлов требуются права суперпользователя):
* /etc/pam.d/common-account должны содержать только следующие строки:
account sufficient pam_winbind.so
account required pam_unix.so
* в /etc/pam.d/common-auth должно быть только это:
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
* поправим the /etc/pam.d/common-password так, чтобы параметр max был 50, в качестве примера:
password required pam_unix.so nullok obscure min=4 max=50 md5
* убедитесь, что /etc/pam.d/common-session содержит следующие строки:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
6. Создадим home-директорию для пользователей Active Directory:
sudo mkdir -p /home/MYDOMAIN
7. Отредактируйте /etc/hosts:
127.0.0.1 ubuntu.mydomain.local ubuntu localhost
8. Инициализируем Kerberos:
sudo kinit quizz@MYDOMAIN.LOCAL
FQDN домена пишем заглавными буквами, точно так же, как писали в файле krb5.conf file. Проверить, что мы получили билет от Kerberos можно командой klist.
9. Добавим компьютер в Active Directory:
sudo net ads join -U quizz@MYDOMAIN.LOCAL
10. Перезапустим службы в следующем порядке:
sudo /etc/init.d/samba stop
sudo /etc/init.d/winbind stop
sudo /etc/init.d/samba start
sudo /etc/init.d/winbind start
На этом все!!! Перезагрузимся и попробуем зайти в систему под любым пользователем домена.
Не забываем, что для рабочей станции с установленной ubuntu администратор домена является не более, чем простым пользователям.
Основные источники информации: Официальный форум Ubuntu, официальный сайт проекта Samba.
1. Установим следующие пакеты (и все зависимости, которые они за собой тянут):
sudo apt-get update
sudo apt-get install krb5-user winbind samba
2. Поправим /etc/krb5.conf (sudo gedit /etc/krb5.conf), он должен выглядеть точно так, как написано ниже, только конечно же не забудьте заменить имена домена, компьютера и т.д. своими именами:
[logging]
default = FILE10000:/var/log/krb5lib.log
[libdefaults]
ticket_lifetime = 24000
default_realm = MYDOMAIN.LOCAL
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
[realms]
MYDOMAIN.LOCAL = {
kdc =PDC.MYDOMAIN.LOCAL
admin_server = PDC.MYDOMAIN.LOCAL
default_domain = MYDOMAIN.LOCAL
}
[domain_realm]
.domain.internal =MYDOMAIN.LOCAL
domain.internal = MYDOMAIN.LOCAL
3. Отредактируем /etc/samba/smb.conf (sudo gedit /etc/samba/smb.conf):
[global]
security = ads
netbios name = UBUNTU
realm = MYDOMAIN.LOCAL
password server = PDC.MYDOMAIN.LOCAL
workgroup = MYDOMAIN
idmap uid = 500-10000000
idmap gid = 500-10000000
winbind separator = +
winbind enum users = no
winbind enum groups = no
winbind use default domain = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
domain master = no
4. Сделаем /etc/nsswitch.conf (sudo gedit /etc/nsswitch.conf) точно таким, как написано ниже:
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns wins
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
5. Отредактируем настройки PAM (для редактирования каждого из следующих файлов требуются права суперпользователя):
* /etc/pam.d/common-account должны содержать только следующие строки:
account sufficient pam_winbind.so
account required pam_unix.so
* в /etc/pam.d/common-auth должно быть только это:
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
* поправим the /etc/pam.d/common-password так, чтобы параметр max был 50, в качестве примера:
password required pam_unix.so nullok obscure min=4 max=50 md5
* убедитесь, что /etc/pam.d/common-session содержит следующие строки:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
6. Создадим home-директорию для пользователей Active Directory:
sudo mkdir -p /home/MYDOMAIN
7. Отредактируйте /etc/hosts:
127.0.0.1 ubuntu.mydomain.local ubuntu localhost
8. Инициализируем Kerberos:
sudo kinit quizz@MYDOMAIN.LOCAL
FQDN домена пишем заглавными буквами, точно так же, как писали в файле krb5.conf file. Проверить, что мы получили билет от Kerberos можно командой klist.
9. Добавим компьютер в Active Directory:
sudo net ads join -U quizz@MYDOMAIN.LOCAL
10. Перезапустим службы в следующем порядке:
sudo /etc/init.d/samba stop
sudo /etc/init.d/winbind stop
sudo /etc/init.d/samba start
sudo /etc/init.d/winbind start
На этом все!!! Перезагрузимся и попробуем зайти в систему под любым пользователем домена.
Не забываем, что для рабочей станции с установленной ubuntu администратор домена является не более, чем простым пользователям.
Основные источники информации: Официальный форум Ubuntu, официальный сайт проекта Samba.
суббота, 15 марта 2008 г.
Как в Linux привязать процесс к CPU и установить атрибуты планирования
Как в Linux привязать процесс к CPU и установить атрибуты планирования
При необходимости увеличить производительность определенного процесса в системе,
можно жестко привязать его к определенному CPU (CPU affinity), исключив
ситуацию мигрирования между процессорами, а также изменить для него алгоритм работы
планировщика задач и увеличить приоритет.
Привязка к CPU осуществляется командой taskset, а изменение параметров real-time
планирования командой chrt. Обе команды можно использовать каскадно, вызывая
одну в качестве аргумента другой.
Например:
taskset -c 2-3 chrt -f 1
привяжет выполнение команды к CPU со 2 по 3 ("-c 2-3", можно перечислять
процессоры через запятую, например, "-c 2,3"), а также задействует политику
планирования SCHED_FIFO ("-f") и установит приоритет 1 уровня.
Политики планирования (описание - man sched_setscheduler):
-b SCHED_BATCH
-f SCHED_FIFO
-o SCHED_OTHER
-r SCHED_RR
Изменение параметров для уже запущенного процесса производится при помощи опции "-p".
Например, изменение параметров процесса с PID 123:
taskset -c 2-3 -p 123
chrt -f 1 -p 123
При необходимости увеличить производительность определенного процесса в системе,
можно жестко привязать его к определенному CPU (CPU affinity), исключив
ситуацию мигрирования между процессорами, а также изменить для него алгоритм работы
планировщика задач и увеличить приоритет.
Привязка к CPU осуществляется командой taskset, а изменение параметров real-time
планирования командой chrt. Обе команды можно использовать каскадно, вызывая
одну в качестве аргумента другой.
Например:
taskset -c 2-3 chrt -f 1
привяжет выполнение команды к CPU со 2 по 3 ("-c 2-3", можно перечислять
процессоры через запятую, например, "-c 2,3"), а также задействует политику
планирования SCHED_FIFO ("-f") и установит приоритет 1 уровня.
Политики планирования (описание - man sched_setscheduler):
-b SCHED_BATCH
-f SCHED_FIFO
-o SCHED_OTHER
-r SCHED_RR
Изменение параметров для уже запущенного процесса производится при помощи опции "-p".
Например, изменение параметров процесса с PID 123:
taskset -c 2-3 -p 123
chrt -f 1 -p 123
Подписаться на:
Сообщения (Atom)