Линукс-полезняшки в кармашке

Abdula аватар

Полезные мелочи, которые бывают часто нужны

и о которых часто забываешь

 
 


Генерация случайных паролей

pwgen

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

Например, эта команда генерирует криптостойкую читабельную смесь букв, цифр и знаков:

pwgen -sBy

 


Очень удобный «Web-построитель команды 'find'»


Его страница находится здесь
 


Тестирование скорости веб-сервера


Используется консольная утилита ab
Для своей установки требует пакета httpd-tools и runtime-библиотеку Апача.

ab -c 100 -n 1000 http://mysite.com/

где
    c - число множественных запросов к серверу в секунду
    n - число множественных запросов к серверу в секунду
Если в качестве цели указывается доменное имя, слеш в конце обязателен.
 


Загрузка Linux мелким шрифтом


В современных дистрибутивов Linux загрузка системы на экране и работа в ее консоли обычно отображается удобным небольшим шрифтом, позволяющим разместить на экране больше информации.
Но иногда это не так, и шрифт выглядит крупным, 80x25

Чтобы исправить это, необходимо в /boot/grub/grub.conf в строку kernel... добавить параметр режима экрана vga=
Например, для режима 1024x768 данный параметр будет равен 0x314 и строка может выглядеть так:

kernel /vmlinuz-2.6.18-194.26.1.el5 ro root=/dev/System/Root elevator=deadline vga=0x314

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

PS. При использовании технологии виртуализации Xen из-за особенности ее ядра указанный метод не работает.


Сетевая установка CentOS

Среди различных вариантов установки продуктов Red Hat есть сетевой вариант, когда локальная загрузка производится с небольшого загрузочного дистрибутива объемом порядка 10 Mb, а остальное все дотягивается с репозитариев. Удобно, если есть скоростной канал.

Но вот за что хочется дать пинка радхатовским разработчикам - так это за извращенный синтаксис такой установки. Дело вот в чем.
Когда процесс установки доходит до указания источника с дистрибутивом, возникает окошко для ввода его адреса, для http-источника оно такое:

Настройка HTTP

Введите следующую информацию:

  • имя или IP вашего сервера Веб
  • каталог на этом сервере, в котором содержится CentOS для вашей архитектуры

Казалось, чего тут сложного? Вводим интуитивно понятное:

  • mirror.centos.org
  • /centos/5.5/os/x86_64/images

т.е. указываем /images - каталог, где лежит необходимый нам образ stage2.img

А вот фигушки! В ответ на эти данные неизменно возникает ошибка:

Ошибка

Не удается получить
http://mirror.centos.org//centos/5/os/x86_64/images/images2.img

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

http://mirror.centos.org/centos/5/os/x86_64/

Т.е. без указания каталога /image с образом. Почему именно так - подержите арбуз...
 


Пример использования chkconfig


Утилита chkconfig служит для управления сервисами. Запуск ее без параметров обычно выводит список сервисов в системе и их состояние. А как ими управлять?
Ответы можно найти в мане, но как правило, для chkconfig он везде на английском. Вопросы к гуглу футболятся опять к чтению мана. А ведь достаточно привести простой пример, чтобы понять ее работу.

Примеры наиболее частого использования:

Чтобы узнать состояние всех сервисов, достаточно запустить chkconfig без параметров в виде:

chkconfig --list netfs

Чтобы отключить работу сервиса netfs на уровнях выполнения 3, 4 и 5, необходимо выполнить следующую команду:

chkconfig --level 345 netfs off

Чтобы отключить работу сервиса ip6tables на уровнях выполнения 2, 3, 4 и 5, необходимо выполнить следующую команду:

chkconfig --level 2345 ip6tables off

Включение сервиса в работу:

 chkconfig --level 2345 ntpd on

После перезагрузки системы установленное состояние сервиса сохраняется.

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

service netfs start

или общей перезагрузкой системы.

Подробнее.

 


Подсчет времени выполнения команд


Чтобы подсчитать, сколько времени будет выполняться так или иная команда, нужно перед ней добавить префикс time

Например, в этом примере подсчитывается время копирования каталога с файлами:

time  cp  /lib  /home/abdula

Результат выводится в виде:

real 3m18.814s
user 0m19.170s
sys 0m6.905s

 


Подсчет контрольной суммы файлов


Иногда требуется подсчитать контрольную сумму файлов, лежащих в каталогах и подкаталогах.
Всего несколько команд, требуемых для выполнения этой задачи, демонстрируют мощь Linux, в частности, интерпретатора bash:

  1. #!/bin/sh
  2. cd "$1"
  3. PathName=$(basename $(pwd))
  4. cd ..
  5. find "$PathName" -type f -print0 | xargs -0 md5sum > "$PathName".md5

Для удобства помещаем эти команды в исполняемый скрипт, например, csumm.sh, и запускаем его с аргументом, равным пути подсчитываемого каталога, например:

./csumm.sh  /boot

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

Данный скрипт рекурсивно обходит все папки и файлы и выдает результат в файле с именем, совпадающим с именем подсчитываемого каталога, примерно в таком виде:

29127f2917ab5da409cf96d2f85f51ce boot/grub/jfs_stage1_5
3a470d923dea5de8d6547c7431a476dd boot/grub/splash.xpm.gz
f94a0824e7862bdab090b0a9dbb26384 boot/grub/vstafs_stage1_5
1f143a653df3c6961259e181cb84236c boot/grub/fat_stage1_5
c1e7a72a73b5db02653a8d4e2d760c07 boot/grub/ffs_stage1_5
48c2edef9527d3fb1259b74dbaab9dd8 boot/grub/stage1
c775729f11f1d3ef288482927a2ae2bb boot/grub/minix_stage1_5
145d3a00a64c8e1b3f2eb760f35850ce boot/grub/ufs2_stage1_5
8bc2d36dcf4ca401b16970caa146a6f2 boot/grub/e2fs_stage1_5
cb8f7abb71fc677873aaaf8ae0c5c4c6 boot/grub/device.map
413a504defbaa728a0fddacbf0f656f1 boot/grub/stage2
093622972811a10adae157724e37e062 boot/grub/xfs_stage1_5
0d12ccbbfada1d0a45693f349edd42a0 boot/grub/reiserfs_stage1_5
a716f899a795f71f64ef4554dc935461 boot/grub/iso9660_stage1_5
c5a0753899d331b662b984ee8e79f563 boot/vmlinuz-2.6.32-71.18.2.el6.x86_64
b98b21114cf4c4763189db2b9c51aaf5 boot/symvers-2.6.32-71.18.2.el6.x86_64.gz
9f219fceab9f99e8376f8445526b960c boot/efi/EFI/redhat/grub.efi
41a5454cc4ad65b34a3951aa72445c55 boot/vmlinuz-2.6.32-71.el6.x86_64
f9b634e36065fe92437ff9e1983b9af9 boot/.vmlinuz-2.6.32-71.el6.x86_64.hmac
b4a4366c065b8431d7824cb7581ea664 boot/initramfs-2.6.32-71.18.2.el6.x86_64.img
9969fe1ecf926e5f1a051b2aa278805d boot/initramfs-2.6.32-71.el6.x86_64.img
ee84d20f3ceb6c3b6fb3ec51f7a54e85 boot/System.map-2.6.32-71.el6.x86_64
e5de0af756b4ec1b82a289d00bbd1b8c boot/symvers-2.6.32-71.el6.x86_64.gz
5e5ab4ce5bc16d6e7a639344baf4b49b boot/config-2.6.32-71.18.2.el6.x86_64
dbe67f2833725262ae2b2a11c0760607 boot/.vmlinuz-2.6.32-71.18.2.el6.x86_64.hmac
395debd47cb5062c6bb181a86f649ab1 boot/System.map-2.6.32-71.18.2.el6.x86_64
7f88a9a0ac4d7b73e6916c93bb5f9746 boot/config-2.6.32-71.el6.x86_64

Часто необходимо отсортировать полученные результаты для удобства сравнения с другими результатами.
Сортировку по первому полю можно выполнить следующим образом:

sort  input.md5 -o output.md5

Но конечно, лучше сделать сортировку по второму полю (по пути). Кто возьмется?

 


Исключение обновления некоторых пакетов в YUM


Чтобы отключить обновление некоторых пакетов, производимое с помощью YUM, необходимо в конфиге /etc/yum.conf дописать параметр exclude= и после него перечислить через запятую исключаемые пакеты,
Например:

exclude=isdn4k-utils,ql2200-firmware,irda-utils,bluez-utils,wvdial,php*,rp-pppoe

 


Аналоги консольной утилиты SCREEN


Утилита SCREEN отлично помогает при работе с программами, запускаемыми в фоне, почти как сервисы.

Кроме нее, есть еще и такие аналоги -

tmux
dialog

 


Контроль процессов


Чем мы пользуемся при контроле процессов? Разумеется, бессменной, как vi, утилитой top
Но не забываем, что кроме нее, есть и другие средства контроля, иногда превосходящее ее в каких-то случаях, иногда более удобные.
Среди них:

   ps
   htop
   iotop

Например эта команда будет показывать процессы, активно работающие с диском:

   iotop -o

Выбор по конкретной ситуации.
 


Надёжное отключение SeLinux


Иногда, особенно если паранойя безопасности над нами не доминирует, возникает неугасимое желание отключить подсистему SeLinux, которая порой порождает всяческие конфликты в системе и усложняет ее настройку.
Способов отключить ее множество, в том числе и указание в параметрах загружаемого ядра.
Один из самых надежных и проверенных - редактирование конфига /etc/selinux/config
Обычно после установки продуктов RH в нем есть такая строка:

  1. SELINUX=enforcing

Её нужно заменить на

  1. SELINUX=disabled

 


Переключение раскладки в LXDE


LXDE - отличная графическая оконная среда: легкая, быстрая, ничего лишнего. Однако в настройках текущей версии не предусмотрено цивилизованное переключение раскладки клавиатуры, пока это делается через редактирование пользовательского конфиг-файла .bashrc.

Пример, в котором английский, русский и украинский переключаются виндовс-клавишей "Menu", а индикация состояния дополнительно индицируется индикатором "Scroll Lock"

  1. setxkbmap -layout "us,ru,ua" -option "grp:menu_toggle,grp_led:scroll"

  1. setxkbmap -layout "us,ru,ua" -option "grp:rctrl_toggle,grp_led:scroll"

Если же поместить эту строку в конфиг ~/.xinitrc , то действие раскладки должно быть глобальным
(пока не проверялось).

 


NetHogs: аналог утилиты Top для сети


Утилита NetHogs является сетевым аналогом известной утилиты top только она анализирует не процессы, а сетевой трафик работающих программ и сетевых интерфейсов.
Запускается nethogs под рутом без параметров. Единицы отображаемых параметров можно менять клавишей "m".

 


ISPManager: когда исчезают "Возможности"

Есть такая панель управления веб-хостингом - ISPManager.
Частенько при ее использовании исчезают неизвестно куда "Возможности" из меню "Настройки сервера" (например, после перезагрузки хоста).
Чтобы их восстановить, нужно выполнить под рутом 3 команды:

  1. # yum clean all
  2. # yum makecache
  3. # /usr/local/ispmgr/sbin/pkgctl cache

и затем нажать кнопку "Обновить" ("Обновление списка установленный приложений").

 


VNC: работоспособный конфиг


Следует отметить, что за историю создания технологии удаленного доступа режиме в Линуксе программ, реализующий доступ в графическом режиме, развелось меряно-немеряно. Одни появлялись и умирали, другие раздваивались и конкурировали друг с другом. Ко всему прочему, названия программ то ли случайно, то ли специально выбирались похожими. что ещё больше усугубляло путаницу, например, TightVNC и TigerVNC

Мы будем рассматривать TigerVNC, который является продолжением TightVNC и входит в большинство современных дистрибутивов Linux.
Для работы VNC-сервера на нём должна быть установлена система X.
Для современных продуктов RedHat это xorg-x11-server-Xorg с соответствующими зависимостями.

Пример системного конфига /etc/sysconfig/vncservers для доступа к нему одного пользователя:

  1. VNCSERVERS="1:abdula"
  2. VNCSERVERARGS[1]="-geometry 1024x768"

Важное примечание!
Дефолтовые параметры строки с VNCSERVERARGS

# VNCSERVERARGS[1]="-geometry 800x600 -nolisten tcp -localhost"

мешают работе с VNC-севером - коннект выдает ошибку "Не могу соединиться с сервером".
Т.е. параметры т.е. -nolisten tcp -localhost нужно исключить.

Пример полученного пользовательского конфига VNC /home/abdula/.vnc/xstartup с запуском среды LXDE:

  1. #!/bin/bash
  2.  
  3. # Uncomment the following two lines for normal desktop:
  4. #unset SESSION_MANAGER
  5. #exec /etc/X11/xinit/xinitrc
  6.  
  7. [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
  8. [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
  9. xsetroot -solid grey
  10. vncconfig -iconic &
  11. x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
  12. window-manager &
  13. startlxde &

Если среда IceWM, то вместо startlxde & следует использовать icewm-session &.
Для XFCE v.4 последняя строка такая: startxfce4 &

Общая методика настройки VNC-сервера на удаленном компьютере:

1. Зайти пользователем, который будет использоваться в качестве удаленного, и задать для него пароль командой:
vncpassword

2. Зайти рутом и сконфигурировать конфиг /etc/sysconfig/vncservers (под рутом).

3. Настроить iptables для доступа к VNC-серверу, добавив в него строки:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5801 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT

4. Установить на автозапуск сервис vncserver

chkconfig --level 5 vncserver o

и запустить его либо перезагрузить компьютер.

5. Зайти на удаленный компьютер VNC-клиентом по адресу address:5901
либо браузером по http://address:5801

Отличительная особенность VNC-сервера: он создает "закрытую" сессию, которую можно видеть только с удаленного компьютера. Локально, т.е. с монитора, физического подключенного к удаленному компьютера, сессия будет скрыта (видно только приветственное окошко для логина).
При первоначальном удаленном входе в сесиию сразу попадаем на готовый рабочий стол с запущенными (если был настроен их автозапуск) приложениями.

Утилиты x11vnc, как и vino, напротив, позволяют доступ, который выглядит одинаково как локально, так и удаленно.
При первоначальном входе как локально, так и с клиентского компьютера видно только приветственное окошко для логина.
Порт для vino = 5900.

Целесообразно удалить приложение vino, которое может занимать эти же порты и вызывать конфликты.

Отличное HowTo по настройке VNC-сервера в CentOS: VNC ( Virtual Network Computing )
 


Wall: команда оповещения "Ховайся кто может!"


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

wall Who can hide - the server will reboot!

Результат работы команды wall:

  1. Broadcast message from abdula@1c-server.local (pts/0) (Fri May 13 00:52:44 2011)Who can hide - the server will reboot!

Выдаваться она может любым пользователем.

PS. Кириллицу, к сожалению, эта команда не выводит.

 


Директивы сокрытия сигнатуры сервера и Апача


Чтобы скрыть от браузеров пользователей наименование ОС и веб-сервера Apache, нужно в конфиг-файл
Апача /etc/httpd/conf/httpd.conf поместить две директивы:

  1. ServerSignature Off
  2. ServerTokens Prod

 


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

Всегда интересовал вопрос избавления неиспользуемых в системе пакетов. И если в Мандриве это предусмотрено штатно утилитой urpmi с соответствующим ключом, то для Федоры это было загадкой.
И вот недавно наткнулся на такую команду:

package-cleanup --orphans

По идее она должна была показать неиспользуемые в системе пакеты.
Но когда запустил ее, она выдала такой огромный список, что пол-системы надо будет отправить в корзину.
Странно, какими же критериями она руководствуется?...
 


Связь видеорежима, разрешения и объема памяти:

video=vesafb:mode=1024x768-32 vga=790

В следующей формулировке, режим=<разрешение>-<глубина цвета> vga=<разрешение буфера кадров> используется, где разрешение буфера кадров можно найти по следующей схеме:

+---------------------------------------------------------------------+
|      | 640x480 | 800x600 | 1024x768 | 1280x1024 |
+---------------------------------------------------------------------+
256 | 0x301=769 0x303=771 0x305=773 0x307=775
32K | 0x310=784 0x313=787 0x316=790 0x319=793
64K | 0x311=785 0x314=788 0x317=791 0x31A=794


Быстрый скан локальной сети


Чтобы быстро просканировать сеть класса "C", достаточно запустить утилиту nmap в следующем формате:

nmap 192.168.1.0/24

После нескольких секунд работы она выдаст примерно следующее:

  1. ...............................
  2. Nmap scan report for 192.168.1.10
  3. Host is up (0.00028s latency).
  4. Not shown: 997 filtered ports
  5. PORT      STATE SERVICE
  6. 21/tcp open  ftp
  7. 22/tcp    open  ssh
  8. 23/tcp open  telnet
  9. 80/tcp    open  http
  10. 10000/tcp open  snet-sensor-mgmt
  11. ...............................

 


Быстрая настройка VSFTP

1. Не знаю, с какого такого перепугу создатели сервера VSFTP в каждой версии в своем дефолтовом конфиге vsftpd.conf всякий раз упорно запрещают то, для чего он, собственно, и создан - доступ к нему до FTP.

Чтобы исправить ситуацию, достаточно раскомментировать строку #chroot_local_user=YES

Если необходимо запретить доступ анонимным пользователям, необходимо поменять аргумент в строке anonymous_enable=YES на NO

2. Для реализации пассивного режима FTP добавить в конец конфига /etc/vsftpd/vsftpd.conf строку

pasv_min_port=5000
pasv_max_port=5010

3. Для разрешения доступа к FTP-серверу извне по выбранным в его конфиге портам следует в конфиг файрвола /etc/sysconfig/iptables внести строки:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5000:5010 -j ACCEPT

 


Ограничение доступа к каталогам веб-сайтов по паролю с помощью .httaccess

1. Создать каталог для хеша пароля.
Обычно используется /var/www/etc/

2. Перейти в этот каталог.

3. Задать новый пароль для пользователя:

htpasswd -c .htpasswd user

или переопределить имеющийся пароль:

htpasswd .htpasswd user

Пример:

htpasswd -c .htpasswd alexandr

Эта команда сгенерирует хеш введенного вами пароля в текущей папке в виде файла примерно такого содержания:

alexandr:Fy5mBtYD5unRdK

4. Создать в веб-каталоге, который нужно закрыть от постороннего доступа, файл .htaccess следующего содержания:

  1. AuthType Basic
  2. AuthName "Please enter login and password:"
  3. AuthUserFile /var/www/etc/.htpasswd
  4. Require valid-user

При входе браузером по адресу данного каталога возникнет приглашение ввести логин и пароль к нему.

Поместив файл .htaccess в корень сайта, можно ограничить доступ к целому сайту.


Измерение скорости дисков

Для измерения скорости чтения/записи дисков можно использовать команду dd:

Примеры, в котором на исследуемый диск пишется и читается файл testfile размером 10 Гб:

dd if=/dev/zero of=testfile bs=4k count=2621440                                  
2621440+0 записей считано                                                                          
2621440+0 записей написано                                                                          
 скопировано 10737418240 байт (11 GB), 210,884 c, 50,9 MB/c

 dd if=testfile of=/dev/null bs=4k count=2621440                                  
2621440+0 записей считано                                                                          
2621440+0 записей написано                                                                          
 скопировано 10737418240 байт (11 GB), 56,8042 c, 189 MB/c

Команду dd нужно запускать на исследуемом диске в каталоге, доступном для записи.

После тестирования не забыть удалить полученный файл testfile.
 


Ваша оценка: Ничего Средняя оценка: 7.9 (14 votes)

В yum provides можно не ставить кавычки вокруг выражения - и так работает. Жаль, что для urpmi нет аналога

Кавычки для Юма лучше ставить всегда. Иначе, когда в выражении вам попадется пробел, вы поймете, для чего они нужны

RSS-материал