суббота, 23 июля 2011 г.

broadcom bcm4311 на kernel 3.0 ubuntu

После установки kernel 3.0 перестала работать broadcom bcm4311.
Лечится очень просто:
1.) sudo apt-get install broadcom-sta-common broadcom-sta-source
2.) Добавляем в /etc/init.d/rc.local
     modprobe --all b43
     modprobe --all b44
3.) Перезагружаемся.
Всё, карточка работает.

вторник, 19 июля 2011 г.

Автокоррекция названиях директорий

Включаем автокоррекцию:
$ shopt -s cdspell

Если теперь мы сделаем опечатку в команде cd:
$ cd /usk/local
то все равно попадем в /usr/local

воскресенье, 17 июля 2011 г.

GUI Hamachi в ubuntu

1.) Качаем и ставим пакет hamachi.

2.) Качаем и ставим пакет для GUI.

sudo add-apt-repository ppa:webupd8team/haguichi
sudo apt-get update
sudo apt-get install haguichi


Ну и всё.

понедельник, 11 июля 2011 г.

Установка индивидуальных deb пакетов с автоматическим удовлетворением зависимостей

Для установки deb пакета с удовлетворением всех зависимостей:

dpkg -i имя_пакета.deb || apt-get -f install

или с sudo:

sudo dpkg -i имя_пакета.deb || sudo apt-get -f install

Отк. (авто)монтирование флешек в Linux



Способ № 1.

Для отключения:
chmod 0700 /media

Для включения:
chmod 0755 /media

Суть этого способа в том, что бы запретить пользователю читать данные с флешки, cd/dvd-диска и т.д. Большинство современных дистрибутивов с включённым автомонтирование монтируют все сменные устройства в директорию /media, поэтому запретив доступ к ней, запрещаем доступ ко всему ее содержимому.
Этот способ удобен, если нужно на одном и том же компьютере кому-то разрешить, а кому-то запретить доступ к внешним устройсвам хранения. В примере единственный пользователь, который может писать и чатать данные с флешки это root (если владелец и группа каталога /media - root).


Если сменить группу каталогу /media например на "storage" и сменить права на /media:
chmod 0750 /media
Только пользователи из группы "storage" смогут получить доступ к сменным носителям. (По поводу групп это все в теории так на практике не проверял)


P.S. Само устройство будет появляться и монтироватся, но с данными на нем работать будет нельзя.
P.S. CD/DVD диски пишутся НЕ копирование файлов в папку, поэтому запретить запись на них так не получится.


Способ № 2.
sudo -i
Для отключения:
echo 'blacklist usb_storage' > /etc/modprobe.d/blacklist-storage.conf


Для включения:
rm /etc/modprobe.d/blacklist-storage.conf

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

воскресенье, 10 июля 2011 г.

Q4Wine

Основные функции q4wine:
Легкое управление процессами wine
Возможность экспорта цветовой палитры qt4 в цветовые настройки wine
Возможность монтирования iso, nrg, mdf образов без привилегий супер пользователя используя fuseiso или q4wine-mount
Возможность легкой и прозрачной работы с разными версиями wine
Легкое создание и управление префиксами WINE (WINEPREFIX)
Автоматическое создание системных каталогов (system, autostart) и иконок wine-утилит
Возможность задания приоритета nice; функции renice;
Возможность экспорта иконок из файлов PE (.exe .dll)
Возможность создания резервных копий и восстановления префиксов wine (WINEPREFIX)
Создание иконок приложений с различными настройками, специфичными для WINE
И многое другое...

Установка в Ubuntu и производных дистрибутивов.
sudo add-apt-repository ppa:tehnick/tehnick

Обновление списка доступных пакетов:
sudo apt-get update

Установка q4wine:
sudo apt-get install q4wine

Или вы можете установить q4wine-unstable (ежедневные сборки):
sudo apt-get install q4wine-unstable

суббота, 9 июля 2011 г.

Установка webmin

Добавляем в /etc/apt/sources.list строки:

deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

И добавляем ключ:
$ sudo su
# wget http://www.webmin.com/jcameron-key.asc
# apt-key add jcameron-key.asc

После этого ставим командами:
# sudo apt-get update
# sudo apt-get install webmin

Все зависимости поставятся автоматически.
Набираем https://localhost:10000/ в любом браузере и видим приглашение на вход.

О том, как расшарить сканер.

Предполагаем, что локально сканер на сервере настроен и работает (см. sane).
Теперь нужно выполнить следующие действия:

На сервере:
1) Ставим демон saned (входит в состав разных пакетов, в зависимости от дистрибутива, наример sane-utils или sane-server) и xinetd.
.
2) В /etc/sane.d/saned.conf добавляем ip клиента(ов) (см. примеры в том же файле).
3) Создаем файл /etc/xinetd.d/saned (для автоматического запуска сервера сканирования сетевым демоном xinetd) вида:
service sane-port
{
disable = no
socket_type = stream
protocol = tcp
user = scanner
wait = no
server = /usr/sbin/saned
}
(здесь предполагается, что в системе присутствует пользователь "scanner" с правами на доступ к сканеру. конечно можно задать пользователя, от имени которого будет запускаться демон saned, по желанию. root строго не рекомендуется)
4) Выполняем команду (чтобы xinetd подхватил созданный нами файл):
$ sudo /etc/init.d/xinetd reload

На клиенте:
5) В /etc/sane.d/net.conf добавляем строку с ip сервера.
6) Пускаем xsane, сканируем, радуемся.

Ловушка из iptables

Iptables для работы ловушки потребуется модуль TARPIT, он открывает у вас на компьютере порт, который ведет в никуда.

Все действия проводятся на дистрибутиве Ubuntu 10.04.

Установка
Всё нужное есть в стандартных репозиториях
$ sudo aptitude install module-assistant xtables-addons-source
$ sudo module-assistant prepare
$ sudo module-assistant auto-install xtables-addons-source
$ sudo depmod -a


Установка ловушки
Установим ловушку на порт ssh(естественно в конфиг файлах ssh сервера нужно чтобы он работал на порту отличном от 22), злоумышленник будет тратить время  на подставной порт который открыл TARPIT.
$ sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j TARPIT

четверг, 7 июля 2011 г.

Iptadmin web-интерфейс для iptables

Это простой веб-интерфейс для Iptables, который поддерживает пока только несколько опций. Отличительная особенность - подробные сообщения об ошибках.
Iptadmin запускается в режиме демона. Программа не хранит в системе никакие промежуточные файлы, информация берётся прямо из iptables-save. Правила редактируются с помощью вызова iptables и сохраняются командой /etc/init.d/iptables save. Для таких дистрибутивов, как debian, сохранение правил настраивается дополнительно.
Авторизация осуществляется с помощью PAM. Доступ разрешён пользователю root и любому другому пользователю из группы iptadmin.
Iptadmin не поддерживает работу по https. Чтобы исключить передачу системных паролей по сети в открытом виде, web-интерфейс работает только на локальном сетевом интерфейсе. Для удалённого доступа необходимо настроить работу по https с помощью стороннего web-сервера.
Сайт разработчика.
На сайте нет deb пакетов, можно скомпилировать из исходников или с помощью alien конвертировать rpm пакет.

Бэкап с помощью rsync

Я предлагаю вам довольно эффективный способ делать бэкапы — rsync+crontab. Главным преимуществом данного метода перед обычным копированием (cp) — скорость работы, т.к. копируются не все файлы, а только те, которые были изменены после предварительного бэкапа.
Приступим
Для начала я смонтировал второй HDD в папку /backup, но можно копировать и на этот же жиск, но тогда какой смысл от бэкапов?

Выполняем команду:

sudo rsync -var --delete --stats /home /backup

После выполнения данной команды, в каталоге /backup появится каталог /home со всем его содержимым.
 
А теперь подробнее:
Параметр -v: просмотр хода работы.
Параметр -a: указывает на то, что необходимо сохранить все атрибуты файлов.
Параметр -r: двигаться по каталогам рекурсивно.
Параметр --delete: файлы которые были удалены в источнике, будут удалены и в приемнике.
Параметр --stats: выводит подробную статистику по окончанию работы.
/home — каталог источник.
/backup — каталог приемник.

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

#!/bin/bash
# /home:
rsync -ar --delete /home /backup# /var/www:
rsync -ar --delete /var/www /backup

И занесем его в кронтаб:

# m h  dom mon dow   command
00 05 * * *     /backup/rsync.backup

Установка и настройка Samba

Samba — это эффективный способ не только организовать взаимодействие компьютеров под управлением Windows и Linux, но и в сетях, состоящих только из Linux-машин он позволяет быстро организовать общий доступ к ресурсам. Файл конфигурации Samba может достигать огромной длины и учитывать множество параметров, однако в большинстве случаев достаточно гораздо меньшего количества настроек.
I. Установка Samba
Если мы хотим и расшаривать сами и иметь доступ к файлам на других компьютерах, то необходимо установить три пакета(samba smbclient smbfs). Например для debian:

$ sudo aptitude install samba smbclient smbfs

II. Настройка Samba
1. Создайте резервную копию /etc/samba/smb.conf:
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

Теперь откройте файл /etc/samba/smb.conf для редактирования в вашем любимом текстовом редакторе. Например так:
$ sudo nano /etc/samba/smb.conf

Все то, что там есть – нам не нужно. Можете отчистить файл полностью, и добавить, например, такую конфигурацию:
[global]
workgroup = home
netbios name = desktop
server string = anonymous lan file server
security = share
browseable = yes[user]
path = /home/user
comment = mediafilesreadonly = No
guest ok = Yes
  dos charset = 866
  unix charset = UTF-8
  display charset = KOI8-R
[ftp]
path = /home/ftp
comment = ftpfilesreadonly = No
guest ok = Yes

Теперь можете заменить информацию на свою:
workgroup – это имя вашей сети, должно быть одинаковым для всех компьютеров, как рабочая группа в Windows.
netbios name – имя вашего компьютера в сети, сделайте всем машинам уникальные, как имя компьютера в Windows.
server string — описание компьютера, аналог подобного значения в Windows.
security — определяет доступ к расшариваемым каталогам.
browseable — хотите ли вы сделать доступными все подкаталоги рашариваемого каталога. Этот параметр также можно использовать отдельно для каждого расшариваемого каталога.
path — путь до расшариваемой папки. В данном конкретном примере будут расшарены домашняя папка пользователя user и домашняя папка пользователя ftp.
comment — комментарий.
readonly – только для чтения. Обратите внимание, что Samba может ограничить права пользователя, но не может расширить права, заданные системой. То есть если на расшариваемом каталоге не стоят права на запись для всех в самой системе, Samba не сможет разрешить запись в него сторонним пользователям. Однако если на каталоге стоят права 777, то задав параметр readonly = Yes вы сможете ограничить доступ на запись для пользователей, подключающихся из сети.

Аналогично вы можете создать любое количество сетевых каталогов.

После завершения конфигурации выполните команду
$ testparm

она автоматически проверит файл конфигурации. После этого перезагрузите Samba:
$ sudo /etc/init.d/samba restart

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

Восстановление пароля root в MySQL

Иногда бывают ситуации, когда необходимо сменить root пароль не зная старого.
Вы можете восстановить пароль от баз данных MySQL если повторите следующие 5 шагов:

1. Останавливаем службу MySQL:

$ /etc/init.d/mysql stop

2. Запускаем службу с опцией --skip-grant-tables
mysqld_safe --skip-grant-tables &

3. Подключаемся с серверу MySQL при помощи клиента mysql:
$ mysql -u root

4. Вводим новый пароль для root:
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

5. Останавливаем сервер MySQL:
$ /etc/init.d/mysql stop

6. Запускаем MySQL-сервер и логинимся с новым паролем:
$ /etc/init.d/mysql start
$ mysql -u root -p

Установка абсолютно индентичного софта на несколько машин с одной

Установка абсолютно индентичного софта на несколько машин с использованием dpkg и apt-get.

Для начала нам необходимо сохранить список установленых пакетов.
Для этого на host1 выполняем:

dpkg --get-selections > selections.txt

Теперь необходимо скопировать получившийся файл на host2.
Поставим флаги на host2:
dpkg --set-selections < selections.txt 

и наконец-то установим весь список софта:
apt-get -u dselect-upgrade 

В результате имеем 2 машины с абсолютно одинаковым набором установленого софта.

LogWatch -отчёт и анализ состояния сервера Linux по почте

Утилита LogWatch анализирует log файлы системы по различным критериям с возможность составления отчёта и отправки его по почте. Утилита построена на модульном принципе, и анализирует не все, а лишь те сервисы, которые указаны в настройках.Более того, можно и самому писать модули для анализа нужных логов. В общем – вещь, полезная.

Ставим:
$ apt-get install logwatch
 
Теперь переделываем конфиг себя:
$ nano /usr/share/logwatch/default.conf/logwatch.conf

Папка с логами по умолчанию
LogDir = /var/log/#

Папка для временных файлов, или указываем свою или создаем эту, так как она ни создается
TmpDir = /var/cache/logwatch
При установке утилита прописывает себя в /etc/cron.daily/00logwatch и будет запускаться каждый день. Идем в nano /etc/cron.daily/00logwatch и закоментируем всё и добавляем одну строчку:

#execute
/usr/share/logwatch/scripts/logwatch.pl --mailto Электронный@адрес

если лог файл отличается от стандартного, лежит не в  /var/log/, а в ином место

$ nano /usr/share/logwatch/default.conf/logfiles/

LogFile = apache/*access.log
LogFile = /www/site1/logs/access*.log
LogFile = /www/site2/logs/access*.log
#LogFile = apache/*access.log.1
#LogFile = apache2/*access.log.1
LogFile = apache/error_log
LogFile = /www/site1/logs/error*.log
LogFile = /www/site2/logs/error*.log
#LogFile = httpd/site1/_log
#LogFile = httpd/site2/error_log............

Резервное копирование командой dd

Так же этот метод можно еще назвать и «зеркалированием»,так как программа dd копирует данные по секторам не зависимости от того есть ли на этом участке диска данные или нет, будет создана точная копия и размер будет точно такой же.
То есть если раздел /dev/sda1 имеет объем в 25 Gb, а занято всего 5 Gb то все равно копия образа будет 25 Gb.Простыми словами данные откуда (параметр if ), куда (параметр of )
Примеры использывания:
$ dd if=/dev/hda of=/dev/hdb conv=noerror,sync

Команда выше сделает точную копию раздела /dev/hda в разделе /dev/hdb,т.е есть мы «отзеркалировали» /dev/hda
Часто используемые параметры после conv:
- noerror — продолжать копирование не обращая внимание на bad-блоки и прочие ошибки.
- sync — поврежденные или отсутствующие данные во входном буфере на выходе будут заменены на нули.

Опция замедляет работу команды dd, но для более корректного образа стоит воспользоваться ею:
$ dd if=/dev/sda5 of=/home/backup/sda5.img

Делаем полный образ раздела /dev/sda5 в бинарный файл sda5.img.
И еще для полного спокойствия сделаем копию нашей MBR (Master Boot Record).
MBR – это первый сектор на жестком диске содержащий таблицу разделов и запись, с какого раздела загружаться.
$ dd if=/dev/sda1 of=/home/backup/mbr.dump bs=512 count=1

bs — block size, размера блока который мы хотим скопировать
count — количество bs
Восстановления MBR из резервной копии:
$ dd if=/home/backup/mbr.dump of=/dev/sda1 bs=512 count=1

Восстановления раздела из образа:
$ dd if=/home/backup/sda5.img of=/dev/sda5

Но dd имеет массу недостатков, а именно:

  • не видно сколько скопировано
  • не видно сколько осталось
  • не видно, чем вообще сейчас dd занимается
Нашлась достаточно альтернатив dd - pv:

pv /dev/sda > /dev/sdb

среда, 6 июля 2011 г.

Полное резервирование Linux-системы

Самый простой способ полностью заархивировать систему в один Tar-архив, который при необходимости можно будет развернуть обратно. Для этого надо с правами root зайти в консоли в корень системы и затарить все данные:

sudo su
cd /
tar cvpzf systembackup.tgz −−exclude=/proc −−exclude=/lost+found −−exclude=/systembackup.tgz −−exclude=/mnt −−exclude=/sys /

где «−−exclude» – это параметр, который указывает какие разделы архивировать не стоит. Тут уж сами решаем, кому чего нужно…
Бывает, что в конце выполнения команды можно получить ошибку «tar: Error exit delayed from previous errors». Однако, ее можно игнорировать.
Результатом выполнения этих нехитрых команд будет появление systembackup.tgz в корневой директории. После этого файлик можно закинуть в любое удобное место и хранить до «черного дня».
Восстановить систему из файла можно по-разному. Например, загрузиться с LiveCD и распаковать архив в корень голой системы. А можно просто распаковать на уже готовую систему, заменив все, после чего получим ту систему, из которой мы делали резервную копию.
 
tar xvpzf backup.tgz -C /    

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

вторник, 5 июля 2011 г.

Открытие меню по нажатию на клавишу Super

Если вы недавно пересели с Виндоус или просто хотите, чтобы меню “Приложения” открывалось по нажатию на клавишу Super (клавиша с изображением логотипа Виндоус), то это можно сделать всего одной строкой в терминале:
gconftool-2 --set /apps/metacity/global_keybindings/panel_main_menu --type string "Super_L"
Закрыть меню можно нажатием на Esc.
Надо заметить, что открытие меню по Alt+F1 пропадает.
UPD: могут возникнуть проблемы с другими комбинациями, где частью является клавиша Super.
Исправить всё обратно: gconftool-2 --set /apps/metacity/global_keybindings/panel_main_menu --type string "Alt+F1"

Wine захламляет диалог “Открывать в приложении”

rm ~/.local/share/applications/wine-*.desktop

Создаем свои шаблоны для меню “Создать документ”

Простейший примером может служить сценарий для Bash.Итак создаем в папке ~/Шаблоны файл Сценарий Bash.sh. Открываем его и записываем:

#!/bin/bash

Теперь на пустом месте жмем правой кнопкой, выбираем Создать документ и видим там наш новый шаблон - Сценарий Bash. Создаем его, открываем и с умилением наблюдаем в нем стоку:

#!/bin/bash

Так же можно сделать сценарий для Python только вместо #!/bin/bash прописываем #!/usr/bin/python сохраняем в "Шаблоны" в домашнем каталоге с названием к примеру Сценарий Python.py всё готова так же можно в папку Шаблоны добавить шаблоны для OpenOffice или GIMP.

суббота, 2 июля 2011 г.

Увеличиваем отзывчивость системы при сильной нагрузки.

Метод работает на ядре 2.6.32.

1.)Выполняем скрипт через sudo:
#!/bin/bash

YELLOW="\033[1;33m"
RED="\033[0;31m"
ENDCOLOR="\033[0m"

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function PARCHEAR ()
{

FICHERO="$HOME/.bashrc"

echo ""
echo -e $YELLOW"Patching [${FICHERO}]..."$ENDCOLOR
echo ""


LINEAS=`cat $FICHERO | grep "/dev/cgroup/cpu/user" | wc -l`
if [ "$LINEAS" == "0" ];
then
    echo "Adding the patch..."
    echo "if [ \"\$PS1\" ] ; then" | tee -a $FICHERO
    echo "mkdir -p -m 0700 /dev/cgroup/cpu/user/\$\$ > /dev/null 2>&1" | tee -a $FICHERO
    echo "echo \$\$ > /dev/cgroup/cpu/user/\$\$/tasks" | tee -a $FICHERO
    echo "echo \"1\" > /dev/cgroup/cpu/user/\$\$/notify_on_release" | tee -a $FICHERO
    echo "fi" | tee -a $FICHERO
else
    echo "It seems the patch is already included in $FICHERO"
fi

FICHERO="/etc/rc.local"
echo ""
echo -e $YELLOW"Patching [${FICHERO}]..."$ENDCOLOR
echo ""

LINEAS=`cat $FICHERO | grep "/dev/cgroup/cpu/release_agent" | wc -l`
if [ "$LINEAS" == "0" ];
then

    echo "Adding the patch..."
    POSI=`cat $FICHERO | grep -n "exit 0" | sort -nr | head -n 1 | awk -F: '{print $1}'`
    #echo "Posi es [$POSI]"
    echo "Making backup of $FICHERO in /etc/rc.local.backup.txt"
    cp /etc/rc.local /etc/rc.local.backup.txt
    sed "${POSI}imkdir -p /dev/cgroup/cpu\nmount -t cgroup cgroup /dev/cgroup/cpu -o cpu\nmkdir -m 0777 /dev/cgroup/cpu/user\necho \"/usr/local/sbin/cgroup_clean\" > /dev/cgroup/cpu/release_agent" /etc/rc.local | tee /etc/rc.new.local
    mv /etc/rc.new.local /etc/rc.local

    #echo "#========== 200 lines kernel patch alternative ============" | tee -a $FICHERO
    #echo "mkdir -p /dev/cgroup/cpu" | tee -a $FICHERO
    #echo "mount -t cgroup cgroup /dev/cgroup/cpu -o cpu" | tee -a $FICHERO
    #echo "mkdir -m 0777 /dev/cgroup/cpu/user" | tee -a $FICHERO
    #echo "echo \"/usr/local/sbin/cgroup_clean\" > /dev/cgroup/cpu/release_agent" | tee -a $FICHERO
    #echo "#====================================" | tee -a $FICHERO
else
    echo "It seems the patch is already included in $FICHERO"
fi

echo ""
echo -e $YELLOW"Making [${FICHERO}] executable"$ENDCOLOR
echo ""
sudo chmod +x $FICHERO

FICHERO="/usr/local/sbin/cgroup_clean"
echo ""
echo -e $YELLOW"Creating [${FICHERO}]..."$ENDCOLOR
echo ""
if [ ! -e $FICHERO ];
then
    echo "#!/bin/sh" | tee $FICHERO
    echo "if [ \"\$*\" != \"/user\" ]; then" | tee -a $FICHERO
    echo "rmdir /dev/cgroup/cpu/\$*" | tee -a $FICHERO
    echo "fi" | tee -a $FICHERO

else
    echo "File $FICHERO already exists."
fi;

echo ""
echo -e $YELLOW"Making [${FICHERO}] executable"$ENDCOLOR
echo ""
sudo chmod +x $FICHERO

echo "DONE. The patch has been applied. Restart your computer..."

}
#-----------------------------------------------------------------------------

if [ $USER != root ]; then
  echo -e $RED"Error: you need to run this script as root."
  echo -e $YELLOW"Exiting..."$ENDCOLOR
  exit 0
fi

PARCHEAR

# end

2.) Перезагружаем систему.