Управление специальными правами доступа и umask в Linux

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

Введение

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

Вы начнете с подготовки симуляции общей среды: создадите новую группу пользователей и каталог, а затем назначите соответствующие права владения и доступа. После этого вы измените значение umask для установки более строгих разрешений по умолчанию и проверите результат, создав новый файл. Наконец, вы установите sticky bit на общий каталог и убедитесь в его активации, гарантируя, что только владельцы файлов смогут удалять свои собственные данные в этом общем пространстве.

Подготовка среды и доступ к каталогу

На этом этапе вы подготовите окружение для управления специальными правами доступа. Это включает в себя создание выделенного каталога, имитирующего общее рабочее пространство исследовательской группы. Вы создадите новую группу пользователей, каталог, а затем назначите им владельцев и права доступа. Все операции будут выполняться в вашем проектном каталоге ~/project.

Для начала создадим новую группу с именем research. Эта группа будет представлять членов команды, имеющих доступ к общему каталогу. Используйте команду sudo groupadd для её создания. sudo необходим, так как управление группами является административной задачей.

sudo groupadd research

Затем создайте новый каталог с именем RandD внутри вашего каталога ~/project. Это будет наше основное рабочее пространство в данной лабораторной работе.

mkdir ~/project/RandD

Теперь измените групповую принадлежность созданного каталога RandD на группу research. Для этой цели используется команда chgrp.

sudo chgrp research ~/project/RandD

Чтобы гарантировать, что только владелец (пользователь labex) и члены группы research могут иметь доступ к этому каталогу, настройте права доступа. Мы воспользуемся командой chmod с числовым кодом 770. Этот код предоставляет права на чтение, запись и выполнение (rwx, что равно 4+2+1=7) владельцу и группе, и запрещает любые действия (---, что равно 0) для всех остальных.

chmod 770 ~/project/RandD

Вы можете проверить права доступа и владельца каталога с помощью команды ls -ld. Флаг -l выводит подробный список, а флаг -d заставляет команду показать информацию о самом каталоге, а не о его содержимом.

ls -ld ~/project/RandD

Вы должны увидеть вывод, похожий на этот, подтверждающий права (drwxrwx---), владельца (labex) и группу (research).

drwxrwx--- 2 labex research 4096 Dec 12 10:30 /home/labex/project/RandD

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

cd ~/project/RandD

Вы успешно настроили рабочую среду.

Ограничение прав доступа по умолчанию с помощью umask 027

На этом этапе вы узнаете, как управлять правами доступа для вновь создаваемых файлов с помощью команды umask. Когда вы создаете файл, система присваивает ему набор разрешений по умолчанию. Часто эти настройки слишком либеральны — например, они позволяют «прочим» (Other) пользователям читать ваши файлы. В защищенной среде, такой как наш каталог RandD, мы хотим это ограничить.

Команда umask (user file-creation mode mask — маска режима создания пользовательских файлов) определяет права, которые должны быть удалены из базовых разрешений при создании нового файла или каталога.

  • Для файлов базовое разрешение составляет 666 (rw-rw-rw-).
  • Для каталогов базовое разрешение составляет 777 (rwxrwxrwx).

Мы установим umask в значение 027. Это значение приказывает системе удалить следующие права:

  • Владелец (User): 0 — права не удаляются.
  • Группа (Group): 2 — удаляется право на запись.
  • Прочие (Other): 7 (4+2+1) — удаляются права на чтение, запись и выполнение.

Это означает, что любой новый файл будет иметь права 666 - 027 = 640 (rw-r-----), а любой новый каталог — 777 - 027 = 750 (rwxr-x---).

Сначала измените права по умолчанию для текущей сессии терминала, введя umask 027 в командной строке. Убедитесь, что вы все еще находитесь в каталоге ~/project/RandD.

umask 027

Затем проверьте новое значение umask, введя саму команду без параметров.

umask

Команда должна отобразить новое значение маски. Ведущий ноль указывает на то, что специальные разрешения (такие как sticky bit, о котором вы узнаете позже) не являются частью маски.

027

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

Создание файла и проверка новых разрешений umask

На этом этапе вы примените новую настройку umask на практике, создав файл. Это продемонстрирует, как настроенные вами ранее разрешения применяются автоматически, защищая ваш новый документ от несанкционированного доступа. Вы должны по-прежнему находиться в каталоге ~/project/RandD.

Давайте создадим новый пустой файл с именем schedule.odt с помощью команды touch. Команда touch — это простой способ создания пустых файлов или обновления метки времени существующих.

touch schedule.odt

Теперь, когда файл создан, необходимо проверить его права доступа. Используйте команду ls -l, чтобы вывести подробную информацию о файле schedule.odt.

ls -l schedule.odt

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

-rw-r----- 1 labex research 0 Dec 12 10:35 schedule.odt

Разберем строку разрешений -rw-r-----:

  • Первый символ - указывает на то, что это обычный файл.
  • Следующие три символа rw- — это права для владельца (user): чтение и запись. Это соответствует числовому значению 6.
  • Следующие три символа r-- — это права для группы: только чтение. Это соответствует числовому значению 4.
  • Последние три символа --- — это права для всех остальных (other): отсутствие каких-либо прав. Это соответствует числовому значению 0.

Эти разрешения (640) являются прямым результатом применения umask 027 к системным разрешениям по умолчанию 666. Маска успешно удалила право на запись для группы и все права для прочих пользователей, как мы и планировали.

Установка Sticky Bit на каталог с помощью chmod 1771

На этом этапе вы решите распространенную проблему в общих каталогах. В данный момент любой член группы research может удалить любой файл в каталоге ~/project/RandD, даже если этот файл был создан другим пользователем. Это происходит потому, что право на запись в каталог позволяет создавать и удалять в нем файлы. Чтобы предотвратить случайное или преднамеренное удаление чужих данных, вы установите специальное разрешение, известное как "sticky bit" (липкий бит).

Sticky bit, примененный к каталогу, меняет логику работы: он гарантирует, что файл внутри каталога может быть удален или переименован только владельцем этого файла, владельцем каталога или суперпользователем (root). Это идеальное решение для сред совместной работы, таких как наш каталог RandD.

Для установки липкого бита вы воспользуетесь командой chmod с четырехзначным восьмеричным числом. Команда будет выглядеть так: chmod 1771 RandD.

  • Первая цифра 1 представляет sticky bit.
  • Следующие три цифры 771 устанавливают стандартные права: rwx для владельца, rwx для группы и --x для остальных.

Сначала вам нужно перейти в родительский каталог для RandD, чтобы изменить его права. Поскольку вы сейчас находитесь в ~/project/RandD, используйте команду cd .., чтобы подняться на один уровень выше в ~/project.

cd ..

Теперь из каталога ~/project примените sticky bit к каталогу RandD.

chmod 1771 RandD

Липкий бит установлен. На последнем этапе вы воспользуетесь командой ls -l, чтобы увидеть, как отображается это специальное разрешение, и подтвердить его активацию.

Проверка прав Sticky Bit с помощью ls -l

На этом заключительном этапе вы убедитесь, что sticky bit был правильно применен к каталогу RandD. Команда ls -l предоставляет визуальный индикатор для специальных разрешений. Вы должны по-прежнему находиться в каталоге ~/project.

В командной строке введите ls -ld RandD, чтобы просмотреть права доступа самого каталога.

ls -ld RandD

Внимательно изучите вывод. Он должен выглядеть примерно так:

drwxrwx--t 2 labex research 4096 Dec 12 10:45 RandD

Ключевое изменение находится в строке разрешений: drwxrwx--t.

  • Буква d указывает на то, что это каталог.
  • Первые rwx показывают, что владелец (labex) имеет полные права.
  • Вторые rwx показывают, что группа research имеет полные права.
  • В последней части --t отображается sticky bit. Буква t заменяет то, что обычно является правом на выполнение (x) для категории «прочие». Строчная буква t означает, что установлены и sticky bit, и право на выполнение для прочих пользователей. Это подтверждает, что ваша команда chmod 1771 выполнена успешно.

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

Резюме

В ходе этой лабораторной работы вы научились подготавливать защищенный общий каталог для группы пользователей. Это включало создание новой группы с помощью groupadd, создание каталога и использование команд chgrp и chmod для назначения правильного владельца группы и ограничительных прав доступа (770). Вы также попрактиковались в управлении правами доступа по умолчанию для новых файлов и каталогов, установив конкретное значение umask (027), и проверили результат, создав новый файл и изучив его атрибуты.

Кроме того, вы изучили специальные разрешения, применив sticky bit к общему каталогу с помощью команды chmod 1771. Вы узнали, что липкий бит необходим для сред совместной работы, так как он гарантирует, что пользователи могут удалять или переименовывать только те файлы, которыми они владеют лично, предотвращая случайное или злонамеренное удаление чужой работы. Наконец, вы убедились в правильности применения липкого бита, используя ls -l и идентифицировав символ t в строке прав доступа каталога.