Группы пользователей и права доступа к файлам в Linux

LinuxBeginner
Практиковаться сейчас

Введение

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

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

Просмотр информации о текущем пользователе

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

Откройте терминал и введите следующую команду:

whoami

Команда whoami — это простой инструмент, который отображает имя текущего пользователя.

Вы должны увидеть результат, похожий на этот:

labex:project/ $ whoami
labex

Это означает, что в данный момент вы вошли в систему как пользователь "labex".

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

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

sudo расшифровывается как "Superuser Do". Она позволяет обычным пользователям выполнять команды от имени суперпользователя (или пользователя root).

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

Когда вы создаете нового пользователя с помощью adduser, система автоматически создает для него первичную группу с тем же именем, что и имя пользователя. Это называется схемой User Private Group (UPG).

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

sudo adduser jack

Эта команда выполнит следующие действия:

  1. Создаст нового пользователя с именем "jack".
  2. Создаст новую группу с именем "jack" (первичная группа).
  3. Добавит пользователя "jack" в группу "jack" в качестве его первичной группы.
  4. Создаст домашний каталог для пользователя jack по адресу /home/jack.

Вам будет предложено установить пароль для jack и предоставить некоторую дополнительную информацию. Вы можете установить простой пароль (например, "password") и нажимать Enter, чтобы использовать значения по умолчанию для остальных полей.

Примечание: При вводе пароля символы на экране не отображаются — это нормальное поведение из соображений безопасности. Просто введите пароль и нажмите Enter.

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

ls /home
id jack

Команда id покажет вам идентификатор пользователя (UID), идентификатор первичной группы (GID) и любые вторичные группы пользователя jack.

Изучение групп пользователей

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

id labex

Вы должны увидеть результат, похожий на этот:

uid=5000(labex) gid=5000(labex) groups=5000(labex),27(sudo),121(ssl-cert),5002(public)

Это показывает, что:

  • Пользователь labex имеет идентификатор пользователя (UID) 5000.
  • Первичная группа для labex также называется labex и имеет идентификатор группы (GID) 5000.
  • labex входит в несколько вторичных групп, включая sudo, ssl-cert и public.

Теперь давайте посмотрим все группы в системе:

cat /etc/group | sort

Команда cat отображает содержимое файла, /etc/group — это файл, где хранится информация о группах, а | sort сортирует вывод в алфавитном порядке.

Чтобы увидеть только группы, связанные с labex, используйте:

grep "labex" /etc/group

grep — это мощный инструмент поиска. Эта команда ищет строки, содержащие "labex", в файле групп.

Создание новой группы и добавление в нее пользователя

Давайте создадим новую группу под названием "developers" и добавим нашего нового пользователя "jack" в эту группу:

Сначала создайте новую группу:

sudo groupadd developers

Теперь добавьте jack в группу developers:

sudo usermod -aG developers jack

Команда usermod изменяет параметры учетной записи пользователя. Опция -aG добавляет пользователя в дополнительную группу.

Чтобы убедиться, что jack теперь является членом группы developers, используйте:

groups jack

Вы должны увидеть "developers" в списке групп пользователя jack.

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

Теперь, когда мы создали пользователя jack, давайте предоставим ему права sudo, добавив его в группу sudo. Но сначала давайте поймем, почему это важно:

Добавление пользователя в группу sudo позволяет ему выполнять команды с правами суперпользователя или root. Это полезно по нескольким причинам:

  1. Безопасность: Это позволяет пользователю выполнять административные задачи, не входя в систему под пользователем root, что обычно считается риском для безопасности.
  2. Подотчетность: Когда пользователи используют sudo, их действия записываются в журнал, что обеспечивает контрольный след административных действий.
  3. Удобство: Это избавляет от необходимости переключаться на учетную запись root для выполнения периодических административных задач.
  4. Гранулярный контроль: Конфигурация sudo может быть настроена так, чтобы разрешить определенным пользователям запускать только конкретные команды с повышенными привилегиями.

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

sudo usermod -aG sudo jack

Эта команда использует usermod для изменения учетной записи пользователя. Опция -aG означает "append to group" (добавить в группу), поэтому она добавляет jack в группу sudo, не удаляя его из других групп.

После добавления jack в группу sudo вы можете проверить его членство в группах с помощью:

groups jack

Вы должны увидеть sudo в списке групп пользователя jack.

Добавив jack в группу sudo, мы дали ему возможность выполнять административные задачи в системе. Однако важно помнить, что с большой силой приходит большая ответственность. Пользователям с правами sudo следует доверять, и они должны понимать последствия своих действий, так как они потенциально могут повлиять на всю систему.

Понимание и изменение прав доступа и владения файлами

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

  1. Сначала давайте изучим текущие права доступа в каталоге /home:
ls -l /home

Примечание: В команде ls -l второй символ — это строчная буква l (эль), а не цифра 1.

Вы увидите результат, похожий на этот:

total 8
drwxr-xr-x 2 jack  jack  4096 Jul 30 10:00 jack
drwxr-xr-x 5 labex labex 4096 Jul 30 09:55 labex

Давайте разберем, что это значит:

  • Первый символ указывает на тип файла (d для каталога, - для обычного файла).
  • Следующие 9 символов представляют права доступа для владельца, группы и остальных (именно в таком порядке).
  • r означает право на чтение, w — право на запись, x — право на выполнение.
  • Имя пользователя после этих символов — это владелец файла, за ним следует владелец группы.
  1. Теперь давайте создадим новый файл и изменим его владельца:
touch /home/labex/testfile
ls -l /home/labex/testfile
sudo chown jack:jack /home/labex/testfile
ls -l /home/labex/testfile

Команда touch создает пустой файл. Изначально владельцем файла будет labex. Затем мы используем chown, чтобы изменить владельца на jack как для пользователя, так и для группы.

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

  1. Наконец, давайте изменим права доступа к файлу:
sudo chmod 750 /home/labex/testfile
ls -l /home/labex/testfile

Команда chmod изменяет права доступа к файлу. Число 750 — это сокращенный способ установки прав:

  • 7 (владелец): Чтение (4) + Запись (2) + Выполнение (1) = 7
  • 5 (группа): Чтение (4) + Выполнение (1) = 5
  • 0 (остальные): Нет прав

Этот набор прав означает:

  • Владелец (jack) может читать, записывать и выполнять файл.
  • Члены группы jack могут читать и выполнять файл.
  • Остальные пользователи не имеют никаких прав доступа к файлу.

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

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

Резюме

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

  1. Просматривать информацию о пользователе.
  2. Создавать новых пользователей и понимать работу первичных групп.
  3. Изучать и изменять группы пользователей.
  4. Создавать новые группы и добавлять в них пользователей.
  5. Предоставлять пользователям права sudo.
  6. Просматривать и понимать права доступа к файлам.
  7. Изменять владельца файла.
  8. Изменять права доступа к файлам.

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