Список файлов, к которым есть доступ для групп пользователей awk для чтения

Обновлено: 04.07.2024

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

Типы групп в Linux

В Linux есть два типа групп, содержащих несколько пользователей:

  • Основная группа или группа входа: это группа, связанная с файлами, созданными конкретным пользователем. Имя этой основной группы совпадает с именем пользователя, который создаст этот конкретный файл. Каждый пользователь должен принадлежать ровно к одной группе.
  • Вторичная или дополнительная группа: этот тип группы можно использовать для предоставления привилегий группе пользователей, принадлежащих к этой группе. Пользователь может быть назначен ни в одну из дополнительных групп или в несколько дополнительных групп.

Список пользователей в Linux

Чтобы получить список всех пользователей, присутствующих в системе Linux, вы можете запустить команду cat в файле «/etc/passwd». Эта команда поможет вернуть количество пользователей, присутствующих в системе Linux.

Кроме того, используйте команду "меньше" или "больше" для навигации по списку пользователей.

$cat/etc/passwd

$ меньше /etc/passwd

$ more/etc/passwd


Список пользователей, использующих файл /etc/passwd

Для вывода списка имен пользователей в системе Linux вы можете использовать команду «cat», а затем направить вывод в команду «cut», чтобы изолировать имена пользователей, доступные в первом столбце списка. Запустите указанную ниже команду, как показано ниже.

Список имен пользователей с помощью awk

Чтобы получить список имен пользователей в системе Linux, используйте команду «cat», а затем направьте вывод в команду «awk», которая работает аналогично команде «cat».

Здесь мы используем интерпретатор «awk», как показано ниже.


Список имен пользователей с помощью getent

Используйте команду getent вместе с аргументом «passwd», чтобы получить список имен пользователей, доступных в Linux. Кроме того, вы можете указать необязательного пользователя, которого хотите отобразить на экране.

Команда getent извлекает записи из баз данных коммутатора службы имен. Это утилита Unix для извлечения записей из различных источников данных. Проверьте список источников данных, доступных в nsswitch.conf, который хранится в /etc.


Если вы хотите получить список всех пользователей с помощью функции getent, вы можете запустить следующую команду.


Список подключенных пользователей на вашем хосте Linux

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


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

Кроме того, вы можете использовать команду «users», чтобы получить тот же результат, что и команда «who», как показано ниже.

Список групп с использованием файла /etc/group

Используйте наиболее часто используемую команду «cat», чтобы получить список групп, доступных в файле «/etc/group». Когда вы запустите команду, вы получите список групп.

$cat/etc/группа

$ меньше / etc / группа

ещё $/etc/группа


Но если вы ищете имена групп, присутствующие в файле «/etc/group», используйте команду cat, а затем направьте вывод в команду «cut», как показано ниже.


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


Вывод групп с помощью getent

Вы можете использовать команду «getent» для получения списка пользователей в системе Linux.

Если вы не предоставите ключ, вы получите весь групповой файл.


Список групп для текущего пользователя

Использование команды «группа» отобразит список групп, в которых состоит конкретный пользователь.

Если вы не укажете никаких аргументов, вы получите список групп для пользователя, который запускает команду.


Заключение

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

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

Об авторе

Симран Каур

Симран работает техническим писателем. Выпускник MS Computer Science из известного центра CS, также известного как Силиконовая долина, также является редактором веб-сайта. Ей нравится писать на любые технические темы, включая программирование, алгоритмы, облачные технологии, науку о данных и искусственный интеллект. Ей нравятся путешествия, рисование и садоводство.

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

Введение

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

Предпосылки

Чтобы следовать этому руководству, у вас должны быть:

Оглавление

Разрешения на доступ к файлам

Давайте начнем с обсуждения прав собственности на файлы Linux.

  1. Пользователь: владелец файла (человек, создавший файл).
  2. Группа: группа может содержать несколько пользователей. Таким образом, все пользователи в этой группе будут иметь одинаковые разрешения. Это упрощает задачу, чем назначать разрешения для каждого пользователя, которого вы хотите.
  3. Другое: любой человек имеет доступ к этому файлу, этот человек не создал файл и не состоит ни в одной группе, у которой есть доступ к этому файлу.

При выполнении следующей команды:

Затем вы увидите права доступа к файлу, как показано ниже:

Пример разрешений

Мы будем работать с этой частью «-rw-r–r–».

Символы означают:

  • 'r' = читать.
  • 'w' = написать.
  • 'x' = выполнить.
  • ‘-’ = нет разрешения.

Объяснить разрешения

Как мы видим выше, пустая первая часть означает, что это файл. Если бы это был каталог, то это была бы буква «d». Вторая часть означает, что пользователь «Home» имеет права на чтение и запись, но не на выполнение. Группа и другие пользователи имеют только право на чтение.

Давайте изменим разрешения с помощью команды chmod.

Эта команда добавит разрешение на запись для других пользователей в мой текстовый файл «section.txt».

Теперь, если вы попытаетесь выполнить ls -l, вы увидите -rw-r--rw- .

«o» относится к другим, «g» — к группе, «u» — к пользователю и «a» — ко всем.

Теперь давайте добавим пользователю разрешение на выполнение с помощью:

Разрешения будут -rwxr--rw- .

Если вы хотите удалить разрешение, вы можете использовать тот же метод, но с «-» вместо «+». Например, давайте удалим разрешение на выполнение у пользователя:

Кроме того, вы можете использовать символический режим для изменения разрешений следующим образом:

td>
Номер Разрешение
0 Нет разрешения
1 Выполнить
2 Записать
3 Выполнение и запись
4 Чтение
5 Чтение и выполнение
6 Чтение и запись
7 Чтение, запись и выполнение

Например, давайте дадим каждому разрешение для всех с помощью:

Пример символического режима

Тогда разрешения будут: -rwxrwxrwx .

Давайте удалим выполнение из группы и запись из другого:

Разрешения будут следующими: -rwxrw-r-x .

Учетные записи пользователей

Создать пользователя

Мы можем создать новую учетную запись пользователя, введя следующую команду:

Убедиться, что пользователь создан, можно двумя способами:

И вывод будет примерно таким:

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

Итак, мы можем выполнить команду cat /etc/passwd и увидеть нового созданного пользователя.

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

Чтобы создать нового пользователя с его каталогами, мы можем выполнить:

Если вы перейдете в каталог /home, вы заметите, что создается новый каталог с именем testuser.

После этого вам необходимо установить новый пароль для тестового пользователя:

Мы заметили, что для создания нового пользователя требуется много команд, поэтому есть команда, которая все автоматизирует:

После создания нового пользователя и установки для него пароля вы можете войти двумя способами:

  1. Через графический интерфейс.
  2. В терминале: su - testuser .

Удалить пользователя

Как и в процессе добавления пользователей, есть две команды, которые удаляют пользователя.

Если вы попробуете эту команду, вы заметите, что каталог пользователя не был удален, и вам нужно удалить его самостоятельно.

Вы можете использовать эту автоматическую команду, чтобы сделать все за вас:

Группы пользователей

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

Создать группу

Вы можете увидеть все имеющиеся у вас группы, открыв следующий файл:

Давайте создадим группу с названием раздел с помощью:

Добавить пользователя в группу

Мы добавим пользователя testuser в группу разделов следующим образом:

Удалить пользователя из группы

Вы можете удалить тестового пользователя из группы с помощью:

Удалить группу

Давайте удалим предыдущую группу:

Заключение

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

Утилиты Linux часто следуют философии дизайна Unix. Рекомендуется, чтобы инструменты были небольшими, использовали обычные текстовые файлы для ввода и вывода и работали по модульному принципу. Благодаря этому наследию у нас есть отличные функции обработки текста с помощью таких инструментов, как sed и awk .

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

Запустите интерактивный терминал!

Основной синтаксис

Команда awk включена по умолчанию во все современные системы Linux, поэтому вам не нужно ее устанавливать, чтобы начать использовать.

awk наиболее полезен при работе с текстовыми файлами, которые имеют предсказуемый формат. Например, он отлично подходит для анализа и обработки табличных данных. Он работает построчно и перебирает весь файл.

По умолчанию для разделения полей используются пробелы (пробелы, табуляция и т. д.). К счастью, многие файлы конфигурации в вашей системе Linux используют этот формат.

Основной формат команды awk:

В любой команде awk можно опустить либо часть поиска, либо часть действия. По умолчанию действие, предпринятое, если часть «действие» не указана, — «печать». Это просто печатает все совпадающие строки.

Если часть поиска не указана, awk выполняет действие, указанное в каждой строке.

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

В простейшей форме вы можете использовать awk как cat для вывода на экран всех строк текстового файла.

Создайте файл Favorite_food.txt, в котором перечислены любимые блюда группы друзей:

Теперь используйте команду awk для вывода файла на экран:

Вы увидите файл, напечатанный на экране:

Это не очень полезно. Давайте попробуем возможности фильтрации поиска awk, выполнив поиск в файле текста «песок»:

Как видите, теперь awk печатает только те строки, в которых есть символы «песок».

Используя регулярные выражения, вы можете настроить таргетинг на определенные части текста. Чтобы отображалась только строка, начинающаяся с букв «песок», используйте регулярное выражение ^sand :

На этот раз отображается только одна строка:

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

Вы можете ссылаться на каждый столбец (разделенный пробелами) с помощью переменных, связанных с их номером столбца.Например, первый столбец равен $1 , второй — $2 , и вы можете сослаться на всю строку с помощью $0 .

Внутренние переменные и расширенный формат

Команда awk использует некоторые внутренние переменные для назначения определенных фрагментов информации при обработке файла.

  • FILENAME: ссылка на текущий входной файл.
  • FNR: указывает номер текущей записи относительно текущего входного файла. Например, если у вас есть два входных файла, вы увидите номер записи каждого файла, а не общее количество.
  • FS: Текущий разделитель полей, используемый для обозначения каждого поля в записи. По умолчанию установлено пробел.
  • NF: количество полей в текущей записи.
  • NR: номер текущей записи.
  • OFS: разделитель полей для выходных данных. По умолчанию установлено пробел.
  • ORS: разделитель записей для выходных данных. По умолчанию это символ новой строки.
  • RS: разделитель записей, используемый для разделения отдельных записей во входном файле. По умолчанию это символ новой строки.

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

Это подводит нас к еще одному важному понятию. Синтаксис awk немного сложнее того, что вы использовали до сих пор. Также есть необязательные блоки BEGIN и END, которые могут содержать команды для выполнения до и после обработки файла соответственно.

Это делает наш расширенный синтаксис примерно таким:

Ключевые слова BEGIN и END представляют собой определенные наборы условий, как и параметры поиска. Они совпадают до и после обработки документа.

Это означает, что вы можете изменить некоторые внутренние переменные в разделе BEGIN. Например, файл /etc/passwd разделен двоеточием ( : ) вместо пробела.

Чтобы распечатать первый столбец этого файла, выполните следующую команду:

Вы можете использовать блоки BEGIN и END для печати информации о полях, которые вы печатаете. Используйте следующую команду, чтобы преобразовать данные из файла в таблицу, хорошо разделенную вкладками с помощью \t :

Вы увидите следующий вывод:

Как видите, вы можете довольно красиво форматировать объекты, используя некоторые возможности awk.

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

И вы увидите следующий вывод:

Теперь давайте посмотрим, как искать текст в полях вывода.

Поиск по полям и составные выражения

В одном из предыдущих примеров вы напечатали в файле Favorite_food.txt строку, которая начиналась со слова «песок». Это было легко, потому что вы искали начало всей строки.

Что, если вы хотите узнать, соответствует ли шаблон поиска началу поля вместо этого?

Создайте новую версию файла favourite_food.txt, в которой перед едой каждого человека будет добавлен номер блюда:

Если вы хотите найти в этом файле все продукты, названия которых начинаются с "са", попробуйте сделать следующее:

Показывает все строки, содержащие «sa»:

Здесь вы сопоставляете любой экземпляр «sa» в слове. Это приводит к включению таких вещей, как «васаби» с рисунком посередине или «песочный», которого нет в нужном столбце. В этом случае вас интересуют только слова, начинающиеся с «sa» в столбце второй.

Вы можете указать awk выполнять поиск только в начале второго столбца, используя следующую команду:

Как видите, это позволяет нам искать совпадения только в начале второго столбца.

Часть field_num ~ указывает, что awk должен обращать внимание только на второй столбец.

Вы можете так же легко искать элементы, которые не соответствуют друг другу, включив "!" перед тильдой (~). Эта команда вернет все строки, в которых нет еды, начинающейся с «sa»:

Если позже вы решите, что вас интересуют только строки, которые не начинаются с «sa», а номер элемента меньше 5, вы можете использовать такое составное выражение:

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

Вы увидите следующий вывод:

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

Обработка вывода из других программ

Вы можете использовать команду awk для анализа вывода других программ, а не указывать имя файла.Например, вы можете использовать awk для анализа адреса IPv4 из команды ip.

Команда ip a отображает IP-адрес, широковещательный адрес и другую информацию обо всех сетевых интерфейсах на вашем компьютере. Чтобы отобразить информацию для интерфейса с именем eth0, используйте эту команду:

Вы увидите следующие результаты:

Вы можете использовать awk для нацеливания на строку inet, а затем распечатать только IP-адрес:

Флаг -F указывает awk разделять символы косой чертой или пробелами, используя регулярное выражение [\/ ]+ . Это разбивает строку inet 172.17.0.11/16 на отдельные поля. IP-адрес находится в третьем поле, потому что пробелы в начале строки также считаются полем, поскольку вы разделили пробелы, а также косые черты. Обратите внимание, что в этом случае awk обрабатывал последовательные пробелы как один пробел.

Вывод показывает IP-адрес:

Вы найдете много мест, где можно использовать awk для поиска или анализа вывода других команд.

Заключение

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

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.


Крис Хоффман

< бр />

Крис Хоффман
Главный редактор

Крис Хоффман – главный редактор How-To Geek. Он писал о технологиях более десяти лет и два года был обозревателем PCWorld. Крис писал для The New York Times, давал интервью в качестве эксперта по технологиям на телевизионных станциях, таких как NBC 6 в Майами, и освещал свою работу в таких новостных агентствах, как BBC. С 2011 года Крис написал более 2000 статей, которые были прочитаны почти миллиард раз — и это только здесь, в How-To Geek. Подробнее.


Изменить группу, с которой связан пользователь, — довольно простая задача, но не все знают команды, особенно для добавления пользователя во вторичную группу. Мы рассмотрим все сценарии за вас.

Учетные записи пользователей могут быть назначены одной или нескольким группам в Linux. Вы можете настроить права доступа к файлам и другие привилегии по группам. Например, в Ubuntu только пользователи из группы sudo могут использовать команду sudo для получения повышенных разрешений.

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

Добавить новую группу

Если вы хотите создать новую группу в своей системе, используйте команду groupadd после команды, заменив new_group на имя группы, которую вы хотите создать. Вам также нужно будет использовать sudo с этой командой (или в дистрибутивах Linux, которые не используют sudo , вам нужно будет запустить команду su отдельно, чтобы получить повышенные разрешения перед запуском команды).


Добавить существующую учетную запись пользователя в группу

Чтобы добавить существующую учетную запись пользователя в группу в вашей системе, используйте команду usermod, заменив examplegroup на имя группы, в которую вы хотите добавить пользователя, а exampleusername на имя пользователя, которого вы хотите добавить.< /p>

Например, чтобы добавить пользователя geek в группу sudo , используйте следующую команду:


Изменить основную группу пользователя

Хотя учетная запись пользователя может входить в состав нескольких групп, одна из групп всегда является «основной», а остальные — «дополнительными».Процесс входа пользователя, а также файлы и папки, которые создает пользователь, будут отнесены к основной группе.

Чтобы изменить основную группу, в которую назначен пользователь, запустите команду usermod, заменив examplegroup на имя группы, которую вы хотите сделать основной, а exampleusername на имя учетной записи пользователя.

Обратите внимание на -g здесь. Когда вы используете строчную букву g, вы назначаете основную группу. Когда вы используете заглавную букву -G , как указано выше, вы назначаете новую дополнительную группу.


Просмотр групп, которым назначена учетная запись пользователя

Чтобы просмотреть группы, которым назначена текущая учетная запись пользователя, запустите команду groups. Вы увидите список групп.

Чтобы просмотреть числовые идентификаторы, связанные с каждой группой, вместо этого выполните команду id:


Чтобы просмотреть группы, которым назначена другая учетная запись пользователя, запустите команду groups и укажите имя учетной записи пользователя.

Вы также можете просмотреть числовые идентификаторы, связанные с каждой группой, запустив команду id и указав имя пользователя.

Первая группа в списке групп или группа, показанная после «gid=» в списке идентификаторов, является основной группой учетной записи пользователя. Остальные группы являются второстепенными. Итак, на снимке экрана ниже основной группой учетной записи пользователя является example .


Создать нового пользователя и назначить группу одной командой

Иногда вам может понадобиться создать новую учетную запись пользователя, которая имеет доступ к определенному ресурсу или каталогу, например нового пользователя FTP. Вы можете указать группы, которым будет назначена учетная запись пользователя, при создании учетной записи пользователя с помощью команды useradd, например:

Например, чтобы создать новую учетную запись пользователя с именем jsmith и назначить эту учетную запись группе ftp, выполните:

Конечно, впоследствии вы захотите назначить этому пользователю пароль:


Добавить пользователя в несколько групп

При назначении дополнительных групп учетной записи пользователя вы можете легко назначить несколько групп одновременно, разделив список запятой.

Например, чтобы добавить пользователя с именем geek в группы ftp, sudo и example, нужно выполнить:

Вы можете указать любое количество групп — просто разделите их запятой.


Просмотреть все группы в системе

Если вы хотите просмотреть список всех групп в вашей системе, вы можете использовать команду getent:

В этом выводе также показано, какие учетные записи пользователей являются членами каких групп. Итак, на снимке экрана ниже мы видим, что учетные записи пользователей syslog и chris являются членами группы adm.


Это должно охватывать все, что вам нужно знать о добавлении пользователей в группы в Linux.

< /tbody>
Команды Linux
Файлы tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm
Процессы alias · screen · top · nice · renice · прогресс · strace · systemd · tmux · chsh · история · at · пакетное · бесплатное · которое · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · стена · yes · kill · спать · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · halt · poweroff · passwd · lscpu · crontab · date · bg · fg
Сеть netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · копать · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw
  • › Как использовать ограниченную оболочку, чтобы ограничить возможности пользователя Linux
  • › Как использовать команду chmod в Linux
  • › How-To Geek ищет авторов Linux
  • › Как изменить данные пользователя с помощью chfn и usermod в Linux
  • › Как установить Arch Linux на ПК
  • › Что такое root в Linux?
  • › Как узнать, к каким группам принадлежит ваша учетная запись пользователя Linux
  • › Что означает XD и как вы его используете?

Читайте также: