Уголок СУ-11 на просторах вселенной

четверг, 12 ноября 2009 г.

Раздаем права на запуск/остановку сервисов под Windows

записываю для себя, в хозяйстве очень нужно.

Взято с хабра

Раздаем права на запуск/остановку сервисов под Windows
Буквально сегодня понадобилось дать человеку возможность перезапускать тестовый вебсервер под виндой.
Права админа давать естественно давать не хочется.
«Мощный» юзер не подходит.

букв много

и тут на помощь приходит technet, который расcказывает про sc.

В данном случае нас интересуют 2 команды:
sc sdshow — показывает права
sc sdset — устанавливает права

Для начала узнаем, какие права у нашего сервиса уже есть:
C:\Users\administrator>sc sdshow service_name

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR
RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)


Без изысков.

Как видно, есть 2 интересных префикса:
S: — System Access Control List (SACL) — это нас сейчас не интересует.
D: — Discretionary ACL (DACL) — здесь указываются права для всех и всего.

Смотрим далее.
Первая буква после скобок означает разрешаем (A, Allow) или запрещаем (D, Deny).

Мы разрешаем:
(A;;;;;)

И потом видим комбинации из двух букв:
CC - SERVICE_QUERY_CONFIG
LC - SERVICE_QUERY_STATUS
SW - SERVICE_ENUMERATE_DEPENDENTS
LO - SERVICE_INTERROGATE
CR - SERVICE_USER_DEFINED_CONTROL
RC - READ_CONTROL
RP - SERVICE_START
WP - SERVICE_STOP
DT - SERVICE_PAUSE_CONTINUE

По сути, нас будут интересовать последние три опции:
(A;;RPWPDT;;;)

Последние 2 буквы обозначают кому мы разрешаем или запрещаем:
AU Authenticated Users
AO Account operators
RU Alias to allow previous Windows 2000
AN Anonymous logon
AU Authenticated users
BA Built-in administrators
BG Built-in guests
BO Backup operators
BU Built-in users
CA Certificate server administrators
CG Creator group
CO Creator owner
DA Domain administrators
DC Domain computers
DD Domain controllers
DG Domain guests
DU Domain users
EA Enterprise administrators
ED Enterprise domain controllers
WD Everyone
PA Group Policy administrators
IU Interactively logged-on user
LA Local administrator
LG Local guest
LS Local service account
SY Local system
NU Network logon user
NO Network configuration operators
NS Network service account
PO Printer operators
PS Personal self
PU Power users
RS RAS servers group
RD Terminal server users
RE Replicator
RC Restricted code
SA Schema administrators
SO Server operators
SU Service logon user

+ к этому списку можно явно указать пользователя по SID'у.

Вот это самое интересное!
как узнать SID пользователя?
есть не один способ :)

но, самый простой и удобный (на мой взгляд), написать маленький скриптик на vb:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objAccount = objWMIService.Get _
("Win32_UserAccount.Name='username',Domain='domain'")
Wscript.Echo objAccount.SID

Заменяем имя пользователя и домен по своему вкусу, сохраняем файл с расширением .vbs и запускаем.
Появляется алерт с SID.

Копируем в блокнот(или в любое другое место)
Можно скрипт запустить в консоли, сэкономим время :)

И так. Узнали SID.
Вставляем в ключ:
(A;;RPWPDT;;;S-1-5-21-3992622163-2725220152-438995547-4172)

Теперь подготавливаем команду целиком:
sc sdset D:(A;;RPWPDT;;;S-1-5-21-3992622163-2725220152-438995547-4172)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCR
RC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

Наш ключ вставляем в любое место, но важно чтобы он был перед префиксом S.
Важно не ошибиться, иначе можем потерять доступ к сервису :)
Запускаем.

проверяем:
sc \\server stop «service_name»

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

UPD можно, кстате, использовать группы.
для того чтобы узнать SID группы — вместо username, напишите имя группы.

суббота, 10 октября 2009 г.

Показывать всех пользователей в "Пользователи и группы"

Долгое время был уверен, что отсутсвие части пользователей в Администрирование->"Пользователи и группы" является фирменным багом убунты. Оказывается я был не прав. Лечится очень легко.
Идем в gconf-editor
ищем ветку /apps/gnome-system-tools/users
ставим отметку у "showall"

Монтирование FTP

sudo apt-get install curlftpfs
sudo curlftpfs -o allow_other ftp://user:pass@ftp.example.com host
для записи в fstab
curlftpfs#user:pass@ftp.example.com /mnt/host fuse rw,uid=500,user,noauto 0 0

среда, 7 октября 2009 г.

Настройка Network Manager для работы с Мегафон модем

Прикупил Мегафон модем 3G чем очень доволен. В комплекте с модемом, точнее на его встроенной флешке лежат драйверы под линукс, но у меня чтото не срослось. Возможно кривой /dev/hends. По этому я пошел обычным путем через /dev/ass.
1) Настраиваем все под виндой, убеждаемся что все рабтает
2) Заходим в линукс, вставляем девайс в порт
3) Линукс обнаруживает модем как cd-rom, модема не видно
4) скачиваем утилиту usb_modeswitch, гугл вам в помощь
5) с помощью этой утилиты переводим девайс в режим модема
6) далее я перезагрузился
7) убунта, распознала девайс как GSM модем
8) network manager при старте гнома автоматом предложил настроить подлючение, задал пару вопросов
9) жму подключить - не пашет
10) Далее нужно войти в свойства соединения и заменить AP на просто internet
11) далее сложнее, любимым редактором открываем файл %gconf.xml
файл нужно искать в домашней папке, далее .gconf/system/networking/connection
там будут еще папочки, находим папку ppp, а в ней уже %gconf.xml
12) Перед закрывающим тегом пишем это:

<entry name="modem" mtime="xxx" type="string">
<stringvalue>AT+CGDCONT=1,«IP»,«internet»</stringvalue>
</entry>


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

понедельник, 5 октября 2009 г.

Передача звука с микрофона по сети

Иногда 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 проигрыватель или файл

пятница, 7 августа 2009 г.

узнать модель материнской платы

dd if=/dev/mem bs=64k skip=15 count=1 | strings | less

пятница, 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