Ваш путеводитель по одной из самых популярных и влиятельных операционных систем в мире. От базовых команд и установки дистрибутивов до глубокого изучения ядра и сетевых технологий — здесь вы найдете статьи и руководства на самые разные темы, связанные с Linux. Независимо от вашего уровня подготовки, здесь найдется что-то интересное и полезное.
При работе в терминале довольно часто приходится копировать файлы. Чаще всего для этого используется команда cp Linux. Она поставляется по умолчанию во всех дистрибутивах и умеет копировать файлы и папки, а также сохранять их атрибуты в файловых системах Linux.
В этой статье мы рассмотрим что представляет из себя эта утилита, её синтаксис, основные опции, а также несколько примеров использования.
Иногда возникает необходимость удалить службу Systemd или хотя бы сделать её недоступной для использования. Сам юнит файл службы удалять нет смысла, потому что при следующем обновлении пакета он восстановится.
Самый простой способ избавиться от службы - это удалить пакет вместе с котором она поставляется. Сначала надо найти путь к файлу юнита службы. Это можно сделать с помощью команды status:
sudo systemctl status nginx
Далее, если вы используете Ubuntu, то можно узнать с помощью dpkg какому пакету он принадлежит. Например:
dpkg -S /lib/systemd/system/nginx.service
А этот пакет уже можно удалить:
sudo apt remove nginx
Если вы не хотите удалять пакет со службой или не можете его удалить, потому что он системный и это может что-то сломать, то вы можете замаскировать службу. Замаскированные службы не запускаются при старте системы даже если они добавлены в автозагрузку и их нельзя запустить вручную. Для маскировки используется команда mask. Например:
sudo systemctl mask nginx
После этого, если вы посмотрите состояние службы, там будет написано что она замаскирована:
sudo systemctl status nginx
А если попытаетесь запустить, то получите ошибку:
sudo systemctl start nginx
Для того чтобы убрать маскировку используйте команду unmask:
sudo systemctl unmask nginx
Теперь вы знаете как скрыть службу Systemd в Linux, как видите это довольно просто. Подробнее про управление службами читайте в этой статье.
Система инициализации Systemd позволяет не только запускать и останавливать службы, но и проверять их состояние. Для просмотра информации о сервере используется команда status утилиты systemctl. Например, чтобы посмотреть состояние веб-сервера Nginx нужно выполнить такую команду:
sudo systemctl status nginx
Обычно, утилита выводит информацию с пагинацией поскольку данные не умещаются на один экран. Если вы хотите отключить пагинацию используйте опцию --no-pager:
sudo systemctl status nginx --no-pager
Давайте рассмотрим что выводит эта утилита:
Loaded - значение loaded означает что файл юнита загружен успешно и здесь же выводится путь к этому файлу. Тут возможны и другие значения, например, masked если юнит скрыт или not-found если он не найден также здесь находится информация добавлен ли юнит в автозагрузку (enabled/disabled);
Active - текущее состояние и подсостояние юнита, если юнит запущен, то обычно это active(running), если он не был запущен, то inactive(dead) если что-то пошло не так то failed и т д.
Docs - название man страницы с документацией для службы.
Process - запускаемые процессы, их состояние и код выхода.
Main PID - идентификатор основного процесса службы.
Tasks - количество процессов, запущенных в рамках этой службы.
Memory - потребление памяти службой.
CPU - использование процессора службой.
Для того чтобы посмотреть все доступные значения состояний для полей Loaded и Active выполните такую команду:
systemctl --state help
После всех этих полей выводится журнал службы. Это последние 10 строк вывода основного процесса. Если вы хотите получить больше строк используйте опцию --lines с нужным количеством строк. Например, для получения 50-ти последних строк выполните:
sudo systemctl status --lines=50 avahi-daemon
Если конец строки логов обрезается до ширины экрана, вы можете использовать опцию -l или --full для того чтобы этого избежать:
sudo systemctl status nginx.service
Для того чтобы посмотреть ещё больше логов можно воспользоваться утилитой journalctl с опцией -u которой надо передать название сервиса. например:
journalctl -eu nginx.service
Команда начнёт вывод логов с конца. Вы можете использовать клавиши со стрелками для того чтобы листать логи. Кроме того, можно посмотреть историю изменений статуса службы с помощью команды journalctl с опциями -xeu. Например:
journalctl -xeu nginx.service
Более подробно об управлении службами читайте в этой статье, а про journalctl в статье под названием Шпаргалка по Journalctl.
Прежде всего нужно упомянуть что службы Systemd можно разделить на две категории. Первая категория - это системные службы, которые запускаются от имени суперпользователя. Для управления такими службами нужно использовать sudo. Вторая категория - пользовательские службы, которые запускаются от имени определённого пользователя и этот же пользователь имеет над ними полный контроль без необходимости использовать sudo.
Firefox - это один из самых популярных браузеров. Исторически так сложилось, что он наиболее популярный среди всех браузеров для операционных систем Linux и поставляется по умолчанию вместе со многими системами в том числе и в Ubuntu. Программа имеет открытый исходный код и разрабатывается компанией Mozilla Corporation.
Разработка Firefox началась в 2004 году и за это время программа прошла очень длинный путь развития. В этой статье мы рассмотрим как установить Firefox из PPA и из официального сайта в Ubuntu.
Установка Firefox DEB в Ubuntu 22.04
В Ubuntu 22.04 Firefox по умолчанию распространяется как snap пакет. В этом есть свои плюсы, вы будете получать все самые свежие обновления сразу же как-только они выйдут не дожидаясь следующего релиза Ubuntu. Но многим не нравится устанавливать программы с помощью snap. Они медленнее запускаются и занимают намного больше места на диске. В этой статье мы рассмотрим как установить Firefox в виде deb пакета.
1. Создание резервной копии профиля
Прежде всего, необходимо сделать резервную копию важных настроек браузера. Поскольку для хранения данных в Firefox используются разные директории, всё настройки и кэш будут утеряны.
Откройте главное меню Firefox, выберите Справка, затем Информация для решения проблем. Далее найдите в таблице Каталог профиля и нажмите кнопку Открыть каталог.
Теперь закройте Firefox и скопируйте всё содержимое этого каталога в какую нибудь папку. Это можно сделать либо в терминале, либо с помощью файлового менеджера.
2. Удаление Snap пакета
Для удаления snap пакета выполните команду:
sudo snap remove firefox
Также удалите пустой deb пакет firefox с помощью apt:
sudo apt purge firefox
3. Добавление репозитория
Далее нужно добавить в систему PPA репозиторий Mozilla. Вы можете сделать это по старому используя команду apt-add-repository:
sudo add-apt-repository ppa:mozillateam/ppa
Или же добавить его вручную, для того чтобы ключи репозитория хранились в правильном месте. Сначала импортируйте ключ:
Затем добавьте такие строки в /etc/apt/sources.list.d/mozillateam.list:
sudo vi /etc/apt/sources.list.d/mozillateam.list
deb [signed-by=/etc/apt/keyrings/mozillateam.gpg] https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu jammy main
deb-src [signed-by=/etc/apt/keyrings/mozillateam.gpg] https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu jammy main
4. Настройка приоритетов
Для того чтобы во время установки выбирался именно пакет из PPA репозитория, а не snap нужно настроить приоритет этого PPA для apt. Для этого создайте файл /etc/apt/preferences.d/mozilla-firefox со следующим содержимым:
После этого можно обновить список пакетов в системе:
sudo apt update
Для того чтобы убедится что приоритеты работают правильно вы можете выполнить следующую команду:
apt-cache policy firefox
5. Установка Firefox
Ну и наконец для установки Firefox осталось выполнить такую команду:
sudo apt install firefox
Обратите внимание, что в этом PPA находятся стабильные ESR (Extended Support Release) версии Firefox. Это значит что вы будете получать обновления немного медленнее, по сравнению с использованием snap пакетов. Проверить текущую версию можно с помощью команды:
firefox --version
6. Восстановление резервной копии
Для того чтобы восстановить свой старый профиль запустите Firefox и выполните первоначальную настройку.
Когда браузер будет готов к работе откройте главное меню, выберите Справка (Help), затем Информация для решения проблем (More Troubleshooting Information). Далее найдите в таблице Каталог профиля (Profile Directory) и нажмите кнопку Открыть каталог (Open Directory).
После этого закройте Firefox. В этот каталог нужно скопировать с заменой всё файлы, которые вы скопировали в первом пункте. Затем снова запустите Firefox и теперь вы сможете получить доступ к истории открытых вкладок, своим настройкам и расширениям.
Установка Бета версии Firefox в Ubuntu
Для установки бета версии Firefox из PPA репозитория Mozilla необходимо проделать все те же шаги что и в предыдущем пункте. Здесь я опущу описание создания резервных копий и удаление snap пакета.
Приоритет snap версии всё равно выше пакета из PPA, даже несмотря на то, что там версия новее, поэтому нужно не только добавить сам репозиторий, но и настроить приоритеты:
После этого можно установить бета версию браузера:
sudo apt install firefox
Далее вы можете проверить версию браузера. Как правило, в этом репозитории находится самая свежая версия:
firefox --version
Установка Firefox Snap в Ubuntu
Если вы хотите вернуть Snap версию Firefox, то сделать это довольно просто. Удалите firefox, установленный из PPA:
sudo apt remove firefox
Затем установите программу из snap пакета:
sudo snap install firefox
Также можно удалить файл с настройкой приоритетов /etc/apt/preferences.d/mozilla-firefox и сам PPA репозиторий из системы.
Установка из официального сайта
Установка последней версии Firefox может быть выполнена не только из репозиториев. Вы можете скачать архив с бинарными файлами программы и распаковать его на своем компьютере. Такой подход может использоваться для установки нескольких версий Firefox. Например, перейдите в папку /usr/local/:
cd /usr/local/
Затем скачайте архив из официального сайта. Например, для последней версии Firefox 64 бит ссылка будет выглядеть вот так:
Для обновления полученного таким образом Firefox надо просто повторить процедуру. Затем можно запускать из главного меню или через терминал:
firefox
Удаление Firefox
Если вы хотите полностью удалить Firefox установленный с помощью deb пакета из системы, используйте команду:
sudo apt remove firefox
Чтобы удалить Firefox установленный из официального сайта надо удалить символическую ссылку /usr/bin/firefox:
sudo rm -Rf /usr/bin/firefox
Затем удалить папку /usr/loca/firefox:
sudo rm -Rf /usr/loca/firefox
Для удаления snap пакета выполните:
sudo snap remove firefox
Выводы
В этой статье мы рассмотрели как установить Firefox Ubuntu 22.04, а также как обновить программу до самой новой версии. А вы используете Firefox? Или Chrome? Почему? Напишите в комментариях!
Начиная с Ubuntu 20.10 при обновлении системы или добавлении репозиториев с помощью apt-add-repository и ключей с помощью apt-key вы можете видеть ошибку Key is stored in legacy trusted.gpg keyring или apt-key is deprecated. Вообще говоря, это не ошибка, а всего лишь предупреждение и всё будет работать не смотря на неё.
Но если вы не хотите видеть это сообщение, можно всё поправить. В этой статье мы рассмотрим как исправить ошибку key is stored in legacy trusted.gpg keyring и почему она возникает.
Почему возникает ошибка
Эта ошибка означает, что ключ стороннего репозитория хранится в устаревшем хранилище ключей /etc/apt/trusted.gpg. Это похоже на то, что было несколько лет назад со строками настройки сторонних репозиториев. Сразу они хранились в /etc/apt/sources.list, а потом их перенесли в /etc/apt/sources.list.d/. Но дело не только в этом.
Все пакеты в сторонних репозиториях, которые вы можете добавить в Ubuntu, в том числе и из PPA, должны быть подписаны GPG ключом, который находится в списке доверенных ключей системы. При добавлении репозитория, добавляется не только запись о репозитории в файл /etc/sources.list или /etc/sources.list.d, но и его ключ, который сохранялся в по умолчанию в /etc/apt/trusted.gpg.
Это работает, но проблема в том, что apt полностью доверяет ключам из этого расположения, так же как и из расположения /etc/apt/trusted.gpg.d/. Все эти ключи могут использоваться для проверки подписи всех репозиториев. Например, ключ от Elasticsearch может использоваться для верификации пакетов из репозитория MySQL. Разработчики считают это проблемой безопасности поскольку это может привести к тому, что пакеты из официальных репозиториев могут быть заменены вредоносными из сторонних репозиториев. Они хотят отказаться от кросс-подписи и добиться того, чтобы пакеты из каждого стороннего репозитория проверялись его ключом. При правильной настройке приоритетов это может защитить пакеты из официальных репозиториев от подмены.
Это правильный подход. Но, похоже, на момент написания статьи в Ubuntu 22.04 и Debian 11 подобная защита по умолчанию не реализована. И даже если вы разместите ключи как рекомендуется, пакеты из официальных репозиториев всё ещё могут быть подменены. Таким образом, это задел на будущее. Если я не прав и вы знаете как реализовать такую защиту - расскажите в комментариях.
Для того чтобы воплотить эту идею в жизнь сначала нужно чтобы у каждого репозитория был указан ключ, которым будут проверяться его пакеты. Для этого разработчики рекомендуют сохранять ключи для каждого пакета в отдельных файлах. Не в /etc/apt/trusted.gpg.d/, а /etc/apt/keyrings и указывать в описании репозитория путь к ключу, которым должна быть проверена подпись с помощью опции signed-by.
На данный момент объявлена устаревшей утилита apt-key, а также хранение ключей сторонних репозиториев в общем файле /etc/apt/trusted.gpg. В то же время хранить ключи в /etc/apt/trusted.gpg.d всё ещё можно. И многие репозитории так и делают. Хотя некоторые, тот же Elasticsearch, уже используют новый подход. Этот ход не многое меняет, но это первый шаг, к тому чтобы всё было сделано правильно в будущем.
Как исправить Key is stored in legacy trusted.gpg keyring
Вы могли заметить, что раньше во многих инструкциях рекомендовалось использовать apt-key для добавления ключа, а теперь используется утилита gpg. Фактически, для управления ключами и раньше использовалась утилита gpg, а apt-key выступала в роли оболочки и автоматически указывала нужные параметры. Теперь же нужно всё делать явно. Поэтому для системы ничего не поменялось и новые команды gpg можно использовать в старых версиях дистрибутивов.
Для того чтобы убрать это предупреждение, избежать его появления в будущем и сделать всё правильно, вам надо выполнить несколько шагов:
Забыть про apt-key и добавлять ключи вручную с помощью gpg;
Забыть про apt-add-repository и добавлять PPA вручную;
Перенести все ключи из /etc/apt/trusted.gpg/ в /etc/apt/keyrings и прописать путь к ключу для каждого репозитория.
Предлагаю начать с последнего пункта и перенести все сторонние ключи из файла trusted.gpg в папку /etc/apt/keyrings.
Перенос ключей в /etc/apt/keyrings (правильный способ)
Для того чтобы система не выдавала предупреждение о том, что способ хранения ключей устарел или в будущем улучшить безопасность, нужно переместить все ключи сторонних репозиториев из trusted.gpg в папку /etc/apt/keyrings и прописать путь к ключам для каждого репозитория в /etc/apt/sources.list.d. Сначала надо найти все ключи, которые надо перемещать. Для этого выполните команду:
sudo apt-key list
Тут будут выведены все доверенные ключи в системе. Нужно их просмотреть и найти только те, которые хранятся в trusted.gpg. Обычно в выводе утилиты все ключи разделены по файлам и ключи из trusted.gpg будут в самом верху. В данном примере, это ключ от репозитория MySQL. Кроме того, здесь есть ключ от Google Chrome, но он находится в trusted.gpg.d и apt это пока устраивает. Но для улучшения безопасности в будущем вы можете его тоже переместить в /etc/apt/keyrings.
Для того чтобы экспортировать ключ в отдельный файл найдите строчку pub, и возьмите из неё последние 8 цифр. В данном примере это 3A79BD29. Затем выполните такую команду:
Имя файла тут не имеет большого значения, однако для того чтобы вы потом понимали к какому репозиторию относится ключ, файлам ключей лучше давать осмысленные имена.
Такую процедуру надо проделать с каждым ключом. Затем для каждого репозитория нужно прописать ключ, которым которым он будет проверяться. В данном примере репозиторий добавлен с помощью файла /etc/apt/sources.list.d/mysql.list. Для каждой строчки deb в этом файле нужно добавить опцию signed-by с путем к ключу. Например:
/etc/apt/sources.list.d/mysql.list/etc/apt/sources.list.d/mysql.list
deb [signed-by=/etc/apt/keyrings/mysql.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-apt-config
deb [signed-by=/etc/apt/keyrings/mysql.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-8.0
deb [signed-by=/etc/apt/keyrings/mysql.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-tools
Если там уже есть другие опции, то каждая новая опция должна быть отделена запятой. После этого можно удалить ключ из хранилища trusted.gpg:
sudo apt-key del 3A79BD29
Дальше вы можете выполнить команду обновления и убедится что больше нет никаких ошибок:
sudo apt update
Перенос ключей в /etc/apt/trusted.gpg.d/ (допустимый способ)
Как я уже говорил выше, на данный момент объявлено устаревшим только хранение ключей в trusted.gpg. Если вы не хотите прописывать signed-by для всех репозиториев, то всё ещё можете переместить ключи в trusted.gpg.d. Тогда они все ещё будут использоваться для проверки подписи пакетов из всех репозиториев, но apt не будет выдавать предупреждение при обновлении. Порядок действий тот же. Сначала надо посмотреть список ключей в trusted.gpg:
sudo apt-key list
Затем экспортировать каждый ключ в trusted.gpg.d. Например:
В данном случае, прописывать ключи в signed-by для каждого репозитория не надо, поскольку они и так считаются доверенными для всех репозиториев apt.
Если вы выбрали этот способ, то дальше можно не смотреть. Утилита apt-key в последних версиях Ubuntu 22.04 уже сохраняет ключи сторонних репозиториев в /etc/apt/trusted.gpg.d и для того чтобы убрать ошибку достаточно сконвертировать старые ключи. Если же вы хотите сделать так, как рекомендуют разработчики Ubuntu, смотрите дальше.
Как добавить ключ без apt-key
На данный момент утилита apt-key считается устаревшей и добавлять ключи с помощью неё не рекомендуется. Для этого надо использовать gpg. Обратите внимание, что ключи могут быть двух типов. Либо в формате ASCII с расширением .asc либо в бинарном формате .gpg. Но apt может работать только с ключами в формате OpenPGP и расширением .gpg. Поэтому нельзя просто скопировать полученный ключ в папку /etc/apt/trusted.gpg.d или /etc/apt/keyrings.
Обычно ключи распространяются в формате ASCII, вы можете скачать его, конвертирвать и уже затем добавить в систему с помощью gpg. Например, выполните такую команду для загрузки ключа Google Chrome:
Ну и не забудьте добавить опцию singed-by для репозитория. Например, для того же Google Chrome новая команда добавления репозитория будет выглядеть так:
После этого вы можете проверить что всё заработало и ключ распознается корректно.
Если же ключ распространяется в бинарном формате, вы сразу же можете поместить его в хранилище ключей:
wget -q -O - https://url | sudo tee /etc/apt/trusted.gpg.d/reponame.gpg
Как добавить PPA без apt-add-repository
Поскольку apt-add-repository использует apt-key, теперь нельзя использовать эту утилиту для добавления PPA. Простого способа получить путь к репозиторию и его ключ в командной строке по его имени нет, но зато вся необходимая информация есть на странице репозитория. Просто раскройте пункт Technical details about this PPA под командами добавления репозитория. Например, для Firefox:
Здесь есть отпечаток ключа, в данном случае AF316E81A155146718A6FBD7A6DCF7707EBC211F. Вы можете добавить ключ в систему с помощью следующей команды:
После этого надо добавить запись об этом репозитории в /etc/sources.list.d. На странице PPA выберите версию вашего дистрибутива и скопируйте строки над ключом:
Создайте файл /etc/apt/sources.list.d/firefox.list и вставьте в него то, что было скопировано.
Если вы решили не хранить ключи в /etc/apt/trusted.gpg.d, то вам также нужно прописать путь к ключу репозитория с помощью опции signed-by. Если ключ был сохранен в /etc/apt/keyrings/firefox.gpg, то результат будет выглядеть вот так:
/etc/apt/sources.list.d/firefox.listdeb [signed-by=/etc/apt/keyrings/firefox.gpg] https://ppa.launchpadcontent.net/ubuntu-mozilla-security/ppa/ubuntu jammy main
deb-src [signed-by=/etc/apt/keyrings/firefox.gpg] https://ppa.launchpadcontent.net/ubuntu-mozilla-security/ppa/ubuntu jammy main
После этого вы можете обновить список пакетов и убедится что всё работает.
Выводы
Теперь вы знаете что означает Key is stored in legacy trusted.gpg keyring и как исправить эту ошибку. Разработчики затеяли серьезное и важное преобразование системы безопасности пакетного менеджера, но это всё ещё довольно сложно для простых пользователей. Намного проще добавить ключ с помощью apt-key и добавить репозиторий по его имени с помощью apt-add-repository. Возможно, в будущем эти утилиты будут обновлены и начнут поддерживать новый способ работы с ключами.
Многие репозитории уже предлагают правильные команды для установки их в систему. А для всех остальных вы можете делать всё вручную, продолжить использовать apt-key или же просто игнорировать предупреждение о том, что ключи хранятся в устаревшем месте.
Утилита loginctl входит в набор утилит systemd для управления системой. Она позволяет управлять запущенными сессиями пользователей, смотреть список активных пользователей, блокировать экран или вообще завершать сессии, завершать процессы пользователей и многое другое.
Раньше для всего этого приходилось использовать несколько утилит и конфигурационных файлов, а теперь всё находится в одном месте. В этой статье мы рассмотрим как пользоваться loginctl, также для чего эта утилита может пригодится.
Основы loginctl
Утилита loginctl позволяет взаимодействовать со всем, что касается авторизации пользователей. В официальной документации сказано, что loginctl предназначена для контроля менеджера входа в систему systemd-logind. Утилита оперирует такими сущностями:
Пользователь (user) - любой пользователь зарегистрированный в системе;
Сессия (session) - активная авторизация пользователя в системе. Каждый вход, за исключением sudo и su, считается новой сессией. Вы можете авторизоваться в нескольких TTY, по SSH или в графическом менеджере входа, это всё будут новые сессии;
Место (seat) - эта концепция позволяет подключить к компьютеру несколько пар мышек, клавиатур, мониторов и использовать его несколькими пользователями одновременно. Обычно эта возможность не используется и утилита показывает только одно рабочее место.
А теперь, давайте посмотрим на синтаксис и доступные опции loginctl.
Синтаксис и опции loginctl
Синтаксис утилиты довольно простой:
$ loginctl опции команда аргументы
Вот основные команды, которые вы можете использовать:
list-sessions - вывести список сессий;
session-status <id> - выводит состояние сессии, дату авторизации, информацию об основных запущенных сервисах и процессах;
show-session <id> - выводит настройки сессии;
activate <id> - позволяет переключится на указанную сессию;
lock-session <id> - блокирует экран для указанной сессии, если ID сессии не задан, блокирует экран для текущей сессии;
unlock-session <id> - разблокирует экран для указанной сессии;
kill-session <id> - позволяет завершить сессию, или отправить определённый сигнал всем процессам;
terminate-session <id> позволяет завершить указанную сессию;
list-users - выводит список пользователей, которые авторизованы в данный момент;
user-status <id> - похоже на session-status, выводит дату авторизации, состояние и все запущенные процессы в виде дерева;
show-user <id> - выводит информацию о пользователе и его текущей сессии без запущенных процессов;
terminate-user <id> - завершает все сессии пользователя и все его процессы;
kill-user <id> - отправляет сигнал всем процессам пользователя, по умолчанию будет отправлен SIGTERM;
list-seats - выводит список рабочих мест;
seat-status <id> - выводит все процессы запущенные в рамках указанного рабочего места;
show-seat <id> - выводит настройки рабочего места;
terminate-seat <id> - завершает все процессы рабочего места.
Настойка рабочих мест не будет рассматриваться в этой статье, поэтому я даже не буду приводить команды для неё. Обрате внимание, что многие команды будут работать только для сессий с графическим интерфейсом, например lock-session или unlock-session не поддерживается для TTY или SSH сессий. А теперь давайте рассмотрим примеры.
Как пользоваться loginctl
1. Информация о сессиях
Вы можете посмотреть все активные сессии пользователей с помощью команды list-sessions:
loginctl list-sessions
В данном случае есть две сессии. Первая автовход в графический интерфейс, где запущен Gnome, вторая консольная сессия в TTY3. Здесь по каждой сессии отображается только её идентификатор, имя пользователя и TTY, в которой запущена сессия. Для того чтобы узнать более подробную информацию о каждой сессии используйте команду session-status. Вот так выглядит сессия в графическом интерфейсе:
loginctl session-status 1
Здесь видно когда была запущена сессия, её тип, в данном случае X11, а также основные процессы. Консольная сессия в TTY выглядит вот так:
loginctl session-status 3
Если вы хотите посмотреть настройки сессии без информации о процессах используйте команду show-session:
loginctl show-session 1
Для этой команды можно указать какую именно информацию вы хотите получить с помощью опции -p или --property. Например, для того чтобы получить только тип используйте такую команду:
loginctl show-session 1 --p Type
Для того чтобы получить только значение, без названия свойства используйте опцию --value:
loginctl show-session 1 --p Type --value
2. Информация о пользователях
Просмотр информации о пользователях работает примерно так же, как и просмотр информации о сессиях. Вы можете посмотреть список всех авторизованных пользователей с помощью такой команды:
loginctl list-users
С помощью команды user-status можно посмотреть подробности и каждом пользователе. Причём здесь будут именно подробности о его сессиях, а не данные пользователя:
loginctl user-status 1000
В поле Sessions выводятся идентификаторы всех сессий пользователя, причём активная сессия будет отмечена звездочкой. Ниже выводятся Systemd сервисы запущенные от имени этого пользователя и запущенные ими процессы. По умолчанию список процессов может быть сокращён. Если вы хотите видеть все процессы используйте опцию -l или --full:
loginctl user-status 1000 --full
Для того чтобы утилита выводила всю информацию сразу без пагинации используйте опцию --no-pager:
loginctl user-status 1000 --no-pager
3. Переключение на другую сессию
Вы можете переключаться между сессиями используя графический интерфейс, например в Gnome или KDE. Но если вы хотите сделать это в терминале, то нужно использовать loginctl. Например, для того чтобы переключится в сессию с идентификатором 3 используйте команду:
loginctl activate 3
А там вы можете переключится обратно. Это может быть удобнее чем переключаться по TTY с помощью горячих клавиш. Переключившись вы можете заблокировать экран для предыдущей сессии. Для этого используйте команду lock-session. Например:
loginctl lock-session 1
4. Завершение сессий и процессов
С помощью команд kill-user или kill-session можно завершать процессы, которые запущены от имени пользователя или только определённой сессии. Эти команды работают аналогично консольной утилите kill, а значит с помощью них можно не только завершить процесс, но и отправить ему какой-либо сигнал. Если команде kill-session передать только идентификатор сессии, то она просто завершит её:
loginctl kill-session 3
Но вы можете отправить какой-либо другой сигнал с помощью опции --signal. По умолчанию отправляется сигнал SIGTERM. Например, для того чтобы передать сигнал SIGKILL используйте команду:
loginctl kill-session 3 --signal SIGKILL
Аналогичная команда существует и для завершения всех процессов пользователя - kill-user. Кроме того есть команда session-terminate. Она делает практически то же самое только не позволяет выбирать сигнал и сразу же завершает все процессы:
loginctl terminate-session 3
5. Автозапуск сервисов пользователя
В Systemd есть поддержка сервисов, запускаемых от имени пользователя. Этими сервисами можно управлять без использования sudo и это довольно удобно. Окружения рабочего стола, например, Gnome уже давно используют эту возможность. Это такие сервисы, для управления которыми используется команда systemctl с опцией --user. Обычно, такие сервисы запускаются когда пользователь авторизуется в системе и останавливаются при выходе. Но иногда возникает необходимость сделать так, чтобы процессы пользователя запускались при загрузке системы, до его авторизации и не завершались с завершением сессии. Вы можете настроить это с помощью loginctl.
Например, для того чтобы это настроить для пользователя sergiy необходимо использовать такую команду loginctl:
loginctl enable-linger sergiy
Посмотреть состояние этого параметра можно с помощью команды user-status. Для отключения используйте команду disable-linger:
loginctl disable-linger sergiy
Выводы
В этой статье мы рассмотрели как пользоваться loginctl для просмотра информации о сессиях и авторизованных пользователях, а также как завершать сессии пользователей. Как видите утилита довольно проста в использовании и позволяет сделать всё в одном месте.
Многие популярные дистрибутивы Linux уже используют Wayland по умолчанию. Так Ubuntu перешла на Wayland по умолчанию начиная с 22.04, Fedora использует Wayland уже давно. Недавно к списку этих дистрибутивов присоединилась ещё и SUSE и Debian. Однако у Wayland всё ещё есть проблемы. Многие старые программы не поддерживаются или работают плохо.
Если у вас возникли какие-либо проблемы при работе с старыми программами, нужно проверить какой дисплейный сервер вы используете. Есть несколько способов сделать это. В этой статье мы рассмотрим как узнать Wayland или Xorg в терминале. Читать далее Как узнать Wayland или Xorg→
Сертификаты SSL используются для обеспечения безопасности в различных сферах. Самая распространенная - это просмотр веб-сайтов по протоколу HTTPS. Существует небольшое количество доверенных корневых сертификатов организаций, которые подписывают остальные сертификаты для всех сайтов. Эти доверенные сертификаты хранятся на каждом компьютере или смартфоне. И именно исходя из этого веб-браузер может понимать, что тому или иному сайту можно доверять.
Но если вы попытаетесь создать свой корневой сертификат и подписать им сертификат для своего сайта, то увидите в браузере сообщение о том, что подключение не безопасно потому что используется сертификат, которого нет в списке доверенных. Аналогично будут работать и другие программы. Но вы можете добавить свой сертификат в список доверенных в своей системе. В этой статье мы рассмотрим как установить сертификат в Ubuntu. Читать далее Установка сертификатов в Ubuntu→
Ngrok - это сервис, который позволяет сделать локальный порт доступным из интернета без настройки NAT, роутера, DDNS и других протоколов. Программа создает туннель между вашим компьютером и удалённым сервером и предоставляет доступ к нему с уникального домена. Достаточно только зарегистрироваться на сайте сервиса, установить программу на компьютер и запустить команду создания туннеля.
Конечно, такой способ не подойдёт если вам нужно чтобы ваш сервис был доступен постоянно, но показать как работает ваш локальный сайт или потестировать работу Callback API довольно удобно. В этой статье мы рассмотрим как пользоваться Ngrok, а также как установить Ngrok в Ubuntu. Читать далее Как пользоваться Ngrok→