Прием и отправка почты из командной строки

Подключение и настройка принтеров в Linux

Прежде всего, подключение и настройка заключается в настройке аппаратных средств. То есть необходимо убедиться, что принтер физически соединен с компьютером  и убедиться в исправности принтера и соединительных проводов. Проще всего настроить печать в Linux через принтер который совместим с Linux. Лучший признак совместимости с Linux — это наличие поддержки языка PostScript в принтере. Иногда, производители любят заявлять о поддержке PostScript ложно. Под словом «Ложно» необходимо понимать то, что поддержка PostScript реализована не в самом принтере, а в драйверах, поставляемых к принтеру, которые скорее всего рассчитаны на ОС Windows. Примеров можно привести кучу: принтеры компании Canon серии LBP, модели 810, 1120, принтеры компании HP серии LJ 10xx. Чтобы убедиться в поддержке принтера Linux, можно сходить сюда: http://www.linuxfoundation.org/collaborate/workgroups/openprinting/database/databaseintro. На данном сайте можно так же скачать файлы PPD для вашего принтера.

Для подключения принтеров существует несколько интерфейсов, таких как: USB, Ethernet, LPT и COM (последний безбожно устарел). Данным интерфейсам соответствуют устройства LPT — /dev/lp*, COM — /dev/ttyS* (вместо звездочек, естественно — цифра, обозначающая номер порта, к которому подключено устройство), для взаимодействия с USB используется дерево каталогов /proc/bus/usb, для Ethernet, естественно — IP.

Прежде чем настроить службы печати в Linux, необходимо убедиться, что соединение с принтером действительно установлено. Наверное, лучше всего это проверить из операционной системы windows, если она у вас установлена 2ой системой. Если нет такой возможности, то давайте попробуем обнаружить наш принетр средствами Linux. Если принтер подключен к LPT, либо COM, то можно выполнить команду для LPT: cat /etc/fstab > | /dev/lp0 или для com: cat /etc/fstab > | /dev/ttyS0. При этом, на устройстве в лучшем случае должно напечататься содержимое файла, в худшем — мигнуть индикаторы состояния. Если используется порт USB, то можно проверить подключение устройства с помощью команды lsusb, вывод которой должен содержать маркировку принтера. Для Ethetnet соединения, думаю достаточно проверить доступность IP принтера командой ping.

Установка DWM

$ sudo dnf install dwm #[Fedora/CentOS/RHEL]
$ sudo apt install dwm #[Ubuntu/Debian]
$ sudo pacman -S dwm #

3. i3 Window Manager

Window Manager i3 — это ручной оконный тайлер, написанный на языке программирования C. Он имеет различные настройки организации окон для изменения элементов в соответствии с вашим стилем. Пользователям понравится тот факт, что его можно легко настроить с помощью простого текстового файла.

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

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

Примеры использования командной строки для email-отправки

1. Отправка письма с вложением

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

а) для CentOS / Red Hat:

echo ‘Attachment’ | mail -s ‘Subject attachment message’ -a /var/log/maillog [email protected]

б) для Ubuntu:

echo ‘Attachment’ | mail -s ‘Subject attachment message’ -a /var/log/maillog -a /var/log/maillog2 [email protected]

… или:

echo ‘Attachment’ | mail -s ‘Subject attachment message’ -A /var/log/maillog -A /var/log/maillog2 [email protected]

* где /var/log/maillog и /var/log/maillog2 — файлы, которые будут прикреплены к письму

Обратите внимание, что обе команды отличаются по регистру опции a и A — все зависит от версии и сборки Linux (в каких-то нужно использовать маленькую, в каких-то — большую). Также обратите внимание, что в примере для Ubuntu мы отправим 2 файла — для этого просто добавляем к команде еще одну опцию прикрепления файла

2. Несколько получателей

Для отправки письма нескольким получателям, просто перечисляем их через запятую:

echo «Test text» | mail -s «Test title» [email protected],[email protected]

* в данном примере мы отправил письмо на ящики [email protected] и [email protected].

3. Отправка с копией

Отправить копию на адрес [email protected]:

echo «Test copy» | mail -s «Test copy title» [email protected] -c [email protected]

Отправить скрытую копию на адрес [email protected]:

echo «Test hidden copy» | mail -s «Test hidden copy title» [email protected] -b [email protected]

4. Указать отправителя

В CentOS / Red Hat:

echo «Test text» | mail -s «Test title» -r [email protected] [email protected]

В Debian / Ubuntu:

echo «Test text» | mail -s «Test title» [email protected] -aFrom:[email protected]

5. Отправка через другой SMTP сервер

а) Для Ubuntu / Debian:

echo «Test text» | mail -s «Test title» -a «Smtp: smtp.mail.ru:25» -a «From: [email protected]» -a «Return-path: [email protected]» [email protected]

б) Для CentOS / Red Hat:

echo «Test text» | mail -s «Test title» -S smtp=»smtp.mail.ru:25″ [email protected]

Однако, если сторонний почтовый сервер работает по шифрованному каналу и требует аутентификацию, необходимо ввести следующее:

echo «Test text» | mail -v -s «Test title» -S smtp=»smtp.dmosk.ru:587″ -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user=»[email protected]» -S smtp-auth-password=»password» -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S [email protected] [email protected]

* где smtp.dmosk.ru — сервер smtp; 587 — порт для подключения к серверу отправки; smtp-use-starttls указывает на использование шифрования через TLS; smtp-auth=login задает аутентификацию с использованием логина и пароля; smtp-auth-user и smtp-auth-password — соответственно логин и пароль; ssl-verify=ignore отключает проверку подлинности сертификата безопасности; nss-config-dir указывает на каталог с базами nss; from задает поле FROM

Как работают сокеты?

Сокеты просто предоставляют фактическое оборудование для перемещения данных. Сокеты на основе TCP называются потоковыми сокетами, куда все данные будут поступать по порядку. Сокеты на основе UDP — это сокеты для дейтаграмм, для которых порядок (или даже доставка) не гарантируется. Существуют также необработанные (raw) сокеты, которые не имеют каких-либо ограничений и используются для реализации различных протоколов и утилит, которые должны проверять низкоуровневый сетевой трафик, например Wireshark.

Сокеты обычно по-прежнему используют TCP или UDP, поскольку они не являются чем-то особенным, кроме причудливого канала внутри ядра. TCP и UDP — это транспортные протоколы, которые определяют, как данные передаются с места на место, но не заботятся о том, что это за данные. TCP и UDP обеспечивают платформу для большинства других протоколов, таких как FTP, SMTP и RDP, которые работают на более высоких уровнях.

Приложение может использовать несколько иную реализацию TCP; потоковые сокеты используют протокол SOCK_STREAM, который TCP также использует для транспорта почти всё время, и хотя они в основном взаимозаменяемы, технически они немного отличаются. Хотя это низкоуровневый материал и на самом деле это не то, о чем вам придётся беспокоиться, просто знайте, что большая часть трафика, отправляемого через сокеты домена UNIX, основана на TCP или UDP или, по крайней мере, очень похожа на трафик этих транспортных протоколов, и TCP отправляется через сокеты домена UNIX быстрее, чем TCP через сетевые интерфейсы, такие как порты.

Конфигурация screen

Конфигурируется screen с помощью файла ~/.screenrc, в вашем домашнем каталоге. Например, можно написать туда:

caption always "%{= 45}%{+b w}Screen: %n | %h %=%t %c"
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

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

Также при запуске Screen по-умолчанию выполняются команды из файла /etc/screenrc и файла .screenrc из домашнего каталога пользователя. Многие команды которые можно использовать в файлах конфигурации были рассмотрены в таблицах выше в поле «Текстовая команда». Ниже представлен пример конфигурации Screen из файла .screenrc:

# Отключить вывод лицензионной информации при старте Screen
startup_message off

# Открыть оболочку для работы
chdir
screen -t Work

# Открыть оболочку для управления конфигурацией
chdir /etc
screen -t Configuration

# Открыть оболочку для просмотра логов
chdir /var/log
screen -t Logs
# Выбрать первое окошко после старта
select 0

Этот достаточно простой файл конфигурации открывает три окна с именами Work, Configuration, Logs, соответственно в личном каталоге пользователя, в каталоге/etc и каталоге /var/log. После запуска на экране будет находиться первое окно с именем Work. На рисунке 1 представлен пример работы Screen с этим файлом конфигурации.

Диспетчер окон vs среда рабочего стола

Каждый дистрибутив Linux поставляется со своим окружением рабочего стола. По умолчанию Fedora поставляется со средой рабочего стола GNOME, но предоставляет KDE Plasma, Xfce, LXQT, Cinnamon или MATE. Среда рабочего стола включает в себя окно, значки, панели инструментов, каталоги, виджеты экрана и обои. Диспетчер окон является компонентом среды рабочего стола и вместе с другими библиотеками и приложениями дает пользователям лучшее взаимодействие между человеком и компьютером.

Linux использует систему X Window (или X11) в качестве оконной системы по умолчанию. Он обеспечивает базовую структуру для среды графического интерфейса пользователя, требуемую различными приложениями на основе графического интерфейса пользователя для работы на устройстве отображения и взаимодействия с мышью и клавиатурой. Однако система X11 не предлагает много возможностей для организации окон приложений на рабочем столе и управления ими. Это потому, что X 11 не требует пользовательского интерфейса. В результате визуальный стиль сред на основе X сильно различается, и разные приложения могут представлять другие интерфейсы.

Здесь вступает в действие оконный менеджер. Он может позволить вам управлять внешним видом и поведением окон приложений на экране вашего компьютера или внешних дисплеях. По сути, вы можете контролировать его размещение и, соответственно, внешний вид.

1. Awesome WM

Awesome WM — это оконный менеджер с открытым исходным кодом, написанный на языке программирования Lua. Проект начался как ответвление DWM (Dynamic Window Manager) и превратился в полноценный оконный менеджер Linux. Он отличается простым управлением окнами и относительно быстрым.

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

Отправка писем из скриптов bash/shell

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

#!/bin/bash
du -sh | mail -s "disk usage report" [email protected]

Откройте новый файл, вставьте в него приведенные выше строки, сохраните и запустите. Вы получите письмо, содержащее вывод команды «du -sh».
И последняя хитрость в письмах из командной сроки — добавление вложений к письмам, отправляемым из скриптов. Предположим, вам необходимо сделать резервную копию директории с конфигурационными файлами, заархивировать ее и отправить в качестве вложения с помощью mutt:

#!/bin/bash
tar -zcf /home/user/backup.tar.gz /home/user/files_to_backup
echo "Archived configuration files" | mutt -a /home/user/backup.tar.gz -s "backup data" [email protected]

Команда echo в начале третьей строки добавляет текст «Archived configuration files» в тело письма.

Установка screen

Для установки на Ubuntu нужно выполнить команду

$ sudo apt-get install screen

После этого нужно запустить screen:

$ screen

После запуска вы увидите либо приглашение командной строки, либо «экран приветствия», нажав SPACE или ENTER в котором, вы так же попадете в shell. При этом все команды будут запущены уже «внутри» screen’а.

Если нужно слушать log-файл постоянно и выводить их на экран. Создадим новую консоль screen так:

screen -d -m -S tail-log tail -f /var/log/nginx/error.log

Для того, чтобы выйти из screen’а (выйти, а не отсоединиться) достаточно выйти из всех открытых в нем оболочек, либо же, нажать комбинацию клавиш Ctrl+A , и ответить «y» на вопрос «действительно ли вы хотите выйти».

Отсоединиться от текущего скрина, не закрывая и не завершая сессии, можно комбинацией Ctrl+A потом d.

DISPLAY

Чтобы начать работу с графческой средой, X-клиенты должны каким-то образом доставить свой запрос X-серверу, для этого у X-сервера должен быть какой-то точный адрес. Адрес X-сервера, к которому должны обращаться с запросом X-клиенты, хранится в переменной окружения. Формат прост: . Под способом доступа может подразумеваться сеть (тогда используется сетевой адрес машины с X-сервером) или какой-нибудь ещё механизм, принятый в конкретной системе. Если не написать ничего, будет выбран способ по умолчанию. Номер сервера нужен для различения разных X-серверов, запущенных на одном компьютере. В Linux можно запустить несколько X-серверов и переключаться между ними как между виртуальными консолями — с помощью , и т. д. В системе может быть несколько виртуальных серверов (см. раздел Виртуальный сервер). Все они должны иметь разные номера. Наконец, один сервер может работать с несколькими экранами — и физически (есть видеокарты с выходами на несколько мониторов), и виртуально (вот тут уж никаких ограничений нет). Правда, это бывает нечасто, и номер экрана тоже можно не указывать.

Адрес X-сервера, запущенного Мефодием, будет выглядеть так: «» — поскольку сервер запущен на той же машине, на которой работает Мефодий, можно использовать способ доступа по умолчанию (поэтому адрес начинается с двоеточия), поскольку сервер единственный, он получил номер «», а экран можно не указывать. Теперь Мефодий может в любой командной оболочке (shell) указать адрес X-сервера в переменной , так что любой запущенный из этой shell X-клиент унаследует это значение и будет отправлять X-запросы тому серверу, который запустил Мефодий.

Пример 1. Запуск X-клиента из виртуальной консоли

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

Иллюстрация 4. Запуск X-клиента

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

Итак, X-сервер запускается на одном компьютере, а X-клиенты вполне могут работать на других (причём на нескольких!), посылая ему запросы

С точки зрения человека, сидящего за (обратите внимание!) X-сервером, каждый такой клиент представлен в виде окна. Требования к аппаратуре на машинах, запускающих X- клиенты, будут изрядно отличаться от требований к аппаратуре машины для X- сервера

Типичная машина с X-сервером — это рабочее место (workstation). Она должна быть оборудована качественными устройствами ввода-вывода — монитором, видеокартой, клавиатурой и мышью. Что же касается её вычислительных способностей, то их должно быть достаточно для выполнения X-запросов, и только. Такой компьютер не обязан работать под управлением Linux, на нём даже может вообще не быть операционной системы! В восьмидесятые годы выпускались подобные устройства, называемые «X-терминал» (X terminal).

X-клиент
Программа, осуществляющая ввод и вывод графических данных при попмщи X-запросов, обрабатываемых X-сервером.

В отличие от машины с X-сервером, компьютер для запуска X-клиентов может совсем не иметь устройств графического ввода-вывода. Его задача в том, чтобы все X-программы и запустившие их пользователи не мешали друг другу работать. На такой машине нужна хорошо настронная операционная среда, с достаточным для запуска многих процессов быстродействием и объёмом оперативной памяти. Пара X11R6–Linux весьма неплохо работает на т. н. бездисковых комплексах. Рабочие станции в таких комплексах — самые настоящие X-терминалы, они не имеют жёстких дисков. Вся работа происходит на центральном компьютере, с которого на рабочую станцию загружается по сети урезанный вариант системы, достаточный для запуска X-сервера, и сам X-сервер

В таких комплексах администрировать нужно одну только центральную машину, они надёжнее компьютерных залов и, что немаловажно, стоят дешевле, причём в качестве X-терминалов можно использовать и довольно маломощные, пожилые компьютеры

ОС семейства WINDOWS

История Windows началась в 1985 году, когда появилась первая версия системы (оболочки). Через несколько лет вышла вторая версия, но особой популярности система Windows не завоевала.

В 1990 году вышла Windows 3.0, которая стала применяться на многих ПК (графический интерфейс, многозадачный режим, появление множества программ, работающих под управлением Windows).

Последующие версии Windows были направлены на повышение надежности, на поддержку средств мультимедиа и работу в компьютерных сетях.

Всех представителей ОС  Windows можно разделить на две линейки:

  1. Windows 9.х (95/98/Me).
  2. Windows NT (NT4/2000/XP/2003 Server/Vista/2008 Server/7).

Только в семействе Windows NT представлены операционные системы для серверов.

ОС семейства Windows обладают следующими характерными особенностями:

  • Многопользовательские ОС.
  • Многозадачные ОС.
  • Сетевые и несетевые ОС.
  • Графические ОС.
  • 32/64-разрядные.
  • Подключение новых устройств по технологии Plug and Play.
  • Файловая система: FAT32, NTFS.

Представители семейства Windows:

Windows 3.х (3.0/3.1/3.11). Операционные оболочки, выполняемые под управлением MS-DOS.

Windows 95 (первая ОС).    Изменился интерфейс, выросла скорость работы программ, возможность автоматической настройки дополнительного оборудования, возможность работы с Интернет.

Windows 95 OSR2. Исправлены многие ошибки Windows 95, добавлена поддержка нескольких новых устройств, возможность использовать файловую систему FAT32.

Windows 98.  Сохранился внешний интерфейс, переработана внутренняя структура, много внимания уделено работе с Интернет, возможность работы с несколькими мониторами.

Windows 98 SE. В состав включена 5-ая версия Internet Explorer, обновленная система соединения с Интернет, многочисленные исправления ошибок и новая библиотека драйверов.

Windows NT (1992г. — NT 3.0, 1994г. — NT 3.5, 1996г. — NT 4.0), разрабатывались с целью повышения надежности и мощности сетевой работы.

Выпускается в двух модификациях:

  1. Windows NT Server – предназначена для управления сетевыми ресурсами.
  2. Windows NT Workstation – предназначена для работы на локальных компьютерах и  рабочих станциях.

Windows 2000 (NT 5.0). Разработана на основе Windows NT и унаследовала от нее высокую надежность и защищенность информации от постороннего вмешательства.

Windows Me.       Наследница Windows 98, приобрела новые возможности: улучшенная работа с мультимедиа, возможность записи не только аудио, но и видеоинформации, мощные средства восстановления информации после сбоев.

Windows XP. Появление 64-разрядной версии, первая ОС с полностью настраиваемым интерфейсом, поддержка записи CD-R и CD-RW дисков на уровне самой ОС и др.

Windows CE.       Предназначена исключительно для установки на «карманные» компьютеры.

Windows Server 2003.      Содержит все функции, необходимые для серверной ОС Windows, направление на безопасность, надежность, доступность и масштабируемость. Версии: Standart Edition, Enterprise Edition, Datacenter Edition, Web Edition.

Windows Vista. План выпуска версий Windows Vista оптимизирован для ключевых категорий пользователей – отдельных пользователей, малых предприятий, средних и крупных организаций, а также для соответствующих этим категориям схем использования ПО. Основной задачей семейства Windows Vista является наиболее точное соответствие набора предлагаемых программных продуктов потребностям потребителей.

Windows Server 2008 (кодовое имя «Longhorn Server») – новая версия серверной операционной системы от Microsoft. Эта версия должна стать заменой Windows Server 2003 как представитель операционных систем поколения Vista.

Windows 7 (ранее известная под кодовыми названиями Blackcomb и Vienna) – версия компьютерной операционной системы семейства Windows, следующая за Windows Vista.

Что такое сокеты?

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

Собственное имя для сокетов unix — сокеты домена Unix (Unix Domain Sockets), потому что все они находятся на одном компьютере. В некотором смысле сокеты — это сеть, полностью содержащаяся в ядре; вместо того, чтобы использовать сетевые интерфейсы и соответствующие накладные расходы для отправки данных, те же самые данные могут быть отправлены напрямую между программами.

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

В современных системах файлы управления сокетами обычно расположены в директории /run/. Например, файл управления сокетом MariaDB обычно находится по адресу /run/mysqld/mysqld.sock, а файл службы Tor по пути /run/tor/socks. Этот файл ничего не содержит, и вы не должны изменять его напрямую, за исключением разрешений, где это применимо. Это просто имя.

А файлы управления сокетами обычно расположены в директории /usr/lib/systemd/system/. Например, файл управления сокетом MariaDB обычно находится по адресу:

/usr/lib/systemd/system/mariadb.socket

Это простой текстовый файл с настройками, например:


Description=MariaDB 10.6.5 database server (socket activation)
Documentation=man:mariadbd(8)
Documentation=https://mariadb.com/kb/en/library/systemd/



##############################################################################
## USERs can override
##
##
## by creating a file in /etc/systemd/system/mariadb.socket.d/MY_SPECIAL.conf
## and adding/setting the following under  will override this file's
## settings.

SocketUser=mysql
SocketMode=777

ListenStream=@mariadb
ListenStream=/run/mysqld/mysqld.sock
ListenStream=3306

# Backlog=150

Обратите внимание на директивы ListenStream (путь до файла сокета), вторая ListenStream (номер порта), SocketUser (владелец файла сокета), SocketMode (режим, права доступа к сокету).

Как настроить PAM в Linux

Все конфигурационные файлы PAM для различных приложений находятся в папке /etc/pam.d. Давайте посмотрим на конфигурационный файл для утилиты sudo:

Каждая строчка файла состоит из нескольких полей:

тип обязательность модуль параметры

Разберем подробнее:

  • Первое поле — тип, определяет какой тип запроса к PAM надо выполнить. Существует четыре различных типа запроса auth (проверка данных входа, например, логина и пароля), account (проверка не истёк ли пароль пользователя), password (обновление пароля), и session (обслуживание сессии, например, логгирование и монтирование папок).
  • Второе поле определяет как нужно интерпретировать результат, возвращённый модулем PAM. Доступно тоже несколько возможных вариантов: required (тест должен быть обязательно пройден, но следующие строки тоже будут проверяться), requisite (аналогично required, только если тест не проходит, то следующие строки уже не проверяются), sufficient (противоположно requisite, если тест проходит, то следующие строки уже не проверяются), optional (проваленные тесты игнорируются).
  • Третье и четвертое поле — это название библиотеки модуля и её параметры. Всё это надо выполнить для выполнения теста авторизации или действия.

Кроме того, существуют директивы include, которые включают строки из других файлов так, как будто они были написаны в этом файле. Файл настройки sudo кажется совсем коротким, но в него включаются другие файлы. Давайте посмотрим ещё на файл /etc/pam.d/common-auth:

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

Модули PAM могут возвращать около 30-ти значений и они зависят от выбранного типа (account/auth/session…), вот они все: success, open_err, symbol_err, service_err, system_err, buf_err, perm_denied, auth_err, cred_insufficient, authinfo_unavail, user_unknown, maxtries, new_authtok_reqd, acct_expired, session_err, cred_unavail, cred_expired, cred_err, no_module_data, conv_err, authtok_err, authtok_recover_err, authtok_lock_busy, authtok_disable_aging, try_again, ignore, abort, authtok_expired, module_unknown, bad_item, conv_again, incomplete и default. Последнее, default, означает все поля, которые явно не заданы.

В качестве действия могут быть указанны такие значения:

  • ignore — не влияет на общий код возврата в приложение;
  • bad — расценивать это значение как свидетельство сбоя модуля;
  • die — аналогично bad, только сразу возвращать управление в приложение;
  • ok — значение должно влиять на общий возвращаемый результат, переопределяет общий результат если он раньше был успешен, но не отменяет сбой;
  • done — аналогично ok, только управление сразу возвращается приложению.

Таким образом, те четыре варианта обязательности, которые мы рассматривали выше можно описать вот так:

  • required:
  • requisite:
  • sufficient:
  • optional:

Здесь:

  • success — модуль вернул состояние успешно, поскольку значение ok, это состояние будет учтено если ни один предыдущий модуль не дал сбоя;
  • new_authtok_reqd — модуль сообщает, что пароль пользователя желательно обновить;
  • ignore — модуль просит игнорировать его результат, игнорируем;
  • default — все остальные возвращаемые значение расцениваем как сбой.

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

Чтобы закрепить всё это на практике давайте рассмотрим как запретить авторизацию от имени пользователя losst на компьютере с помощью PAM. Для этого можно воспользоваться модулем /lib/security/pam_listfile.so. Он позволяет ограничить доступ для пользователей на основе файла со списком. Откройте файл /etc/pam.d/sshd и добавьте туда такую строчку:

Здесь мы используем тип запроса auth, обязательность required и указанный выше модуль. Вот его опции и их значения:

  • onerr=succeed — если возникает ошибка, доступ разрешить;
  • item=user — указывает, что в файле конфигурации находятся логины пользователей;
  • sense=deny — действие, если логин пользователя найден в файле;
  • file=/etc/denyusers — файл с логинами пользователей, для которых надо запретить доступ.

Теперь в файл /etc/denyusers добавьте имя пользователя losst, естественно, такой пользователь должен существовать в системе. Затем попробуйте перейти в любую консоль и авторизоваться от его имени. У вас ничего не выйдет, а в логе /var/log/security или /var/log/auth.log будет сообщение об ошибке:

А если эту строчку закомментировать, то всё снова заработает.

×

Модули и расширения

Требование гибкости привело к тому, что в реализации XFree86 и XOrg графическая подсистема стала совсем уже похожа на операционную систему. Сам X-сервер играет роль ядра. Запускаясь, сервер подгружает драйверы — специальные компоненты, работающие с выбранной видеокартой, и модули — компоненты, расширяющие функциональные возможности сервера (в конфигурационном файле необходимые модули перечисляются в разделе ). Есть весьма нужные расширения, вроде glx (высокоуровневые функции трёхмерной графики) или freetype (поддержка шрифтов TrueType), а есть экзотические, которые иногда могут понадобиться, напрмер, RECORD, позволяющее записывать, а после — «проигрывать» все происходящие с сервером события.

Использование Unix Time с инструментами командной строки

В Linux и macOS программа даты является основной утилитой для работы с датой и временем, включая временные метки Unix. Вызывается без каких-либо аргументов, возвращает текущую дату / время в удобочитаемом формате:

Если вам нужна текущая дата / время во времени Unix, используйте аргумент +% s :

Вы можете преобразовать дату, удобочитаемую человеком, в метку времени, используя флаг -d, если ваша версия даты поддерживает его. Большинство версий Linux по умолчанию должны:

В macOS дата — это другая программа, для которой требуется другой набор флагов:

Идя в другом направлении, вы можете преобразовать временную метку Unix, используя флаг -r:

Некоторые другие программы используют формат %s для работы со временем Unix. Например, если вы хотите показать дату изменения файла во времени Unix, с версией ls для Linux, вы можете использовать следующее:

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: