Установка и настройка SSH на сервере с Ubuntu

Тогда я думал: «Глупый линукс, кому нужны все эти права! Только лишние телодвижения». Сейчас мой взгляд на эту ОС изменился. Я поддался очарованию движения Open Source и возможности настроить в системе вообще все!

Зачем использовать sudo без ввода пароля?

Объясню, зачем это нужно и почему удобно лично для меня. У меня есть локальный сервер Apach2, на котором я частенько провожу всякие эксперименты, тренирую php, учу Zend Framework и многое другое. В общем, издеваюсь над ним. Как порядочный пользователь, я включаю его, когда он мне нужен и выключаю, когда наиграюсь. Это делается с помощью двух команд.

sudo /opt/lampp/lampp start sudo /opt/lampp/lampp stop

Ламп-сервер лежит в директории /opt, которая защищена от вторжения рядовых пользователей, поэтому без применения sudo не обойтись. Проблема в том, что мне надоедает каждый раз вводить пароль для такой элементарной операции. Кроме того,  я не буду против, если кто-нибудь подойдет и включит apach без моего разрешения, пожалуйста. Можете даже выключить. Поэтому ставить пароль на эти команды вовсе необязательно. Решение нашлось мгновенно и в нем нет ничего сложного, главное сделать все внимательно и сосредоточено. В прочем, все, что касается настройки Linux нужно делать медленно и вдумчиво, утверждаю основываясь на собственном горьком опыте. Поэтому ловим максимальную концентрацию и приступаем к настройке.

Подводные камни

Знание про sudo играет с новичками злую шутку. Каждый раз, когда они видят "странные" ошибки, то не пытаются разобраться, а пробуют запустить команду с sudo без параметров, то есть просто выполнить её от суперпользователя. Часто такой подход срабатывает, но он создаёт ещё больше проблем, чем решает.

Запуск команды, которая создаёт файлы и директории из-под sudo, приводит к тому, что владельцем этих файлов становится пользователь root. Фактически все последующие обращения к этому файлу без sudo начнут выдавать ошибку об отсутствии прав доступа. Причём даже необязательно работать с этими файлами напрямую: множество программ так или иначе обращаются к файловой системе для чтения конфигурационных и других файлов.

Правильный выход из ситуации в каждом случае свой. В некоторых случаях sudo это то, что нужно, но иногда требуется изменить права (об этом в следующем уроке), а иногда и переустановить какую-нибудь часть системы.

Наиболее общее правило может быть таким: всё, что лежит в личных директориях пользователя, должно принадлежать пользователю, а не суперпользователю. Всё, что требует дополнительных прав, так как находится в системных путях (вне домашней директории пользователя), скорее должно запускаться с sudo (но это необязательно).

~$ ls -la # Всё содержимое домашней директории принадлежит одному пользователю. # Сама директория пользователя принадлежит ему же, # а родительская директория принадлежит суперпользователю drwxr-xr-x+ 117 mokevnin staff 3744 Feb 19 15:55 . drwxr-xr-x 5 root admin 160 Oct 12 19:15 .. -r——— 1 mokevnin staff 7 Nov 21 2017 .CFUserTextEncoding -rw-r—r—@ 1 mokevnin staff 22532 Feb 8 00:04 .DS_Store

Дополнительные материалы

  1. sudo vs su

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы > Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.

Об обучении на Хекслете

  • Статья «Как учиться и справляться с негативными мыслями»
  • Статья «Ловушки обучения»
  • Статья «Сложные простые задачи по программированию»
  • Урок «Как эффективно учиться на Хекслете»
  • Вебинар «Как самостоятельно учиться»

Команды Linux для управления файлами и папками

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

У Линукса много команд, предусмотренных на все случаи

Обратите внимание! Для освоения операционной системы Linux не обязательно анализировать записи на форумах или покупать учебники. Достаточно воспользоваться справочником кодов и опций терминала Линукс.

Команды Linux для управления файлами и папками

Как управлять директориями

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

Важно! Программы и инструменты доступны во всех версиях терминала Linux. Их не нужно загружать и устанавливать отдельно от ОС.

«Ls» для просмотра папок и их содержимого

Примеры команд:

  • «ls» — код, с помощью которого можно просматривать активные папки и их содержимое. Разработчики Linux добавили забавную фишку — нередко при быстрой печати пользователи ошибаются и вводят «-sl» вместо «-ls». В этом случае в терминале появится поезд «Steam Locomotive»;
  • «cat» показывает компоненты необходимого файла. Опция «-n» производит их нумерацию;
  • «cd» применяется для перехода из одной папки в другую. При нулевом вводе отправляет пользователя в корневой каталог;
  • «pwd» определяет активную директорию;
  • «mkdir» позволяет создать новую папку в активной директории;
  • «file» показывает свойства необходимого файла;
  • «cp» отвечает за копирование. С помощью этой команды можно копировать файлы и папки. Имеет опции -«r» (рекурсивное копирование) и «-a» (сохранение изменений);
  • «mv» применяется для переименовывания файлов и их дальнейшего перемещения;
  • «rm» отвечает за удаление компонентов. По умолчанию работает в режиме безвозвратного удаления. Включение опции «-r» позволяет отправить файл в корзину;
  • «ln» используется для создания ссылки на файл;
  • «chmod» подходит для систем с несколькими пользователями. Команда изменяет права допуска к файлу;
  • «chown» меняет владельца. Этой командой может воспользоваться только суперпользователь;
  • «find» и «locate» — команды, которые отвечают за поиск указанных файлов и программ. Их отличие состоит в том, что «locate» ищет в Updated (специальной утилите, которая производит сканирование операционной системы, обновляет список файлов Linux и баз данных). Для каждой команды существует гибкая система опций;
  • с помощью «help» Linux покажет всю информацию о встроенных командах;
  • «dd» — создание и преобразование копий компонентов системы;
  • «dir» для Linux позволяет посмотреть скрытые файлы и папки;
  • «mounth» включает систему;
  • «umounth» отключает систему;
  • «df» производит анализ жёстких дисков, выдавая отчёт о проделанной работе. Команда имеет большое количество опций, позволяющих структурировать и комбинировать полученные данные.
Команды Linux для управления файлами и папками

Важно! Две последние команды может использовать только суперпользователь.

Читайте также:  Iptables просмотр правил ubuntu. Защита от разных видов флуда

Команда «Nano» позволяет войти в упрощённый режим консоли с подсказками внизу экрана

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

Управление правами пользователя

Использование sudo позволяет грамотно разграничивать права доступа пользователя. Если нужен доступ к одному сервису, нет необходимости давать права root пользователю.

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

Создадим файл с именем пользователя

sudo nano /etc/sudoers.d/petya

Добавим в него строку

petya ALL=NOPASSWD: /sbin/shutdown -h now

После перечисленных действий пользователь petya имеет права sudo на выключение системы без ввода пароля.

Данный метод хорош тем что вы четко указываете пользователю на что именно он будет иметь высокие привилегии. Ибо давать всем права root плохая идея. В одном файле перечисляются все необходимые права через запятую.

Давайте разрешим пользователю выключение системы, а также установку обновлений в системе на основе Debian (Ubuntu например). Файл с правами пользователя petya будет иметь следующий вид:

petya ALL=NOPASSWD: /sbin/shutdown -h now, /usr/bin/apt-get update, /usr/bin/apt-get upgrade

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

Тем же методом можно дать права группе. Например дадим права группе users

%users ALL=NOPASSWD: /sbin/shutdown -h now, /usr/bin/apt-get update, /usr/bin/apt-get upgrade

%users – вначале идет знак % далее название группы, в данном случае users

Почитать про то как использовать sudo без терминала можно тут

Всем спасибо за внимание и до новых встреч.

Поделиться:

Как настроить стандартный firewall

В Ubuntu есть встроенный фаервол Netfilter, который может управляться как непосредственно вызовом утилиты iptables с параметрами так и специальной утилитой UFW (Uncomplicated Firewall). Мы разберем оба варианта.

Iptables на нашем демо-стенде уже установлен, но если в вашем дистрибутиве его нет — можно воспользоваться пакетным менеджером apt:

# sudo apt-get install iptables

При работе с iptables можно настроить три типа правил: INPUT — для входящих соединений, OUTPUT — для исходящих и forward для транзитных (используется для маршрутизаторов). Для сервера актуальны первые два.

При обработке пакетов возможно выполнение следующих действий: ACCEPT — разрешить прием пакета, DROP — удалить пакет, REJECT — отклонить пакет и отправил уведомление об отклонении отправителю, LOG — записать пакет в лог и QUEUE — отправить пакет приложению.

Читайте также:  Удаление пользователя в Unix, Linux

В iptables доступны следующие функции управления:

  • A — добавить правило в цепочку;
  • С — проверить все правила;
  • D — удалить правило;
  • I — вставить правило с нужным номером;
  • L — вывести все правила в текущей цепочке;
  • S — вывести все правила;
  • F — очистить все правила;
  • N — создать цепочку;
  • X — удалить цепочку;
  • P — установить действие по умолчанию.

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

# sudo iptables -L

Теперь попробуем заблокировать все пакеты от узла :

# sudo iptables -A INPUT -s -j DROP

При помощи комбинаций перечисленных выше опций можно настроить любую требуемую логику работы с сетевыми пакетами.

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

# sudo apt install ufw -y

После установки можно начинать работать с правилами. Разрешим все исходящие соединения и запретим все входящие:

Как настроить стандартный firewall

# sudo ufw default deny incoming # sudo ufw default allow outgoing

В выводе увидим:

В примерах выше мы меняли порт для доступа по SSH на 55555. Создадим правило для доступа по этому порту:

# sudo ufw allow 55555

В выводе получим:

Теперь включим сам фаервол.

# sudo ufw enable

Обратите внимание на предупреждение системы об отключении SSH-подключений, если вдруг вы забыли добавить соответствующее правило. Но мы его добавили, поэтому смело включаем фаервол.

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

# sudo ufw status verbose

В выводе увидим:

Дополнительно можно настроить доступ с определенного IP-адреса (или диапазона адресов), на определенный порт.

# sudo ufw allow from to any port 55555

При помощи правил UFW можно также применять правила к определенным сетевым интерфейсам сервера.

Использование традиционного root аккаунта и команды su

Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.

Ubuntu и младше

Для входа под root достаточно задать ему пароль:

Sudo passwd root

Потом на экране входа нажмите Другой… и введите логин (root) и пароль, который вы задали.

Ubuntu и старше

Начиная с версии был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.

1. Устанавливаем root пароль. Введите в терминал:

Sudo passwd root

2. Включаем пункт «Введите логин». Введите в терминал:

Gksu gedit /etc/lightdm/

В конце файла допишите:

Greeter-show-manual-login=true

3. Перезагружаем lightdm. Введите в терминал:

Sudo service lightdm restart

Все, на экране входа появится пункт «Логин». В поле логин вводим «root», в поле пароль — пароль, который мы задали на первом этапе.

Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:

Sudo passwd -l root