четверг, 28 апреля 2011 г.

OpenVZ - различные показания df -h и du -sh даже после перезапуска

У данных программ выдача может различаться, я ранее писал об этом: http://phpsuxx.blogspot.com/2010/11/df-du-sh.html


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

Имеем следующие показания в VPS:
vps:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/simfs 9.8G 7.2G 2.7G 74% /
tmpfs 150M 0 150M 0% /lib/init/rw
tmpfs 150M 0 150M 0% /dev/shm
community-seo:~# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/simfs 1280000 1152242 127758 91% /
tmpfs 38400 4 38396 1% /lib/init/rw
tmpfs 38400 1 38399 1% /dev/shm

vps:~# du -sh /*
0 /aquota.group
0 /aquota.user
4.4M /bin
4.0K /boot
4.0K /dev
4.9M /etc
12K /home
8.0M /lib
0 /lib64
4.0K /media
4.0K /mnt
4.0K /opt
du: cannot access `/proc/31770/task/31770/fd/4': No such file or directory
du: cannot access `/proc/31770/fd/4': No such file or directory
0 /proc
92K /root
5.1M /sbin
4.0K /selinux
4.0K /srv
0 /sys
12K /tmp
664M /usr
2.5G /var


Фикс:
vzctl stop ct
vzquota drop ct
vzctl start ct

среда, 27 апреля 2011 г.

Как ограничить ssh пользователя, входящего в систему по сертификатам лишь заданным диапазоном IP?

Итак, у нас есть Linux пользователь, который входит в систему по ssh с использованием ключей - парольная аутентификация запрещена. Задача - как ограничить пользователю возможный диапазон IP, с которых он входит в систему.

Вариант 1.

Задать диапазон хостов, с которых может входить юзер можно посредством директивы AlloUsers в /etc/ssh/sshd_config.

Вот цитата из официальной документации (man sshd_config):
AllowUsers This keyword can be followed by a list of user name patterns, separated by spaces. If specified, login is allowed only for user names that match one of the patterns. ‘*’ and ‘?’ can be used as wildcards in the patterns. Only user names are valid; a numerical user ID is not recognized. By default, login is allowed for all users. If the pattern takes the form USER@HOST then USER and HOST are separately checked, restricting logins to particular users from particular hosts.

Но, очевидно, каждый раз дергать конфиги такого важного демона как ssh для изменения IP крайне неправильно.

Вариант 2.

Использовать поле options в файле authorized_keys: from "ip_addr".

Выглядеть это будет так:
from "ip_addr" ssh-rsa AAAABтут_много_букв_которые_представляю_собой_ключ_в_base64== test@yandex.ru

Подробное описание из документации (man 8 sshd):
from="pattern-list"

Specifies that in addition to public key authentication, the canonical name of the remote host must be present in the comma-separated list of patterns (‘*’ and ‘?’ serve as wildcards). The list may also contain patterns negated by prefixing them with ‘!’; if the canonical host name matches a negated pattern, the key is not accepted. The purpose of this option is to optionally increase security: public key authentication by itself does not trust the network or name servers or anything (but the key); however, if somebody somehow steals the key, the key permits an intruder to log in from anywhere in the world. This additional option makes using a stolen key more difficult (name servers and/or routers would have to be compromised in addition to just the key).

Как проверить конфиг-файл ssh без перезапуска демона?

/usr/sbin/sshd -t

Использование KeyChain для работы с ssh

http://www.cyberciti.biz/faq/ssh-passwordless-login-with-keychain-for-scripts/

Как запретить логин в ssh по паролю для определенного юзера?

Match User someuser
PasswordAuthentication no

Работает только для Debian/Ubuntu, на CentOS поддержки Match нету!

http://serverfault.com/questions/84199/disable-ssh-password-authentication-by-user

Вывод ошибок на stderr в Python

import sys
print >> sys.stderr, 'This is error!'


http://stackoverflow.com/questions/939866/pythons-print-vs-stderr

Эмуляция канала с потерями

http://www.linuxfoundation.org/collaborate/workgroups/networking/netem

SSH, pseudo-tty -t: Connection to some.host.com closed.

При использовании интерактивного ssh:
ssh -t ....

Часто выдается ошибка Connection to some.host.com closed. Чтобы от нее избавится нужно рядом с -t добавить ключ -q.

Источник: http://fixunix.com/ssh/73970-how-avoid-connection-host-closed-t.html

Запуск интерактивных команд по ssh: TERM environment variable not set.

При попытке запустить удаленно интерактивную команду получаем облом:
ssh test@node1.domain.ru top
TERM environment variable not set.

Чтобы все заработало, делаем так:
ssh test@node1.domain.ru -t top

вторник, 26 апреля 2011 г.

Alternative DNS Servers бесплатная PDF книга

Содержание данной прекрасной книги: http://blog.fupps.com/2008/11/24/alternative-dns-servers-table-of-contents/

Ссылка на статью о бесплатном доступе к книге: http://blog.fupps.com/2010/10/29/alternative-dns-servers-the-book-as-pdf/

Ссылка на книгу: http://mens.de/:/altdnsbook

Вход в SSH по Public Keys из LDAP

http://blog.fupps.com/2006/03/02/ssh-public-keys-from-ldap/

sudoers в ldap

http://www.gratisoft.us/sudo/sudoers.ldap.man.html

Как работает cPanel jailshell?

http://www.learncpanel.com/server-administration/jailshell-virtfs/

Двухфакторная аутентификация посредством sms

http://en.wikipedia.org/wiki/Two_factor_authentication#SMS_One_Time_Password

Что такое двухфакторная аутентификация в двух словах?

Двухфакторная аутентификация

Аутентификация с использованием двух различных аутентифицирующих факторов.

Существуют три обобщенных аутентифицирующих фактора:
То, что Вы знаете, например пароль или PIN.
То, что Вы имеете, например, кредитная карта, аппаратный ключ или ключевой файл на флешке.
То, что Вы есть, например, отпечаток пальца, скан радужки или иная биометрия.

Распространенные реализации двухфакторной аутентификации используют "то, что Вы знаете" (пароль) как один из факторов, и либо "то, что вы имеете" (физическое устройство), либо "то, что Вы есть" (биометрия) в качестве второго фактора. Примером ДФА может служить банковская карта.

Использование двух факторов вместо одного обеспечивает более высокий уровень надежности аутентификации.

Взято без изменения с ресурса: http://www.pgpru.com/biblioteka/slovarj/dvuhfaktornajaautentifikacija

воскресенье, 24 апреля 2011 г.

Наиболее оптимальные настройки tar для кросс-платформенного переноса архивов

tar --numeric-owner -cpzf $i.tar.gz path/

Авторизация на клиентских сертификатах в Apache

http://www.opennet.ru/base/sec/ssl_cert.txt.html

Как правильно добавлять модули ядра в автозапуск на RHEL 5/CentOS 5

Вот так: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-kernel-modules-persistant.html

Проверено, работает :)

Adaptec: Simple Volume vs JBOD

Столкнулся вот с такой штукой на Adaptec:
Logical device information
----------------------------------------------------------------------
Logical device number 0
Logical device name : SSD-Volume
RAID level : Simple_volume
Status of logical device : Optimal
Size : 114290 MB
Read-cache mode : Enabled
MaxIQ preferred cache setting : Enabled
MaxIQ cache setting : Disabled
Write-cache mode : Enabled (write-back)
Write-cache setting : Enabled (write-back)
Partitioned : No
Protected by Hot-Spare : No
Bootable : Yes
Failed stripes : No
Power settings : Disabled
--------------------------------------------------------
Logical device segment information
--------------------------------------------------------
Segment 0 : Present (0,0) 110965043200046100B1


Но вот как создавать эти самые Simple_volume через arcconf и чем они отличаются от JBOD - не знаю. Кто подскажет?

Создать Simple Volume можно так:
arcconf create 1 LOGICALDRIVE MAX volume 0,1

Причем, можно создать SM прямо из JBOD раздела.

У Simple Volume заметил преимущество - не надо ребутать систему, чтобы были увидены массивые, в отличие от JBOD.

Интересные последствия активации параметра ядра acpi=off

Один из сайд-эффектов этой настройки заключается в том, что отключается гипер-тридинг на соверменных процессорах. То есть, без этого параметра ядер было 8, а с ним стало 4:
cat /proc/cmdline
ro root=UUID=f98218f9-1428-4879-b567-f314235cff8e acpi=off vga=0x317
root@ovz32 ~ # cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
stepping : 5
cpu MHz : 3074.424
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx
rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2
cx16 xtpr popcnt lahf_lm
bogomips : 6154.69
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management: [8]

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
stepping : 5
cpu MHz : 3074.424
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 4
apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx
rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2
cx16 xtpr popcnt lahf_lm
bogomips : 6147.66
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management: [8]

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
stepping : 5
cpu MHz : 3074.424
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 4
apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx
rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2
cx16 xtpr popcnt lahf_lm
bogomips : 6024.78
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management: [8]

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
stepping : 5
cpu MHz : 3074.424
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 6
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx
rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2
cx16 xtpr popcnt lahf_lm
bogomips : 6147.65
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management: [8]

Tomcat, Debian: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

Вот с такой ошибкой можно столкнуться при использовании Tomcat и Debian:
cat /var/log/daemon.log
Apr 19 18:30:37 Debian-50-lenny-64-minimal jsvc.exec[24539]: Apr 19,
2011 6:30:37 PM org.apache.catalina.core.AprLifecycleListener
lifecycleEvent#012INFO: The Apache Tomcat Native library which allows
optimal performance in production environments was not found on the
java.library.path:
/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

Фиксится она достаточно просто:
apt-get install -y libtcnative-1

пятница, 15 апреля 2011 г.

Монтирование vmfs (файловая система VmWare ESXi) в Ubuntu 10.10 посредством vmfs-tools

Устанавливаем:
apt-get install -t vmfs-tools

Получаем список разделов:
fdisk -l /dev/sda

Disk /dev/sda: 1500.3 GB, 1500301910016 bytes
64 heads, 32 sectors/track, 1430799 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x49e2fd2f

Device Boot Start End Blocks Id System
/dev/sda1 5 900 917504 5 Extended
/dev/sda2 901 4995 4193280 6 FAT16
/dev/sda3 4996 1430501 1459718144 fb VMware VMFS
/dev/sda4 * 1 4 4080 4 FAT16 <32M /dev/sda5 5 254 255984 6 FAT16 /dev/sda6 255 504 255984 6 FAT16 /dev/sda7 505 614 112624 fc VMware VMKCORE /dev/sda8 615 900 292848 6 FAT16 Partition table entries are not in disk order


Нужен нам /dev/sda3 так как раз в нем лежат данные, его тип: VMware VMFS.

Монтируем:
vmfs-fuse /dev/sda3 /mnt

Вуаля:

ls -al /mnt
total 4.0K
drwxr-xr-t 14 root root 2.6K 2011-03-17 09:28 .
drwxr-xr-x 21 root root 4.0K 2011-04-14 22:18 ..
drwxr-xr-x 2 root root 1.8K 2011-04-13 16:51 bura.draugiem.lv
drwxr-xr-x 2 root root 2.5K 2011-04-13 16:52 bura.odnoklasniki.ru
-r-------- 1 root root 7.1M 2010-11-26 22:04 .fbb.sf
-r-------- 1 root root 61M 2010-11-26 22:04 .fdc.sf
drwxr-xr-x 2 root root 2.2K 2011-04-13 16:50 IPpool
drwxr-xr-x 3 root root 420 2011-02-02 17:34 ISO
drwxr-xr-x 2 root root 2.1K 2011-04-13 16:51 ns2.hostpapa.lv
-r-------- 1 root root 244M 2010-11-26 22:04 .pbc.sf
-r-------- 1 root root 249M 2010-11-26 22:04 .sbc.sf
drwxr-xr-x 2 root root 560 2011-01-11 11:36 scripts
-r-------- 1 root root 4.0M 2010-11-26 22:04 .vh.sf
drwxr-xr-x 2 root root 2.4K 2011-04-13 16:51 VM1
drwxr-xr-x 2 root root 1.7K 2011-03-17 10:05 VM-2011 Suse 11.3
drwxr-xr-x 2 root root 1.6K 2011-04-13 16:51 +Ww-VM-1006+XQ- bura.mysql
drwxr-xr-x 2 root root 560 2011-01-13 18:02 xen1
drwxr-xr-x 2 root root 1.6K 2010-12-06 14:43 zole.draugiem.lv
drwxr-xr-x 2 root root 2.2K 2011-04-13 16:51 zole.draugiem.lv_1
root@Ubuntu-1010-maverick-64-minimal:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdc3 1.4T 1.2G 1.3T 1% /
none 5.9G 268K 5.9G 1% /dev
none 5.9G 0 5.9G 0% /dev/shm
none 5.9G 40K 5.9G 1% /var/run
none 5.9G 0 5.9G 0% /var/lock
/dev/sdc2 251M 34M 205M 15% /boot
/dev/fuse 1.4T 439G 954G 32% /mnt

воскресенье, 10 апреля 2011 г.

Как добавить дополнительный жесткий диск в XenServer как отдельное хранилище

Создаем на новом диске разметку под LVM (ни разделы при этом, ни таблицу разделов создавать не требуется!):
pvcreate /dev/sdb

Добавляем диск как отдельное хранилище:
xe sr-create content-type=user host-uuid=[жмем таб] type=lvm device-config-device=/dev/sdb name-label="SAS Local storage"

После этого запрашиваем листинг имеющихся строаджей:
xe sr-list type=lvmuuid ( RO) : c7f66fc2-369e-48d7-8550-e15674bffde3
name-label ( RW): SAS Local storage
name-description ( RW):
host ( RO): xen
type ( RO): lvm
content-type ( RO): user

uuid ( RO) : 093e7a5c-1c38-258b-fb96-fe7cbb486ec0
name-label ( RW): Local storage
name-description ( RW):
host ( RO): xen
type ( RO): lvm
content-type ( RO): user


Все, после этого диск сразу появится в разделе "Disks and Storage Repositories", "Current Storage Repositories" с именем "SAS Local storage". Обращаю внимание, что этот локал сторадж не является default.

Источник: http://www.archy.net/2009/05/21/adding-local-storage-to-xenserver-55/

пятница, 8 апреля 2011 г.

Как восстановить удаленный файл в Линукс, если он еще открыт в каком-либо приложении?

Все очень просто.

system-r:~# wc -l /etc/apache2/apache2.conf
0 /etc/apache2/apache2.conf
system-r:~# lsof | grep apache2.conf
ispmgr 6655 root 18u REG 9,2 0 21381891 /etc/apache2/apache2.conf
ispmgr 6655 root 37u REG 9,2 15552 21382423 /etc/apache2/apache2.conf.snap (deleted)
system-r:~# cd /proc/6655/fd
system-r:/proc/6655/fd# wc -l 37
398 37
system-r:/proc/6655/fd# cp 37 /root/apache2_recovered.conf
system-r:/proc/6655/fd# wc -l /root/apache2_recovered.conf
398 /root/apache2_recovered.conf
system-r:/proc/6655/fd# stat /root/apache2_recovered.conf
File: `/root/apache2_recovered.conf'
Size: 15552 Blocks: 32 IO Block: 4096 regular file
Device: 902h/2306d Inode: 6971410 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2011-04-07 23:48:39.000000000 +0400
Modify: 2011-04-07 23:48:35.000000000 +0400
Change: 2011-04-07 23:48:35.000000000 +0400

пятница, 1 апреля 2011 г.

Как восстановить удаленный файл в svn?

Предположим, что у нас имеется файл когда-то удаленный из SVN репозитория, мы знаем его имя и папку, где он находился.

Для начала нужно найти ревизию, когда файл был удален, для этого переходим в папку, где он находился ранее и делаем листинг изменений репозитория:
cd some_folder
svn log --verbose | grep file_name -C 10

В ответ будет выдано примерно следующее:
...
r552 | developer | 2010-11-18 19:55:04 +0300 (Thu, 18 Nov 2010) | 1 line
Changed paths:
D /xxxx/trunk/file_name.php
M /....
M /....
...

Теперь мы знаем, что в ревизии 552 файл уже был удален, следовательно, нам нужно взять этот файл из ревизии 551.

Проверить существование файла в определенной ревизии можно следующим образом:
# svn ls -r 552| grep file_name
# svn ls -r 551| grep file_name
file_name.php

Возвращаем удаленный файл на место:
svn up -r 551 file_name.php

В ответ нам будет выдано:
A file_name.php
Updated to revision 551.

После этого добавляем файл в текущую ревизию и коммитим:
svn ci -m 'File file_name.php reverted'

Все :)

Источник: http://m0j0.wordpress.com/2007/10/25/recovering-deleted-files-from-an-svn-repository/

Запрещенный Прием начался в кино, оооочень крутой трейлер!

Рекомендую к просмотру: http://www.kinoafisha.msk.ru/movies/8094636/

P.S. еще не ходил