Dialout linux что это
Обновлено: 07.07.2024
Основа распределения прав доступа в операционной системе Linux лежит на понятии пользователь. Пользователю-владельцу файла выдаются определенные полномочия для работы с ним, а именно на чтение, запись и выполнение. Также отдельно устанавливаются полномочия на чтение, запись и выполнение для всех остальных пользователей. Поскольку в Linux все есть файлом, то такая система позволяет регулировать доступ к любому действию в этой операционной системе с помощью установки прав доступа на файлы. Но еще при создании Linux, разработчики поняли, что этого явно недостаточно.
Поэтому и были придуманы группы пользователей. Пользователи могут объединяться в группы, чтобы уже группам выдавать нужные полномочия на доступ к тем или иным файлам, а соответственно и действиям. В этой статье мы рассмотрим группы пользователей в Linux, рассмотрим зачем они нужны, как добавить пользователя в группу и управлять группами.
Что такое группы?
Как я уже сказал группы в Linux появились еще в самом начале разработки этой операционной системы. Они были разработаны для того, чтобы расширить возможности управления правами. Разберем небольшой пример, возьмем организацию в которой есть только один компьютер, у нас есть администраторы и пользователи. У каждого человека свой аккаунт на нашем компьютере. Администраторы могут настраивать систему, пользователям же лучше не давать воли, чтобы что-то не сломали. Поэтому администраторы объединяются в группу admin, и ей дается доступ ко всему оборудованию, реально же ко всем файлам в каталоге dev, а пользователи, объеденные в группу users, и этой группе дается возможность читать и записывать файлы в общий каталог, с помощью которого они могут обмениваться результатами своей работы. Мы могли бы назначать права для каждого пользователя отдельно разрешая ему доступ к тому или иному файлу, но это слишком неудобно. Поэтому и были придуманы группы. Говорите, да ничего, можно назначить? Ну а теперь представьте что наши пользователи - это процессы. Вот тут вся краса групп выходит на передний план, группы используются не столько для обеспечения доступа для пользователей, сколько для управления правами программ, особенно их доступом к оборудованию. Для сервисов создаются отдельные группы и пользователь, от имени которого запущен он, сервис может состоять в нескольких группах, что обеспечивает ему доступ к определенным ресурсам.
А теперь давайте рассмотрим как посмотреть группы linux.
Группы в Linux
Все группы, созданные в системе, находятся в файле /etc/group. Посмотрев содержимое этого файла, вы можете узнать список групп linux, которые уже есть в вашей системе. И вы будете удивлены.
Кроме стандартных root и users, здесь есть еще пару десятков групп. Это группы, созданные программами, для управления доступом этих программ к общим ресурсам. Каждая группа разрешает чтение или запись определенного файла или каталога системы, тем самым регулируя полномочия пользователя, а следовательно, и процесса, запущенного от этого пользователя. Здесь можно считать, что пользователь - это одно и то же что процесс, потому что у процесса все полномочия пользователя, от которого он запущен.
Давайте подробнее рассмотрим каждую из групп, чтобы лучше понимать зачем они нужны:
Теперь, когда вы знаете зачем использовать группы в linux и какие они есть по умолчанию, рассмотрим управление группами LInux.
Управление группами Linux
Управлять группами можно и с помощью графического интерфейса. В KDE есть программа Kuser специально предназначенная для этого, в Gnome это выполняется с помощью настроек системы. Кроме того, в популярных дистрибутивах есть отдельные инструменты, такие как YaST в OpenSUSE или Настройки Ubuntu. Но с графическим интерфейсом я думаю вы разберетесь. А мы рассмотрим управление группами linux через терминал. Сначала разберемся с файлами, а уже потом с пользователями.
При создании файла ему назначается основная группа пользователя который его создал. Это просто например:
Здесь вы можете видеть, что владелец всех папок sergiy и группа тоже sergiy. Правильно, так как эти пользователи были созданы мной. Но давайте пойдем дальше:
Здесь мы видим что дисковым устройствам sd* назначена группа disk, а это все значит, что пользователь, состоящий в этой группе, может получить к ним доступ. Или еще пример:
Все как мы рассматривали в предыдущем пункте. Но эти группы могут быть не только установлены системой, но и вы сами вручную можете менять группы файлов для этого есть команда chgrp:
chgrp имя_группы имя_файла
Например создадим файл test:
И изменим для него группу:
Теперь этот файл смогут прочитать все пользователи из группы adm.
Если вы хотите создать группу linux, это можно сделать командой newgrp:
sudo groupadd test
С пользователями ситуация немного сложнее. Пользователь имеет основную группу, она указывается при создании, а также несколько дополнительных. Основная группа отличается от обычных тем, что все файлы в домашнем каталоге пользователя имеют эту группу, и при ее смене, группа этих каталогов тоже поменяется. Также именно эту группу получают все файлы созданные пользователем. Дополнительные группы нужны, чтобы мы могли разрешить пользователям доступ к разным ресурсам добавив его в эти группы в linux.
Управление группами Linux для пользователя выполняется с помощью команды usermod. Рассмотрим ее синтаксис и опции:
$ usermod опции имя_пользователя
- -G - дополнительные группы, в которые нужно добавить пользователя
- -g изменить основную группу для пользователя
- -R удалить пользователя из группы.
Добавить пользователя в группу можно командой usermod:
sudo usermod -a -G имя_группы имя_пользователя
Можно добавить пользователя в группу linux временно, командой newgrp. Откроется новая оболочка, и в ней пользователь будет иметь нужные полномочия, но после закрытия все вернется как было:
sudo newgrp имя_группы
Для примера давайте добавим нашего пользователя в группу disk, чтобы иметь прямой доступ к жестким дискам без команды sudo:
sudo usermod -G -a disk sergiy
Теперь вы можете монтировать диски без команды sudo:
mount /dev/sda1 /mnt
Посмотреть группы linux, в которых состоит пользователь можно командой:
Также можно использовать команду id. В первом случае мы просто видим список групп linux, во втором дополнительно указанны id группы и пользователя. Чтобы включить пользователя в группу Linux, для основной группы используется опция -g:
sudo usermod -g test sergiy
Теперь все каталоги в домашней папке пользователя имеют группу test. Удалить пользователя из группы в linux можно той же командой с опцией R:
sudo usermod -R группа пользователь
Ну и наконец, удалить группу Linux можно командой:
sudo delgroup имя_группы
Выводы
Как видите, группы пользователей Linux не такое уж сложное дело. Вы можете в несколько команд добавить пользователя в группу linux или дать ему полномочия на доступ к определенным ресурсам. Если вы надумали изменять группы для системных устройств, тут все не так просто, но в этом вопросе вам поможет статья про правила udev в linux. Теперь управление группами Linux вам не кажется таким сложным. Если остались вопросы, пишите в комментариях!
Операционная система Linux изначально планировалась как многопользовательская система. Для управления правами доступа для каждого из пользователей используется три флага: чтение, запись и выполнение. Но этого было недостаточно, поэтому были придуманы группы пользователей Linux. С помощью групп можно дать нескольким пользователям доступ к одному ресурсу.
Файлу присваивается группа, для нее описываются права, затем в эту группу вступают пользователи, чтобы получить доступ к файлу. Читайте подробнее про все это в статье группы Linux. А в этой статье мы рассмотрим как добавить пользователя в группу linux.
Как добавить пользователя в группу Linux
Как я уже сказал, для каждого пользователя существует два типа групп, это первичная, основная для него группа и дополнительные.
- Первичная группа - создается автоматически, когда пользователь регистрируется в системе, в большинстве случаев имеет такое же имя, как и имя пользователя. Пользователь может иметь только одну основную группу;
- Вторичные группы - это дополнительные группы, к которым пользователь может быть добавлен в процессе работы, максимальное количество таких групп для пользователя - 32;
Как обычно, лучше всего будет добавлять пользователя в группу через терминал, поскольку это даст вам больше гибкости и возможностей. Для изменения параметров пользователя используется команда usermod. Рассмотрим ее опции и синтаксис:
$ usermod опции синтаксис
Здесь нас будут интересовать только несколько опций с помощью которых можно добавить пользователя в группу root linux. Вот они:
- -G - дополнительные группы для пользователя;
- -a - добавить пользователя в дополнительные группы из параметра -G, а не заменять им текущее значение;
- -g - установить новую основную группу для пользователя, такая группа уже должна существовать, и все файлы в домашнем каталоге теперь будут принадлежать именно этой группе.
У команды намного больше опций, но нам понадобятся только эти для решения нашей задачи. Теперь рассмотрим несколько примеров. Например, чтобы добавить пользователя в группу sudo linux используйте такую комбинацию:
sudo usermod -a -G wheel user
Если вы не будете использовать опцию -a, и укажите только -G, то утилита затрет все группы, которые были заданы ранее, что может вызвать серьезные проблемы. Например, вы хотите добавить пользователя в группу disk и стираете wheel, тогда вы больше не сможете пользоваться правами суперпользователя и вам придется сбрасывать пароль. Теперь смотрим информацию о пользователе:
Мы можем видеть, что была добавлена указанная нами дополнительная группа и все группы, которые были раньше остались. Если вы хотите указать несколько групп, это можно сделать разделив их запятой:
sudo usermod -a -G disks,vboxusers user
Основная группа пользователя соответствует его имени, но мы можем изменить ее на другую, например users:
sudo usermod -g users user
Теперь основная группа была изменена. Точно такие же опции вы можете использовать для добавления пользователя в группу sudo linux во время его создания с помощью команды useradd.
Добавление пользователя в группу через GUI
В графическом интерфейсе все немного сложнее. В KDE добавление пользователя в группу linux выполняется с помощью утилиты Kuser. Мы не будем ее рассматривать. В Gnome 3 возможность управления группами была удалена, но в разных системах существуют свои утилиты для решения такой задачи, например, это system-config-users в CentOS и Users & Groups в Ubuntu.
Для установки инструмента в CentOS выполните:
sudo yum install system-config-users
Дальше вы можете запустить утилиту через терминал или из главного меню системы. Главное окно утилиты выглядит вот так:
Выполните двойной клик по имени пользователя, затем перейдите на вкладку "группы". Здесь вы можете выбрать отметить галочками нужные дополнительные группы, а также изменить основную группу:
Для установки утилиты в Ubuntu запустите такую команду:
sudo apt install gnome-system-tools
Здесь интерфейс будет немного отличаться, утилита будет выглядеть так же, как и системная программа настройки пользователей только появится возможность управления группами Linux.
Выводы
В этой небольшой статье мы рассмотрели как добавить пользователя в группу linux. Это может быть очень полезно для предоставления пользователю дополнительных полномочий и разграничения привилегий между пользователями. Если у вас остались вопросы, спрашивайте в комментариях!
Смысл объединения пользователей в группы проистекает как раз из необходимости предоставлять права доступа к файлам и папкам разным пользователям системы. Так как пользователей может быть не два и не три, а больше, было принято решения создать группы пользователей и предоставлять права им.
Перечень существующих в операционной системе групп находится в файле /etc/group. Открыть его можно любым текстовым редактором как из терминала, так и из графической среды. А вот для редактирования нужны права администратора.
Содержимое файла /etc/group.
В Linux есть довольно значительное количество системных групп. Их предназначение заключается в распределении доступа к системным ресурсам. Различное ПО также может создавать группы для распределения доступа. Для начала рассмотрим основные группы, которые встретятся вам при работе с Linux.
Управление группами в Linux осуществляется как через уже известный нам файл /etc/group, так и через графический интерфейс. В разных средах рабочего стола есть разные инструменты для управления группами. Кому интересно, может поискать в сети такие названия, как YaST и Kuser. Мы же рассмотрим управление группами через терминал Linux.
Для создания группы используется команда groupadd . Синтаксис команды очень простой:
groupadd [-g идентификатор [-o]] [-r] [-f] [-p пароль] [-R директория] [-h] [-K ключ=значение] имя_группы
Конечно, для создания группы нужно обладать правами администратора. Большинство из вышеприведенных опций используются нечасто. Обычно команда для создания новой группы выглядит примерно так:
Для того, чтобы добавить пользователя test в только что созданную группу primer, мы можем использовать команду
Можно ли удалить пользователя из группы при помощи команды usermod ? Да, но происходит это не при помощи отдельного параметра, а просто при переопределении дополнительных групп, в которые входит пользователь. В общем виде такая команда будет выглядеть так:
Посмотреть, в какие группы входит пользователь, можно командой
Посмотрим на скриншот ниже, а дальше прокомментируем его.
Показывает информацию о пользователе test, его uid, gid, в какие группы он входит (основную и дополнительные). Основная группа для него это группа test с идентификатором 1000. Остальные группы являются дополнительными. Следующей командой
мы меняем перечень дополнительных групп для пользователя test. Опять повторив команду
мы увидим, что перечень групп у пользователя test изменился. Так как мы не упомянули группу primer, фактически мы пользователя из этой группы удалили.
Что касается удаления групп, то здесь также можно воспользоваться редактированием файла /etc/group или отдельной командой. Команда в данном случае называется groupdel .
Удалим группу primer:
Команда groupdel имеет всего два параметра, в общем виде она выглядит так:
groupdel [-R директория] [-h] имя_группы
Выше мы разобрали команду groupadd , поэтому смысл параметров -R и -h должен быть понятен.
На этом можно остановиться с основами управления группами в Linux. Помимо этого, можно было упомянуть в целом похожие инструменты, такие как addgroup и delgroup , но, по сути, они всё равно обращаются к groupadd и groupdel , и изучить их можно самостоятельно.
С помощью аудита можно реализовать журналирование для следующих событий:
- доступ к объектам файловой системы;
- выполнение системных вызовов;
- запуск пользовательских команд;
- логины пользователей;
- действия с учетными записями и привилегиями.
В этой статье я расскажу, как устроена подсистема аудита, как ей управлять, а также как получить журнал аудита всех интересующих тебя событий.
Подсистема аудита в Linux состоит из двух групп компонентов: в пространстве ядра это kauditd, а в пользовательском — auditd.
В общем виде схема работы подсистемы аудита выглядит следующим образом.
Ядро, принимая системные вызовы из user space, пропускает их через фильтры user , task , filesystem , exclude и exit .
- Фильтр user используется для фильтрации (исключения) событий, происходящих в пользовательском пространстве до отправки в auditd. Практически никогда не используется.
- Фильтр task применяется для системных вызовов fork( ) и clone( ) .
- Фильтр filesystem используется для исключения событий для конкретной файловой системы.
- Фильтр exclude задает исключения для событий.
- Фильтр exit проходят все системные вызовы. Обычно настраивают именно этот фильтр.
Через netlink( 7) сообщения отправляются из kauditd в auditd. При получении событий, демон auditd записывает их в лог (по умолчанию / var/ log/ audit/ audit. log ).
Настраивая фильтры с помощью утилиты auditctl, мы можем управлять потоком событий, который хотим получать. С помощью утилит ausearch, aureport, aulast удобно просматривать журнал аудита.
Давай теперь установим и настроим все подсистемы аудита. Установка крайне проста и не вызывает никаких сложностей:
Статус работы подсистемы аудита можно получить так:
$ sudo auditctl -s
enabled 1
failure 1
pid 885
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
loginuid_immutable 0 unlocked
Для теста есть возможность отправить текстовое сообщение в подсистему аудита и убедиться, что соответствующее событие попало в журнал аудита.
$ sudo auditctl -m helloaudit
$ sudo ausearch -m USER
----
type=USER msg=audit(08/31/2021 19:20:11.160:330699) : pid=305708 uid=root auid=andrey ses=5 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='text=helloaudit exe=/usr/sbin/auditctl hostname=rhel.ipa.localdomain addr=? terminal=pts/0 res=success'
Настройки демона auditd представлены в файле / etc/ audit/ auditd. conf . Конфиг по умолчанию рабочий и не требует изменений, оставляем его как есть.
Разберемся теперь, как управлять фильтрами kauditd. Все настройки фильтров группируются в файлы правил. Формат правил аналогичен синтаксису консольной программы auditctl. Демон auditd загружает эти правила последовательно при старте системы либо вручную по команде пользователя.
Важный момент: чтобы наши правила применялись после перезагрузки, необходимо записать их в файл, в каталог / etc/ audit/ rules. d/ .
Примеры правил ты можешь найти в каталоге / usr/ share/ audit/ sample-rules/ . Правила аудита бывают следующих типов:
-
Управляющие правила настраивают систему аудита и поведение агента. Все возможные опции перечислены в мане auditctl( 8) .
Правила файловой системы необходимы для наблюдения за файлом или каталогом, доступ к которым мы хотим контролировать. Формат правила следующий:
Ключ -w указывает на то, что это правило файловой системы. Далее следует путь к файлу или каталогу.
Ключ -p может содержать любые комбинации прав доступа r (чтение), w (запись), x (выполнение) и a (изменение атрибута).
Ключ -k задает имя правила, по которому впоследствии можно фильтровать логи.
Правила системных вызовов используются для мониторинга системных вызовов, выполняемых любым процессом или конкретным пользователем. Правило имеет следующий формат:
Ключ -a означает append (добавление) правила в фильтр.
Действие action может быть always (всегда создавать события) или never (никогда не создавать события).
Фильтр list содержит один из возможных вариантов: task , exit , user , filesystem или exclude .
-S указывает конкретный syscall (имя или номер); можно в одном правиле указывать сразу несколько syscall, каждый после своего ключа -S .
-F задает фильтр по полям. Рекомендуется всегда указывать разрядность, добавляя в правила фильтр -F arch=b64 .
Ключ -k — имя правила. Как и в правиле файловой системы, используется для маркировки событий для последующей фильтрации лога.
Важно отметить, что правила системных вызовов значительно влияют на производительность системы в целом. Старайся сократить их количество и объединяй правила, где это возможно.
В качестве тренировки создадим правило аудита для регистрации изменения файла / etc/ passwd .
Продолжение доступно только участникам
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Читайте также: