Screen — очень удобная программа, если вы часто работаете в консоли, подключившись к серверу по SSH. В таком случае screen позволяет держать в одной консоли несколько разных экранов, удобно переключаясь между ними.

Continue Reading

При работе с bash все вводимые команды сохраняются специальной утилитой history в файле ~/.bash_history. При вводе команды history, отображается последовательно пронумерованный список всех введённых вами команд. При помощи нехитрых манипуляций с конфигурационным файлом, можно фиксировать точную дату и время ввода каждой команды. Для этого необходимо отредактировать файл ~/.bashrc , вписав одну из следующих строк:

export HISTTIMEFORMAT='%h %d %H:%M:%S ' (стандартный вывод)

export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S ' (ДД.MM.ГГ)

export HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S ' (YYYY-MM-DD)

Теперь в списке history, напротив команд будет стоять дата и время их ввода.

Включить запись даты и времени в историю команд bash:

# echo 'export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "' >> ~/.bashrc

Пробел перед кавычкой нужен, что бы дата не сливалась с командой.

Утилита grep — это очень мощное средство для поиска и фильтрации текстовой информации. В этой статье показаны несколько примеров ее использования, которые позволят по достоинству оценить ее возможности.
Основная сфера применения grep – поиск слов или фраз в файлах и потоках вывода. Вы можете осуществить поиск, набрав в командной строке запрос и область поиска (файл).
Например, чтобы найти строку “needle” в файле hystack.txt используйте следующую команду:

$ grep needle haystack.txt

В результате grep отобразит все вхождения needle, которые он встретит в содержимом файла haystack.txt. Важно заметить, что в этом случае grep ищет именно набор символов, а не слово. Например, будут отображены строки, включающие слово “needless” и другие слова, в которых встречается последовательность “needle”.


Чтобы указать grep, что вы ищете именно слово, используйте ключ -w. Этот ключ ограничит область поиска только указанным словом. Под словом подразумевается запрос, ограниченный с обоих сторон любыми пробельными символами, знаками пунктуации или переносами строки.

$ grep -w needle haystack.txt

Не обязательно ограничивать область поиска только одним файлом, grep может выполнять поиск и по группе файлов, причем в результатах поиска будет указан файл, в котором обнаружено совпадение. Ключ -n добавит еще и номер строки, в которой обнаружено совпадение, а ключ -r позволит выполнить рекурсивный поиск. Это очень удобно при поиске среди файлов с исходными текстами программ.

$ grep -rnw function_name /home/www/dev/myprogram/

Имя файла будет указано перед каждым совпадением. Если вам необходимо скрыть имена файлов, воспользуйтесь ключом -h, напротив, если необходимы только имена файлов, то укажите ключ -l
В следующем примере мы выполним поиск URL-адресов в лог-файле IRC и покажем последние 10 совпадений.

$ grep -wo http://.* channel.log | tail

Параметр -o указывает grep, что следует выводить лишь совпадение с шаблоном, а не всю строку. Вывод grep при помощи pipe перенаправляем команде tail, которая по умолчанию выводит 10 последних строк.
Теперь мы подсчитаем количество сообщений, посланных в irc-канал определенными пользователями. Например, все сообщения, которые я послал из дома и с работы. Они отличаются по никнейму, дома я использую ник user_at_home, а на работе user_at_work.

$ grep -c "^user_at_(home|work)" channel.log

С параметром -c grep выводит лишь количество найденных совпадений, а не сами совпадения. Строка поиска заключена в кавычки потому, что в ней содержатся специальные символы, которые могут распознаны оболочкой как управляющие. Обратите внимание, что кавычки не входят в шаблон поиска. Обратный слэш "" служит для экранирования служебных символов.
Выполним поиск по сообщениям людей, которые любят “кричать” в канале. Под “криком” мы понимаем сообщения, написанные в blondy-style, одними ЗАГЛАВНЫМИ буквами. Чтобы исключить из поиска случайные попадания аббревиатур, будем искать слова из пяти и более символов:

$ grep -w "[A-Z]+{5,}" channel.log

За более детальным описанием можно обратиться к странице руководства man grep.
Еще несколько примеров:

# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

Отображает строки из файла /etc/passwd, в которых есть строка root.

# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
12:operator:x:11:0:operator:/root:/sbin/nologin

Отображаются, кроме того, номера строк, в которых есть искомая строка.

# grep -v bash /etc/passwd | grep -v nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
news:x:9:13:news:/var/spool/news:
mailnull:x:47:47::/var/spool/mqueue:/dev/null
xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false
rpc:x:32:32:Portmapper RPC user:/:/bin/false
nscd:x:28:28:NSCD Daemon:/:/bin/false
named:x:25:25:Named:/var/named:/bin/false
squid:x:23:23::/var/spool/squid:/dev/null
ldap:x:55:55:LDAP User:/var/lib/ldap:/bin/false
apache:x:48:48:Apache:/var/www:/bin/false

Проверяется, кто из пользователей не использует bash, исключая те аккаунты пользователей, у которых в качестве оболочки указан nologin.

# grep -c false /etc/passwd
7

Подсчитывает количество учетных записей, в которых в качестве командной оболочки указано /bin/false.

# grep -i games ~/.bash* | grep -v history

В этой команде отображаются строки из всех файлов домашнего каталога текущего пользователя, имена которых начинаются с ~/.bash, за исключением тех файлов, в именах которых есть строка history, с тем, чтобы исключить соответствия, имеющиеся в файле ~/.bash_history, в котором может быть указана одна и та же строка в верхнем или нижнем регистрах. Обратите внимание, что осуществляется поиск слова «games», вместо него можно подставить любое другое.
Команда grep и регулярные выражения

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

# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash

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

# grep :$ /etc/passwd
news:x:9:13:news:/var/spool/news:

Чтобы проверить, экспортируется ли в файле ~/.bashrc переменная PATH, сначала выберите строки с «export», а затем найдите строки, начинающиеся со строки «PATH»; в таком случае не будут отображаться MANPATH и другие возможные пути:

# grep export ~/.bashrc | grep 'PATH'
  export PATH="/bin:/usr/lib/mh:/lib:/usr/bin:/usr/local/bin:/usr/ucb:/usr/dbin:$PATH"

Символьные классы

Выражением в квадратных скобках является список символов, заключенных внутри символов [" и "]"". Оно соответствует любому одиночному символу, указанному в этом списке; если первый символ списка есть «^», то оно соответствует любому символу, который ОТСУТСВУЕТ в списке. Например, регулярное выражение [0123456789]"" соответствует любой одиночной цифре.

Внутри выражения в квадратных скобках можно указывать диапазон, состоящий из двух символов, разделенных дефисом. Тогда выражение соответствует любому одиночному, который согласно правилам сортировки попадает внутрь этих двух символов, включая и эти два символа; при этом учитывается последовательность упорядочивания и набор символов, указанные в локали. Например, когда по умолчанию указана локаль C, выражение [a-d]"" эквивалентно выражению [abcd]"". Есть много локалей, в которых сортировка выполняется в словарном порядке, и в этих локалях [a-d]"", как правило, не эквивалентно [abcd]"", в них, например, оно может быть эквивалентно выражению [aBbCcDd]"". Чтобы использовать традиционную интерпретацию выражения, указываемого в квадратных скобках, вы можете воспользоваться локалью C, установив для этого в переменной окружения LC_ALL значение «C».

Наконец, есть определенным образом поименованные символьные классы, которые указываются внутри выражений в квадратных скобках. Дополнительную информацию об этих предопределенных выражениях смотрите на страницах man или в документации команды grep.

# grep [yf] /etc/group
sys:x:3:root,bin,adm
tty:x:5:
mail:x:12:mail,postfix
ftp:x:50:
nobody:x:99:
floppy:x:19:
xfs:x:43:
nfsnobody:x:65534:
postfix:x:89:

В примере отображаются все строки, содержащие либо символ «y», либо символ «f».
Универсальные символы (метасимволы)

Используйте «.» для поиска соответствия любому одиночному символу. Если вы хотите получить список всех английских слов, взятых из словаря, содержащих пять символов, начинающихся с «c» и заканчивающихся «h» (удобно для решения кроссвордов):

# grep '<c...h>' /usr/share/dict/words
catch
clash
cloth
coach
couch
cough
crash
crush

Если вы хотите отобразить строки, в которых есть символ точки в виде литерала, то укажите в команде grep параметр -F. Символы "< " и «>» означают наличие пустой строки до и соответственно после указанных букв. Это значит, что слова в файл words должны быть записаны соответствующим образом. Если вы хотите найти все слова в тексте по указанному шаблоны без учета пустых строк опустите символы "< " и «>», для более точного поиска только слов используйте ключ -w.

Чтобы подобным образом найти слова, в которых между «c» и «h» может находиться любое число символов, используйте звездочку (*). В приведенном ниже примере из системного словаря выбираются все слова, начинающиеся с «c» и заканчивающиеся символом «h»:

# grep '<c.*h>' /usr/share/dict/words
caliph
cash
catch
cheesecloth
cheetah
--output omitted--

Если вы хотите найти в файле или в выходном потоке литеральный символ «звездочка», используйте для этого одинарные кавычки. Пользователь в приведенном ниже примере сначала пытается в файле /etc/profile найти «звездочку» без использования кавычек, в результате чего ничего не находится. Когда используются кавычки, в выходной поток выдается результат:

# grep * /etc/profile
# grep '*' /etc/profile
for i in /etc/profile.d/*.sh ; do

Пример скрипта на ping хоста:

Данная команда пингует указанный IP и возвращает 0, в случае успеха и не ноль в случае, если пинг не проходит с одним из перечисленных статусов.
В общем виде:

result=$(ping -c ${count} ${ip} | grep -icE ´unknown|expired|unreachable|time out|0 received´)

В частном виде:

ping -c 1 172.16.1.1 | grep -icE ´0 received´
1

Suhosin (кор. 수호신 — «ангел-хранитель») — патч для PHP с открытым исходным кодом, выпущенный под лицензией PHP, предназначенный для повышения защиты сервера от действий злоумышленника. Включён по умолчанию в состав PHP в некоторых дистрибутивах Linux, а также в Mac OS X Server. Используется на серверах проекта One Laptop Per Child, домашней странице Ubuntu и Википедии. Также в репозитории Ubuntu имеется пакет php5-suhosin, позволяющий включить дополнительные возможности, помимо базовых, которые у Ubuntu уже имеются в php5 и php5-fpm.

Вебсерверы подвержены атакам злоумышленников. Как решить эту проблему и обезапасить сайт. Можно просканировать сайт специальными програмами на предмет грубых ошибок в настройке безопасности сайта. А так же правильно настроить сервера, PHP и базы данных.
По возможности каждому виртуальному хосту должна быть включена опция open_basedir ограничивающая скриптам каждого конкретного сайта доступ только к папке администратора этого сайта. Скрипты не должны ходить дальше вашего каталога на сервере!

Патч PHP — Suhosin поможет избавиться от целого ряда проблем в приложениях и ядре PHP.
Разработчики Suhosin open sourse приложения ставят своей задачей защитить сервер от таких атак как: PHP Include, SQL Injection, Cross site scripting (XSS) и других атак направленных на веб-сервисы. Полный список возможностей приведен на сайте разработчика Suhosin: http://www.hardened-php.net/suhosin/a_feature_list.html.
Вот не полный список возможностей плагина Suhosin:

  • добавлены функции sha256 ( ) , sha256_file () и поддержка blowfish для всех платформ;
  • кодирование Cookies и данных сессии;
  • запрещение вставки URL, закачки файлов и доступа к произвольным файлам, верификация загруженных файлов через внешний скрипт, запрет загрузки — исполняемых файлов, удаление двоичных данных из загружаемого файла;
  • отключение функции eval (), запуск приложений с использованием eval () с применением белого и черного списков;
  • принудительная установка максимальной глубины рекурсии;
  • поддержка виртуальных узлов и каталогов, настраиваемых через черный и белый списки;
  • защита от прерывания HTTP-заголовка (HTTP Response Splitting);
  • защита глобальных переменных от ex t rac t и import_request_vars, а также от скриптов, манипулирующих memory_limit;
  • защита от длинных и неправильных идентификаторов сессии;
  • фильтрование ASCII-символов;
  • игнорирование переменных GET, POST, COOKIE с целым рядом параметров;
  • установка лимитов ряду переменных REQUEST.

Установка Suhosin на Ubuntu:

apt-get install php5-suhosin

После установки файл конфигурации suhosin.ini должен располагаться в /etc/php5/conf.d.

Настройка Suhosin

Все настройки Suhosin производятся в файле php.ini или в /etc/php5/conf.d/suhosin.ini в зависимости от дистрибутива ОС.

Отключить логи:

suhosin.log.syslog = off

Отключить suhosin через .htaccess:

php_flag suhosin.simulation 1

И так давайте подробно рассмотрим работу плагина для настройки SMTP рассылки в WordPress:

Configure SMTP

Плагин Configure SMTP используется для настройки SMTP рассылки в WordPress, в том числе поддержки отправки электронной почты через SSL/TLS (например, Gmail). Практически заставляет WordPress отправлять почту не через php-функцию mail() и не  через sendmail хостингового сервера, а через smtp какого-либо другого сервера.

Для начала работы следует скачать плагин с авторской площадки Configure SMTP. Затем по накатанной, установить плагин к себе на блог в папку с плагинами ...wp-content/plugins,  активировать его через «меню администратора Плагины» в WordPress и перейти к не хитрым настройкам, через админ панель SMTP, которая появится в админке после активации.
Настроек плагин содержит не очень много и вы без труда сможете со всем разобраться
Теперь давайте разберем по пунктам, что да как настраивать.

Send e-mail via GMail ? — Если желаете использовать службу Gmail для отправки почты, отмечаете галочкой и параметры Gmail выставятся автоматом, вам останется только ввести свое имя пользователя и пароль. В случае же использования другого сервера, прописываем параметры smtp своего почтового сервера и соответственно отмечать первый пункт не надо.

SMTP host — По умолчанию стоит «localhost» , если у вас не работает следовательно прописываете свой, например для Yandex — почты это будет smtp.yandex.ru

SMTP port — Номер порта, как правило это 465

Secure connection prefix — Выбор префикса для безопасных соединений SMTP через SSL или TLS

Use SMTPAuth? — Если Аутентификация установлена то необходимо предоставить имя пользователя SMTP и пароль, что и следует сделать в следующих пунктах.

SMTP username — Имя пользователя SMTP ( ваш почтовый ящик )

SMTP password — Просто пароль к вашей почте и все.

Wordwrap length — Задаете, если уж больно приспичит, число символов сообщения при переносе слов.

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

Sender e-mail — Наборы адресов электронной почты для всех исходящих сообщений. Оставьте пустым, чтобы использовать по умолчанию WordPress.

Sender name — Имя или список имен, от кого будут отправлены сообщения. Оставьте пустым, чтобы использовать по умолчанию WordPress.

Все, больше никаких настроек у плагина нет, он полностью готов к работе, осталось только сохранить все изменения,  нажав на кнопку «Save Changes»
В плагине присутствует очень полезная фишка, сразу после настройки, вам предоставляется возможность протестировать отправку электронной почты и удостовериться в правильности настроек вашего блога на работу с почтой. Для этого, в самом низу панели управления плагином,  нажатием на кнопку «Send test e-mail» отправляется тестовое сообщение на ваш e-mail.
Проверяете почтовый ящик и любуетесь доставленной корреспонденцией в полном объеме.