воскресенье, 11 декабря 2016 г.

Как сменить пароль в Linux

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

Основы

В Linux есть несколько утилит с помощью которых может быть выполнена смена пароля linux. В этой статье мы будем рассматривать только способы с помощью терминала, с графическими способами я думаю вы и так без труда разберетесь, к тому же они не дают нужной нам гибкости.
Список пользователей в Linux хранится в файле /etc/passwd, вы можете без труда открыть его и посмотреть, их пароли выделены в отдельный файл - /etc/shadow. Этот файл можно открыть только с правами суперпользователя, и более того, пароли здесь хранятся в зашифрованном виде, поэтому узнать пароль linux не получиться, а поменять вручную их будет сложно.
В большинстве случаев смена пароля выполняется с помощью утилиты passwd. Это очень мощная утилита, она позволяет не только менять пароль, но и управлять сроком его жизни. У нее такой синтаксис:
$ passwd опции пользователь
Рассмотрим опции, чтобы лучше ориентироваться в использовании утилиты:
  • -d - удалить пароль пользователя, после этого он не сможет войти
  • -e - сделать пароль устаревшим
  • -i - через сколько дней после того, как пароль устарел отключить аккаунт если пользователь не сменил пароль
  • -l - запретить пользователю входить в систему
  • -n - минимальное количество дней между сменами пароля
  • -S - отобразить информацию об аккаунте
  • -u - отменяет действие параметра -l
  • -x - максимальное количество дней, пока пароль можно использовать.
  • -w - количество дней, после которых нужно предупреждать пользователя, о том, что надо сменить пароль.
Возможно, сейчас все выглядит очень непонятно, но на примерах станет проще. Мы рассмотрим зачем и в каких случаях нужно использовать все эти опции, чтобы сменить пароль в Linux. Переходим к практике.

Как сменить пароль пользователя

Вы можете сменить свой пароль когда захотите. Для этого вам не нужно особых прав суперпользователя, только знать свой текущий пароль. Просто откройте терминал и выполните утилиту password без параметров:
$ passwd
passwd
Дальше необходимо ввести новый пароль и готово, теперь ваш пароль изменен. Он шифруется с помощью необратимого шифрования и сохраняется в файле /etc/shadow Но заметьте, что вы не можете использовать здесь любой пароль. Система Linux заботится о том, чтобы пользователи выбирали достаточно сложные пароли. Если пароль будет очень коротким или будет содержать только цифры вы не сможете его установить.
Общие требования для пароля такие: должен содержать от 6 до 8 символов, при чем один или несколько из них должны относиться как минимум к двум из таких множеств:
  • Буквы нижнего регистра
  • Буквы верхнего регистра
  • Цифры от нуля до девяти
  • Знаки препинания и знак _
Теперь рассмотрим как изменить пароль Linux для другого пользователя.

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

Со своим паролем все понятно, но если вы захотите поменять пароль для другого пользователя, то все не так просто. Для этого вам нужны права суперпользователя. А во всем остальном все так же:
$ sudo passwd user

Здесь user - это пользователь, для которого нужна смена пароля Linux. Требования для пароля такие же, вы не сможете установить слишком простой пароль.
Вы можете удалить пароль Linux для пользователя, тогда он не сможет войти в систему:
$ sudo passwd -d user

Как поменять пароль группы

Наверное вы видели в своей системе файл /etc/gshadow. Этот файл эквивалентен /etc/shadow, только содержат пароли для групп. Вы не можете войти от имени группы, но зато зная ее пароль, можете получить доступ к предоставляемым ею функциям в отдельной командной оболочке с помощью команды newgrp.
Для установки пароля на группу используется утилита очень похожая на passwd - gpasswd. Естественно, нам нужны права суперпользователя. Например:
$ sudo gpasswd disk
passwd1
Теперь попробуем получить полномочия группы:
passwd2
После ввода пароля мы временно оказываемся в этой группе и можем работать с теми файлами, к которым разрешено доступ этой группе. Чтобы удалить пароль linux из группы используется опция -r:
$ sudo gpasswd -r disk

Как заставить пользователя поменять пароль

Безопасность сервера, это одна из самых важных вещей. Часто причиной проблем с безопасностью становятся сами пользователи, которые недостаточно часто меняют пароли или делают их слишком простыми. Если вы администратор, у вас есть возможность заставить пользователей выполнять смену пароля время от времени, а также автоматически отсылать им предупреждения о том что пора сменить пароль пользователя linux.
Все это позволяет сделать утилита passwd. Сначала давайте рассмотрим как посмотреть информацию о пароле в passwd. Для этого используется опция -S:
$ passwd -S user
passwd3
  • Первое поле - имя пользователя
  • Второе поле показывает одно из значений: P - пароль установлен, L - пользователь заблокирован, NP - пароля нет.
  • 07/21/2016 - дата последнего изменения пароля.
  • 0 - минимальное время до смены пароля
  • 99999 - максимальное время действия пароля
  • 7 - за сколько дней нужно предупреждать об истечении срока действия пароля
  • -1 - через сколько дней пароль нужно деактивировать.
Например через тридцать дней после смены, пароль пользователя станет устаревшим:
$ sudo passwd -x 30 test
passwd4
За три дня до того, как пароль устареет предупредим пользователя, что пароль нужно сменить:
$ sudo passwd -w 3 test
Если он этого не сделает в течении пяти дней, аккаунт нужно отключить:
$ sudo passwd -i 3 test
Пароль можно менять не чаще, чем раз в 10 дней:
$ sudo passwd -n 10 test
Смотрим теперь, что у нас получилось:
$ sudo passwd -S test
passwd5
Все правильно.

Как поменять пароль root

Изменить пароль Linux для root очень просто, точно так же, как и для любого другого пользователя. Только нужно иметь права суперпользователя. Вот так это будет выглядеть:
$ sudo passwd root
passwd6
Все работает. Также таким способом можно задать пароль root в Ubuntu.

Как вручную поменять пароль

Операционная система Linux не была бы Linux, если бы мы не имели возможность настроить пароль вручную безо всяких утилит. Как я уже говорил, пароли хранятся в файле /etc/shadow. И хранятся они там в зашифрованном виде. Расшифровать пароль невозможно.
Когда система сохраняет пароль, она выполняет шифрование по определенному алгоритму и сохраняет уже зашифрованный результат, а когда пользователю нужно войти в систему, она просто берет его пароль, опять же шифрует и сверяет с тем, что хранится в /etc/shadow. Если совпадает - пользователь авторизован.
Даже таким способом сменить пароль пользователя linux не так уж сложно. И так, сначала нам нужно получить зашифрованный пароль. Это можно сделать несколькими способами, например с помощью openssl:
$ openssl passwd -1 -salt xyz yourpass
Замените xyz на любую случайную комбинацию символов, чем больше, тем лучше. yourpass, это ваш новый пароль.
Скопируйте полученный результат в буфер обмена, затем откройте файл /etc/shadow и найдите там нужного пользователя. Я хочу сменить пароль linux для test:
$ sudo vi /etc/shadow
passwd8
Синтаксис этого файла такой:
имя_пользователя:пароль:::::
Следующее поле указывает последнее изменение пароля в виде количества дней, прошедших с первого января 1970. Остальные поля нас не интересуют, да и вы с ними очень просто разберетесь просто сопоставив данные.
Теперь замените пароль, на полученный выше и сохраненный в буфер обмена. Сохраните файл и можете пробовать войти под новым паролем:
$ su test
passwd7
Все работает. Как я уже говорил, есть еще несколько алгоритмов шифрования, с помощью которых вы можете получить пароль, вот они:
$ makepasswd --clearfrom=- --crypt-md5 <<< YourPass
$ mkpasswd -m sha-512 -S salt -s <<< YourPass
$ perl -e 'print crypt("YourPass", "salt"),"\n"'
$ openssl passwd -crypt -salt XRYourPass
Во всех этих примерах salt - это случайная строка для увеличения надежности шифрования, а YourPass - ваш пароль. Что делать с полученным данными вы уже знаете.

Основные конфигурационные файлы Linux

Операционная система Linux в отличие от Windows не имеет общего реестра для хранения настроек системы, все настройки хранятся в конфигурационных файлах. Большинство этих файлов размещено в папке /etc/.
Настройки большинства системных и сторонних программ находятся в этих файлах, это могут быть настройки графического сервера, менеджера входа, системных служб, веб-сервера, системы инициализации.
Только часть файлов конфигурации находятся в других папках, например, файлы настройки рабочего окружения в домашнем каталоге пользователя. Новичкам очень важно понимать, за что отвечают те или иные конфигурационные файлы, чтобы при необходимости очень быстро сориентироваться. В этой статье мы рассмотрим основные конфигурационные файлы Linux, их расположение и предназначение.

Конфигурационные файлы Linux

На самом деле в самой системы Linux конфигурационных файлов нет. Поскольку операционная система - это всего лишь набор программ и ядро, то все эти файлы были созданы определенными программами и читаются ими же для настройки поведения. Большинство файлов, которые мы привыкли считать стандартными, относятся к системе инициализации или к другим системным утилитам.
Как я уже сказал, большинство файлов размещено в /etc. Название этой папки расшифровывается как "et cetera", что с латинского означает "и другие" или "и так далее". Сначала давайте посмотрим содержимое каталога /etc Linux:
$ ls -l /etc/
Здесь достаточно много различных файлов. Дальше мы рассмотрим назначение многих из них. Список отсортирован по алфавиту.

1. /etc/adjtime

Этот конфигурационный файл отвечает за настройку формата системного времени и читается службой systemd-timedated. Время может быть представлено в двух вариантах: LOCAL - время текущего часового пояса и UTC - время по Гринвичу. Вы можете вручную менять значение или воспользоваться утилитой timedatectl.

2. /etc/bash.bashrc

Этот файл принадлежит командной оболочке bash. Это не совсем конфигурационный файл - а скрипт, его содержимое выполняется при запуске каждого экземпляра bash для настройки оболочки. Точно так же выполняется содержимое файла ~/.bashrc для каждого пользователя.

3. /etc/crontab

Crontab - файл настройки планировщика cron. Здесь записываются все задания, которые должен выполнить планировщик, а также время и периодичность. Этот файл не принято редактировать напрямую. Для этого используется утилита crontab -e.

4. /etc/environment

Здесь содержатся переменные окружения, которые будут загружены для каждого сеанса терминала, независимо от того запущен он на локальной машине или по ssh. Файл читается скриптами Bash во время инициализации оболочки.

5. /etc/fstab

Наверное, все уже знают файл /etc/fstab. Здесь выполняется настройка монтирования файловых систем во время загрузки. В современных системах он читается systemd и все записи на ходу транслируются в юнит-файлы, с помощью которых уже выполняется монтирование. Смотрите также: автоматическое монтирование fstab.

6. /etc/group

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

7. /etc/hostname

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

8. /etc/hosts

Файл /etc/hosts позволяет задавать псевдонимы для различных сетевых узлов. Таким образом, компьютер не обращается к DNS для получения IP домена, а берет его из hosts. Это позволяет, например, заблокировать доступ к нежелательным сайтам просто перенаправив их на localhost или же получить доступ к сайту по ip, которому еще не присвоен домен.

9. /etc/hosts.allow и /etc/hosts.deny

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

10. /etc/issue и /etc/issue.net

Баннер, который будет выводиться при входе в командную оболочку локально или по SSH. Обычно там выводится версия ядра и дистрибутива Linux, но вы можете заменить эту информацию по своему усмотрению.

11. /etc/ld.so.conf

В этом файле содержатся пути к папкам, в которых компоновщик linux ld.so будет искать динамические библиотеки во время запуска программ. Папки /lib64, /lib, /usr/lib64 и /usr/lib будут проверены автоматически.

12. /etc/localtime

Это символическая ссылка, которая указывает на файл часового пояса в папке /usr/share/zoneinfo/. Редактировать файл не нужно, а для изменения настроек нужно создать символическую ссылку на другую временную зону.

13. /etc/login.defs

Файл /etc/login.defs отвечает за настройку поведения утилиты управления пользователями и параметры входа в систему. Вы можете настроить какой минимальный и максимальный id нужно выдавать, что делать с папкой пользователя при удалении и многое другое, количество попыток входа и таймаут, а также многое другое.

14. /etc/mime.types

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

15. /etc/modprobe.d/

Папка /etc/modprobe содержит конфигурационные файлы со списками модулей ядра, которые не нужно загружать при старте системы, псевдонимами для существующих модулей, а также позволяет задавать настройки для модулей.

16. /etc/modules-load.d/

Папка /etc/modules-load.d/ содержит файлы со списками модулей, которые должны быть загружены при запуске системы. Имя файла не важно, но он должен иметь расширение .conf.

17. /etc/nsswitch.conf

Этот файл задает настройки порядка разрешения имен в системе для всех программ, написанных на Си или С++. Например, нужно сначала просматривать локальную сеть и систему, или сразу же отправлять запрос к DNS.

18. /etc/ntp.conf

Файл ntp.conf отвечает за настройку службы синхронизации времени - ntpd. В файле указаны адреса ntp серверов, с которых служба будет получать время, а также общие настройки.

19. /etc/os-release

Отображает очень подробную информацию об установленном дистрибутиве:

20. /etc/passwd

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

21. /etc/profile

Файл /etc/profile, точно так же как и /etc/environment загружается и выполняется при запуске любой командной оболочки в системе. Но в отличие от environment, это скрипт, а значит, он может задавать не только переменные, но и выполнять различные команды для инициализации оболочки.

22. /etc/resolv.conf

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

23. /etc/sddm.conf

Это конфигурационный файл Linux для настройки менеджера входа sddm, для других менеджеров входа будут свои файлы настройки. Здесь можно изменить максимальный и минимальный ID пользователя, который может войти в систему, например, чтобы разрешить авторизацию root, изменить тему, добавить вход без пароля и многое другое.

24. /etc/shadow

Раньше пароли пользователя содержались в файле /etc/passwd, но поскольку к нему мог получить доступ любой пользователь, это было небезопасно, несмотря на то, что пароли зашифрованы. Поэтому все пароли были вынесены в /etc/shadow. Вы можете изменить пароль пользователя.

25. /etc/sudoers

/etc/sudoers - это файл настройки прав доступа к утилите sudo. Эта утилита позволяет выполнять команды от имени других пользователей, в том числе от имени суперпользователя. Но использовать ее могут только те пользователи, которые прописаны в этом файле.

26. /etc/sysctl.conf

Этот файл отвечает за настройку параметров ядра во время выполнения. Тут вы можете задать все параметры из подсистемы /sys/ и они будут сохранены после перезагрузки.

27. /etc/vconsole.conf

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

28. /boot/grub/grub.cfg

Этот конфигурационный файл Linux находится не в /etc из-за своего особого предназначения. Здесь содержатся все настройки загрузчика, пункты меню и другие параметры, поэтому он должен быть доступен еще до того как была подключена корневая файловая система.

суббота, 10 декабря 2016 г.

Программы для системного администратора 2016

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

1. Vim

15024468956_d1929ccc64_o

Хороший текстовый редактор - это один из основных инструментов системного администратора, поскольку во многих ситуациях приходится вносить правки в конфигурационные файлы и важно делать это очень быстро. Редактору Vim недавно исполнилось 25 лет, и он все еще очень активно развивается.
Он выгодно отличается от всех других редакторов тем, что позволяет выполнять редактирование текста и перемещение по нему очень быстро, не отрывая пальцы от основной клавиатуры. Для этого в редакторе реализовано два режима - командный режим, с помощью которого вы можете перемещаться по тексту с помощью буквенных клавиш, а также выполнять различные команды. Второй режим - редактирование, в котором программа превращается в обычный редактор.
В ноябре вышла восьмая версия Vim, в которой программа получила много улучшений. например, поддержку GTK3 и асинхронный ввод/вывод для плагинов. Этот редактор может работать не только в Linux, но и в Windows и MacOS.

2. Htop

htop-2-0
Мониторинг нагрузки на операционную систему - это тоже очень важная задача, которая стает довольно часто перед системными администраторами. Например, если нужно очень срочно выяснить какая программа перегружает процессор или занимает всю доступную оперативную память. Утилита htop показывает в реальном времени список всех запущенных процессов с возможностью сортировки по нужному параметру, использованию процессора, памяти.
Кроме того, с помощью утилиты можно посмотреть количество потоков, ядро процессора, на котором запущенна программа и многое другое. Это одна из самых важных утилит в списке программы системного администратора. Программа работает только в Linux системах.

3. Git

git-logo1
Контроль версий имеет очень важное значение не только в программировании. Для различных скриптов, конфигурационных и обычных текстовых файлов тоже может быть очень полезным восстановить предыдущую версию.
Изначально система Git была разработана Линусом Торвальдстом для управления разработкой ядра Linux. Но на сегодняшний день это полноценная платформа, которой пользуется очень большое количество проектов с открытым исходным кодом. Но она также может быть полезной в сохранении старых версий ваших конфигурационных файлов.
Последняя на данный момент версия - это 2.10, в которой есть много полезных функций. Например, с помощью команды git diff вы можете узнать какие именно строки были изменены и в каких файлах, удаленные строки будут зачеркнуты. Программа может использоваться в Windows и в Linux.

4. SystemRescueCD

systemrescue
Компьютеры не всегда работают как нужно и имеют обыкновение ломаться. Отличная практика для системных администраторов - это иметь компакт диск или USB диск с набором инструментов, которые помогут восстановить систему или хотя бы данные с проблемных компьютеров.
SystemRescueCD - это активно развивающийся набор утилит для системного администратора на все случаи жизни. Это загрузочный дистрибутив Linux, основанный на Gentoo, который содержит различные инструменты для проверки аппаратного обеспечения, разметки диска, восстановления данных, проверки компьютера на вирусы, настройки сети и многое другое.
В 2016 году было выпущено версии 2.8 и 2.9. В этих версиях образ получил обновления различных компонентов, включая добавление поддержки инструментов для работы с btrfs.

5. Clonezilla

ocs-08-restoredisk
Иногда лучше не восстанавливать систему с нуля, а иметь резервную копию всей машины, чтобы иметь возможность вернуть систему к жизни за несколько минут. Clonezilla - это де-факто стандарт для создания резервных копий и развертывания образов систем на диск. Вы можете создавать резервные копии как для отдельных разделов, так и для всего диска целиком.
Программа может использоваться из текущей системы или в виде загрузочного образа с псевдографическим интерфейсом - Clonezilla Live. После того как у вас будет готовая копия, вы можете очень просто восстановить после неудачной конфигурации или обновления.
В последней версии была добавлена поддержка обнаружения зашифрованных с помощью Windows BitLocker томов, улучшена поддержка EFI, а также обновлено все программное обеспечение до последних версий по Debian.

6. Docker

docker_lead
Контейнеры - это изолированные окружения, которые позволяют запускать несколько систем на одном ядре Linux. Все системы изолированны одна от другой, а также от основной системы. Инструмент настройки контейнеров Docker очень сильно посодействовал развитию контейнеров в 2016 году.
Docker это открытая платформа, которая позволяет буквально в несколько команд развернуть контейнеры с нужными дистрибутивами Linux и выполнять в них необходимое программное обеспечение. С помощью docker вы можете упаковать отдельное приложение со всеми его зависимостями, а затем запускать в любом дистрибутиве, где поддерживается Docker.
Вы можете создавать свои программы и обмениваться ими с другими пользователями. Docker позволяет компаниям выбирать систему, в которой будет работать программное обеспечение, не ограничивая разработчиков в инструментах и языках программирования.
В последних версиях Docker была добавлена возможность проверки состояния контейнера и автоматического восстановления в случае проблем, а также теперь контейнеры Docker могут работать не только в Linux, но и в Windows.

7. Wireshark

screenshotfrom2012-09-2314-57-09
Wireshark - это инструмент для анализа, проходящего через компьютер, трафика и сохранения сетевых пакетов. Такая задача может возникнуть при анализе работоспособности сети, сетевых сервисов или веб-приложений. Программа поддерживает огромное количество протоколов, может даже расшифровывать HTTPS трафик при наличии сертификата. Вы можете фильтровать весь трафик по нужным параметрам, сортировать пакеты, просматривать их содержимое и полную информацию, а также многое другое.
Новая версия программы Wireshark 2.0 была выпущена в 2015 году, с тех пор она активно развивается уже в этой ветке. Ее интерфейс был переписан на Qt5, а также сделан более интуитивно понятным.

8. TightVNC

scrtightvnc
TightVNC позволяет получить доступ к графическому интерфейсу на удаленном компьютере. С помощью этой программы вы можете управлять компьютером удаленно, фактически, не находясь перед ним. Обычно администраторы управляют серверами Linux через SSH, однако, некоторые пользователи предпочитают использовать графический интерфейс для решения таких задач.
У программы есть возможность шифровать трафик VNC, таким образом делая его безопасным, точно так же, как и ssh. TightVNC может работать как в Linux, так и в Windows. Затем вы сможете получить доступ к вашему устройству с любого места, где есть интернет.

9. Zenmap

figure-61_reference
Zenmap - это графический интерфейс для популярного сетевого сканера - nmap. С помощью этого инструмента вы можете очень быстро найти все подключенные к сети узлы, проверить топологию сети, а также посмотреть список запущенных служб на каждом из компьютеров.
Также с помощью программы вы можете найти потенциально опасные места в настройке серверов, многими администраторами она используется для проверки доступности узлов или даже измерения времени аптайма.

10. Filezilla

filezilla-3-19
Наш список утилиты для системного администратора подходят к завершению. Во время администрирования серверов достаточно часто приходится передавать файлы. Обычно, эта задача выполняется по протоколу FTP. Filezilla - это один из лучших и самых популярных клиентов для передачи и загрузки файлов по FTP. Интерфейс программы разделен на две панели, в одной из них вы видите локальный компьютер, а в другой удаленную файловую систему FTP сервера.
Интерфейс программы интуитивно понятен, и ее можно использовать в Windows, Linux и MacOS.