Bash Aliases

Для добавления своих сокращений для команд в Linux необходимо добавить их в файл ~/.bash_aliases в следующем формате:

alias lh='ls -alh'
alias yt='youtube-dl'
Время запоминания пароля для sudo

По умолчанию, при первом вызове команды с sudo будет запрошен пароль. После чего все последующие вызовы sudo в течении 15 минут запрашивать пароль не будут.

Для того чтобы увеличить время запоминания пароля, необходимо отредактировать файл /etc/sudoers. Рекомендуется это делать через следующую команду (откроет текстовый редактор по умолчанию):

sudo visudo -f /etc/sudoers

Если мы хотим запоминать пароль на 5 часов (300 минут), то нужно добавить следующую строчку:

Defaults        timestamp_timeout=300
Создание ключа для доступа по ssh

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

ssh-keygen

Будет создано 2 ключа, по дефолту это ~/.ssh/id_rsa (приватный) и ~/.ssh/id_rsa.pub (публичный). Скопируйте содержимое публичного ключа и добавьте его в файл ~/.ssh/authorized_keys на удаленном сервере.

Получение SSL-сертификата от Let's Encrypt

С декабря 2015 года появилась возможность получать сертификаты бесплатно и в автоматическом режиме. Для этого сначала переходим на сайт certbot и устанавливаем бота как указано в инструкции для вашей платформы.

Попытка получить сертификаты через плагин для nginx не увенчалась успехом, так что я воспользовался другим вариантом - webroot. Для него необходимо разрешить доступ к статическим файлам в директории .well-known.
В nginx это можно сделать, к примеру, так:

location ^~ /.well-known {
    try_files $uri =404;
}

После чего запускаем команду на получение. К примеру, для доменов alhames.ru и www.alhames.ru, ссылающихся на директорию /var/www/alhames.ru/public, она будет выглядеть так:

certbot certonly --webroot -w /var/www/alhames.ru/public -d alhames.ru -d www.alhames.ru

По результату выполнения команды будут написаны пути для публичного fullchain.pem и приватного privkey.pem ключей, которые необходимо добавить в конфигурацию веб-сервера.

Ссылки на файлы и папки в Linux
# Создаем директорию для тестов и переходим в нее
mkdir /tmp/tests && cd /tmp/tests

# Создаем файл `src` и записываем в него "abc"
echo "abc" > src

# Создаем абсолютную символическую ссылку `link1` на файл `src`
ln -s /tmp/tests/src /tmp/tests/link1

# Создаем относительную символическую ссылку `link2` на файл `src`
ln -s src link2

# Создаем жесткую ссылку `link3` на файл `src`
ln src link3

( Читать дальше... )

Создание бекапов MySQL

Команда для создания бекапов должна выглядеть примерно так:

mysqldump -u $backup_user -p $backup_pwd --all-databases | gzip > "$backup_dir/db-$backup_date.sql.gz"

Где:

  • $backup_user - имя пользователя mysql, от имени которого будут делаться бекапы.
  • $backup_pwd - пароль пользователя mysql.
  • $backup_dir - папка, в которую будут сохраняться бекапы.
  • $backup_date - дата создания бекапа. Генерируется из date +%Y-%m-%d.
Настройка cron

Для запуска скриптов по расписанию необходимо отредактировать файл /etc/crontab.
Параметры задачи разделяются пробелом и имеют следующую последовательность:

  • Минута (0 - 59)
  • Час (0 - 23)
  • День месяца (1 - 31)
  • Месяц (1 - 12 или jan,feb,mar,apr...)
  • День недели (0 - 6, где воскрксенье = 0, или sun,mon,tue,wed,thu,fri,sat)
  • Имя пользователя
  • Команда

( Читать дальше... )

Как изменить ssh-порт

Открываем на редактирование файл /etc/ssh/sshd_config:

nano /etc/ssh/sshd_config

Находим строку #port 22, убираем # и заменяем 22 на любой свободный порт. Лучше всего использовать диапазон от 2000 до 7000.
Список свободных портов можно посмотреть на wikipedia.org.
А еще 2222 тоже лучше не использовать. :)

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

netstat -tupln | grep LISTEN

После чего перезапускаем ssh и конектимся по новому порту:

systemctl restart sshd

Особо это не защитит, но зато избавит от сообщения аля

There were 181693 failed login attempts since the last successful login.