Архив рубрики: Linux

Ваш путеводитель по одной из самых популярных и влиятельных операционных систем в мире. От базовых команд и установки дистрибутивов до глубокого изучения ядра и сетевых технологий — здесь вы найдете статьи и руководства на самые разные темы, связанные с Linux. Независимо от вашего уровня подготовки, здесь найдется что-то интересное и полезное.

Почему Apache не запускается

Многие новички, которые пытаются настроить свой домашний веб-сервер на основе Apache часто сталкиваются с ошибкой, что Apache не запускается. Благо сейчас в Ubuntu веб-сервер будет правильно работать по умолчанию и запустится, если вы не будете менять настройки, но раньше и в других дистрибутивах приходилось настраивать различные параметры и возникали ошибки.

В этой небольшой статье мы рассмотрим почему Apache не работает, что может стать причиной этой проблемы и как ее решить. Инструкция подойдет не только для Ubuntu, но и для других Linux дистрибутивов.

Читать далее Почему Apache не запускается

Команда chmod Linux

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

Эти права применяются для каждого файла, а поскольку все в системе Linux, даже устройства, считаются файлами, то, получается что эти права применимы ко всему. Мы более подробно рассматривали как работают права доступа к файлам Linux в отдельной статье, а в этой, я хочу остановиться на команде chmod, которая используется для установки прав.
Читать далее Команда chmod Linux

Обновление системы CentOS 7

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

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

Обычное обновление CentOS

Обновление CentOS 7 немного проще, чем у Debian подобных систем, например, Ubuntu. Здесь вам достаточно набрать одну команду, а пакетный менеджер уже сам обновит списки репозиториев и сформирует список пакетов, которые необходимо обновить. Сначала смотрим текущую версию вашей системы:

cat /etc/redhat-release

На производственных серверах перед обновлением рекомендуется выполнить полное резервное копирование системы чтобы в случае непредвиденной ситуации иметь возможность все быстро восстановить. Сделайте резервную копию директорий /etc, /var, /opt. Для систем, запущенных в виртуальных окружениях желательно сделать снапшот. Дальше выполните такую команду для обновления:

yum update

Далее вам необходимо подтвердить обновление, для этого ознакомьтесь со списком пакетов и нажмите "y":

Утилита yum имеет опцию -y, которая указывает, что вы автоматически согласны с изменениями, но ее использовать не рекомендуется. После завершения обновления необходимо перезагрузить сервер:

reboot

Теперь можно снова посмотреть версию:

cat /etc/redhat-release

Как видите, мы очень просто обновились до нового релиза CentOS 7.4 без каких-либо дополнительных настроек и команд. Это очень просто.

Автоматическое обновление CentOS

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

Для того чтобы все работало нам нужно установить дополнительный пакет - yum-cron. Для этого наберите такую команду:

yum install yum-cron

Дальше нам нужно его настроить с помощью файла конфигурации /etc/yum/yum-cron.conf:

Первая опция, которую нам нужно настроить - это update_cmd - команда, которой будут выполняться обновления. Доступно несколько вариантов:

  • default - полное обновление;
  • security - только обновление безопасности;
  • security-severity:Critical - только критические обновления безопасности;
  • minimal - минимальное обновление с исправлениями ошибок;
  • minimal-security - исправления ошибок и обновления безопасности;
  • minimal-security-severity:Critical - исправления ошибок и критические обновления.

В моем примере я буду использовать полное обновление. Рассмотрим другие настройки:

  • update_messages - выводить сообщения про доступные обновления;
  • download_updates - загружать обновления автоматически;
  • apply_updates - устанавливать обновления автоматически;

В секции emitters вы можете настроить возможные способы отправки сообщений о доступном обновлении, например, в stdout или по электронной почте.

Опция emit_via указывает каким образом нужно отправлять сообщения. По умолчанию установлено stdout, но вы можете заменить этот параметр на email. Дальше нужно настроить параметры электронной почты в секции email:

  • email_from - отправитель;
  • email_to - куда отправлять;
  • email_host - имя хоста, на котором запущен почтовый сервер.

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

systemctl start yum-cron

Также добавьте ее в автозагрузку:

systemctl enable yum-cron

Теперь обновление системы CentOS 7 будет выполняться автоматически.

Обновление Centos до тестового релиза

Не так давно версия CentOS 7.4 была доступна только в виде тестового релиза и вы не могли обновиться до нее стандартным способом. Перед тем, как выпустить финальный релиз, разработчики создают репозиторий Continuous Release и в нем выполняется разработка, исправление ошибок и другие действия. Не рекомендуется использовать этот репозиторий на производственных серверах, иначе он может все сломать. Но вы можете обновить свою домашнюю систему для тестирования. Для этого выполните команду:

yum upgrade --enablerepo=cr

После этого до обычного обновления системы будет подключен тестовый репозиторий.

Выводы

В этой статье мы рассмотрели как выполняется обновление CentOS через консоль. Как видите, это не так сложно, как кажется на первый взгляд. Вам достаточно выполнить всего лишь одну команду. Если у вас остались вопросы, спрашивайте в комментариях!

Ошибка grub не видит Windows 10

Многие новички и опытные пользователи Linux держат также установленной на своем компьютере операционную систему Windows, например, последней, десятой версии. Новичкам это нужно чтобы иметь запасную операционную систему, к которой они смогут вернуться, если их Linux сломается. А для опытных пользователей важно программное обеспечение, которое не поддерживается ни в Linux, ни даже с помощью эмулятора Wine, а таких программ достаточно много.

Но временами случается такая ситуация, что загрузчик Grub не распознает установленную Windows и не отображает ее в списке систем для загрузки. В этой статье мы рассмотрим почему возникает ошибка grub не видит Windows 10 и как ее решить.

Ошибка Grub не видит Windows 10

Причин такой ошибки может быть несколько, начиная от того, что система установлена на другом жестком диске, и заканчивая неизвестными глюками пакета os-prober, который и занимается определением операционных систем в Linux. Также, если у вас есть несколько версий Windows на компьютере, то программа может видеть только одну из них.

Сначала можно попытаться сделать наш с Windows раздел более видимым для программы. Для этого примонтируйте его в какую-либо папку. Например, в /mnt/:

sudo mount -t ntfs-3g -o ro /dev/sda1

Я предполагаю, что система Windows установлена на разделе, который определяется в Linux, как /dev/sda1. Дальше запустите утилиту os-prober:

sudo os-prober

Если программа обнаружит Windows, то вам останется обновить конфигурацию загрузчика Grub:

sudo update-grub

Или:

sudo grub2-mkconfig -o /boot/grub/grub.cfg

Если же этот способ не сработает, а он, скорее всего, не сработает, то вам останется только вручную добавить пункт меню для Windows. Это не самое простое, но зато эффективное решение. Сначала нам нужно узнать UUID раздела диска, на который установлена Windows, например, /dev/sda1:

blkid /dev/sda1

Затем откройте файл /etc/grub.d/40_custom и добавьте туда такой код:

menuentry "Windows 10" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set B4A6AEB7A6AE7A0E
chainloader +1
}

Если кратко, то здесь мы устанавливаем в качестве корня первый раздел первого диска, а затем указываем загрузчику, что нужно найти раздел с нужным нам UUID. Затем передаем управление загрузчику на этом разделе с помощью chainloader. Дальше осталось обновить конфигурацию Grub:

sudo update-grub

Мы использовали такой метод потому что теперь настройка не собьется после обновления ядра или другого процесса, инициализирующего обновление конфигурации. Потому что если бы мы добавили эти строки в /boot/grub/grub.cfg, то они были бы перезаписаны если не при первом, то при одном из следующих обновлений системы.

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

Выводы

В этой небольшой статье мы разобрали что делать когда у вас возникнет ошибка grub не видит windows 10 и какими способами ее можно исправить. На самом деле решение очень простое, если вы не используете систему с UEFI. В варианте с EFI загрузка Windows управляется не Grub, а загрузчиком UEFI, но при использовании Linux рекомендуется отключить эту технологию.

Настройка виртуальных хостов Apache

Apache - это один из самых популярных веб-серверов для размещения сайтов на хостингах и VPS, а также для создания тестовых окружений. Если на вашем сервере один сайт, то все довольно просто, все запросы, поступающие к серверу, отправляется этот единственный сайт. А что если сайтов несколько? Как Apache будет понимать кому адресован запрос?

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

Читать далее Настройка виртуальных хостов Apache

Как пользоваться Burp Suite

Burp Suite - это мощный набор инструментов для тестирования безопасности веб-приложений и сайтов. С помощью этого инструмента можно протестировать буквально все, что вы захотите. Программу могут использовать не только профессионалы, но и новички с минимальным количеством усилий для ее освоения. Программа написана на Java, поэтому может работать на различных платформах, например, Windows, Linux или Mac.

Интерфейс Burp Suite интуитивно понятный, а среди инструментов есть прокси, паук, сканер, декодер, репитер, анализатор последовательностей и многое другое. В этой статье мы рассмотрим как пользоваться Burp Suite, основные возможности программы, а также как ее установить и настроить.

Читать далее Как пользоваться Burp Suite

Проброс портов VirtualBox

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

Для решения этой задачи можно пойти двумя путями. Мы можем пробросить необходимый порт виртуальной машины в основную систему или же выдать виртуальной машине отдельный IP адрес, что позволит обращаться к любым ее портам и использовать любые сетевые возможности. В этой небольшой статье мы рассмотрим проброс портов virtualbox двумя способами. Начнем с более простого.
Читать далее Проброс портов VirtualBox

Установка FreeBSD 11

Многие Linux пользователи уже слышали про FreeBSD, эта система использует ядро BSD, похожее на Linux, поскольку оба ядра основаны на Unix и поддерживают одни и те же стандарты POSIX. Это такая же свободная, бесплатная операционная система с открытым исходным кодом, разработанная для обеспечения максимальной безопасности и гибкости. Чаще всего она используется на серверах. Основное отличие от Linux в том, что разработкой ядра и программного обеспечения занимается одна команда разработчиков.

FreeBSD поддерживает множество различных процессорных конфигураций, от серверов до микрокомпьютеров, таких как Raspberry Pi. Как и Linux, система поставляется с множеством программ, которые можно очень просто установить с помощью портов. Всего доступно более 20 000 пакетов. В этой инструкции мы рассмотрим как выполняется установка FreeBSD 11 последней, на данный момент, версии на компьютер amd64. Будем устанавливать версию с интерфейсом командной строки, она лучше всего подходит для серверов.

Читать далее Установка FreeBSD 11

Bash скрипты Linux

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

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

Полезные Bash скрипты Linux

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

Команды

Первый скрипт сортирует содержимое текущей папки по размеру:

du -a -d 1 -h | sort -h

Но в большинстве случаев это не эффективно, вам намного удобнее будет использовать утилиту ncdu. Вам нужно быстро создать пароль и вы не хотите устанавливать pwgen, можете использовать такую команду:

< /dev/urandom tr -dc '[:punct:][:alnum:]' | head -c${1:-16};echo;

Эта команда запускает простейший HTTP сервер в текущей папке. Очень удобно для отладки чего либо:

python -m SimpleHTTPServer

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

echo "ls -l" | at midnight

Скрипт передает звук от вашего микрофона на другой компьютер по ssh. Качество будет очень плохим, но тем не менее это работает:

dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

 

Хотите скачать весь сайт на компьютер для того, чтобы потом иметь возможность просматривать его оффлайн? Для этого достаточно утилиты wget:

wget --random-wait -r -p -e robots=off -U mozilla https://kovalets.net

Будут загружены все файлы сайта, включая изображения, игнорированы правила из файла robots.txt и в качестве агента пользователя будет сообщаться Mozilla Firefox. А такой командой можно реализовать самый простой таймер:

time read (ctrl-d для остановки)

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

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Такой командой вы можете выводить символы с небольшой задержкой, как в фильмах:

echo "Взлом пентагона.......... ОШИБКА ОШИБКА" | pv -qL 10

Записать видео с экрана в терминале linux:

ffmpeg -f x11grab -r 25 -s 800x600 -i :0.0 /tmp/outputFile.mpg

Запустит команду через указанный промежуток времени, в данном случае, через 5 секунд:

timeout 5s команда

Удаляет все пустые папки:

find . -type d -empty -delete

Это были самые популярные и полезные команды с точки зрения ресурса commandlinefu.com. А теперь нам нужно рассмотреть сниппеты bash, которые вы можете использовать в своих проектах.

Сниппеты Bash

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

START=$(date +%s)

А там, где нужно прекратить:

END=$(date +%s)
DIFF=$(( $END - $START ))
DIFF=$(( $DIFF / 60 ))

Переменная DIFF будет содержать время выполнения в минутах. Теперь вы можете вывести ее с помощью echo.

Скрипты довольно часто требуют ввода параметров для правильной работы. Этот сниппет позволяет достаточно просто разбирать переданные параметры:

while [ "$1" != "" ];
do
case $1 in
-s ) shift SERVER=$1 ;;
-d ) shift DATE=$1 ;;
--paramter|p ) shift PARAMETER=$1;;
-h|help ) # выведите сообщение с подсказкой
* ) # другие параметры

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

parameter_test.sh -s kovalets -d 20170916 --parameter Subscribe!

Переменной SERVER будет присвоено значение kovalets, DATA - 20170916 и PARAMETER - Subscribe. Как это работает? Если кратко, то мы всегда используем первый параметр, и используем команду shift, чтобы сдвинуть стек с параметрами влево, когда текущий первый параметр больше не нужен.

Дальше, если вам нужно убедиться, что важные параметры заданы, можно просто проверить на существование эти переменные:

if [ -z $SERVER ] || [ -z $DATE ]; then
echo "Необходимо указать сервер и дату";
exit 1;
fi;

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

changedir(){
DIR_NAME=$1

 

# Проверяем существует ли папка
[ -d "$DIR_NAME" ] || {
echo Dir: $DIR_NAME does not exist
exit 1
}

# Проверяем доступ на чтение
[ -r "$DIR_NAME" ] || {
echo Dir: $DIR_NAME not readable
exit 2
}
# Проверяем доступ на выполнение
[ -x "$DIR_NAME" ] || {
echo Dir: cannot cd to $DIR_NAME
exit 3
}
# Проверяем доступ на запись
[ -w "$DIR_NAME" ] || {
echo Dir: $DIR_NAME not writeable
exit 4
}
cd $DIR_NAME
echo "Present directory $DIR_NAME"
}

 

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

changedir /путь/к/папке

Иногда может понадобится узнать результат работы предыдущей команды. Для этого используйте переменную $?:

if [ $? -ne 0 ]; then
echo "Команда завершена неудачно";
fi;

Для записи логов с текущим временем и датой создайте такую функцию:

log() {
echo [`date +%Y-%m-%d\ %H:%M:%S`] $*
}

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

check_process() {
echo "Checking if process $1 exists..."
[ "$1" = "" ]  && return 0
PROCESS_NUM=$(ps -ef | grep "$1" | grep -v "grep" | wc -l)
if [ $PROCESS_NUM -ge 1 ]; then
return 1
else
return 0
fi
}

Теперь вернемся к нашему примеру с MySQL и используем только что написанную функцию:

check_process mysql;
CHECK_RET=$?;
if [ $CHECK_RET -ne 0 ];
# если процесс запущен
else
# если процесс не запущен
fi;

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

key1=value1
key2=value2

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

. configfile

Значения будут загружены в переменные $key1 и $key2. Если нужно перебрать все файлы в текущей папке или файлы, по определенному шаблону, используйте такой цикл:

#!/bin/bash
PATH=/path/to/dir/FILES=*.sql
for f in $PATH$FILES
do
# Что-то делаем с каждым файлом $f
done

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

sendEmail() {
echo $content | mail -s "$subject" $email_list exit;
}

Выводы

В этой статье мы рассмотрели полезные bash скрипты linux, которые вы можете использовать при работе с системой. Сначала мы разобрали несколько полезных комбинированных команд, а затем несколько полезных снипетов. Если вы хотите более детально разобраться в создании скриптов, смотрите статью написание скриптов на Bash.

https://youtu.be/Vy5iq8GBlxw

Операционные системы Linux для смартфонов

Android использует ядро Linux, но его не причисляют к дистрибутивам Linux. А всё потому, что дистрибутив – это не только ядро, но ещё и службы и утилиты GNU. Android их не имеет, вместо этого используются свои библиотеки, вроде Android Runtime (ART). Поэтому давайте рассмотрим операционные системы, использующие Linux, не зависящие от библиотек Google.

Недавняя история с Huawei показала с какой лёгкостью можно использовать IT-компании в большой политике. С открытым программным обеспечением такой трюк провернуть не получится, а это значит, что свободные операционные системы могут стать основой для смартфонов будущего. Давайте узнаем, какие мобильные операционные системы разрабатываются на сегодняшний день.

Читать далее Операционные системы Linux для смартфонов