Управление доступом к файлам в Red Hat Enterprise Linux

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

Введение

В этом лабораторном практикуме вы получите полное понимание управления правами доступа к файловой системе Linux, что является важным навыком для любого администратора RHEL. Вы научитесь интерпретировать права доступа с помощью команды ls -l, изменять их с помощью chmod в символическом и восьмеричном режимах, а также изменять владельца файлов с помощью chown. Кроме того, вы изучите и примените специальные права, такие как SUID, SGID и Sticky Bit, и эффективно настроите права по умолчанию с помощью umask. Этот практический опыт снабдит вас необходимыми знаниями для обеспечения безопасности и контроля доступа к файлам и каталогам в среде Linux.

Интерпретация разрешений файловой системы Linux с помощью ls -l

В этом шаге вы научитесь интерпретировать права доступа к файловой системе Linux с помощью команды ls -l. Понимание прав доступа имеет решающее значение для управления доступом к файлам и каталогам в среде Linux.

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

  • Пользователь (владелец): Права доступа для владельца файла.
  • Группа: Права доступа для пользователей, являющихся членами группы файла.
  • Другие: Права доступа для всех остальных пользователей системы.

Каждая категория может иметь три типа прав:

  • Чтение (r): Разрешает просмотр содержимого файла или вывод содержимого каталога.
  • Запись (w): Разрешает изменение содержимого файла или создание/удаление файлов внутри каталога.
  • Исполнение (x): Разрешает запуск исполняемого файла или вход в каталог.

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

Сначала создайте каталог с именем my_files:

mkdir ~/project/my_files

Затем создайте пустой файл с именем document.txt внутри каталога my_files:

touch ~/project/my_files/document.txt

Теперь используйте команду ls -l, чтобы просмотреть подробные права доступа к файлу document.txt. Команда ls -l предоставляет длинный список, включающий права доступа, владельца, группу, размер и дату изменения файла.

ls -l ~/project/my_files/document.txt

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

-rw-rw-r-- 1 labex labex 0 Июн  6 17:36 /home/labex/project/my_files/document.txt

Давайте разберём первую часть вывода, -rw-rw-r--.:

  • Первый символ (-) указывает тип файла.
    • - означает, что это обычный файл.
    • d означает, что это каталог.
    • l означает, что это символическая ссылка.
  • Следующие девять символов разделены на три набора по три:
    • rw-: Права доступа для владельца (labex). r (чтение), w (запись), - (нет исполнения).
    • rw-: Права доступа для группы (labex). r (чтение), w (запись), - (нет исполнения).
    • r--: Права доступа для других. r (чтение), - (нет записи), - (нет исполнения).

Это означает, что пользователь labex (владелец) и пользователи в группе labex могут читать и писать в document.txt, в то время как все остальные пользователи могут только читать его.

Теперь давайте рассмотрим права доступа к самому каталогу my_files. При использовании ls -l для каталога, он выводит содержимое каталога. Чтобы просмотреть права доступа к самому каталогу, вам нужно использовать опцию -d с ls -l.

ls -ld ~/project/my_files

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

drwxrwxr-x 2 labex labex 4096 Июн  6 17:36 /home/labex/project/my_files

Давайте интерпретируем права drwxrwxr-x.:

  • Первый символ (d) указывает, что это каталог.
  • rwx: Права доступа для владельца (labex). r (чтение), w (запись), x (исполнение).
  • rwx: Права доступа для группы (labex). r (чтение), w (запись), x (исполнение).
  • r-x: Права доступа для других. r (чтение), - (нет записи), x (исполнение).

Для каталогов:

  • r (чтение) позволяет просмотреть содержимое каталога.
  • w (запись) позволяет создавать, удалять или переименовывать файлы внутри каталога.
  • x (исполнение) позволяет войти в каталог (с помощью cd) и получить доступ к его файлам и подкаталогам.

Это означает, что пользователь labex и пользователи в группе labex могут просматривать, создавать/удалять файлы и входить в каталог my_files. Другие пользователи могут просматривать и входить в каталог, но не могут создавать или удалять файлы внутри него.

Изменение разрешений файлов с помощью chmod (символический режим)

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

Команда chmod в символическом режиме следует синтаксису: chmod WHO OPERATION PERMISSIONS FILE.

  • WHO: Указывает, на кого распространяется изменение прав доступа.
    • u: пользователь (владелец)
    • g: группа
    • o: другие
    • a: все (пользователь, группа и другие)
  • OPERATION: Указывает, как изменить права доступа.
    • +: Добавить право.
    • -: Удалить право.
    • =: Установить права точно так, как указано, перезаписывая существующие.
  • PERMISSIONS: Указывает тип права доступа.
    • r: чтение
    • w: запись
    • x: выполнение

Продолжим работу с файлом ~/project/my_files/document.txt и каталогом ~/project/my_files, созданными на предыдущем шаге.

Сначала удалим право записи для группы и других пользователей из файла document.txt. Вспомним, что текущие права доступа — -rw-rw-r--.

chmod go-w ~/project/my_files/document.txt

Теперь проверим изменения с помощью ls -l:

ls -l ~/project/my_files/document.txt

Вывод должен теперь выглядеть так:

-rw-r--r-- 1 labex labex 0 Июн  6 17:36 /home/labex/project/my_files/document.txt

Обратите внимание, что право w (запись) для группы и других пользователей было удалено.

Далее добавим право выполнения для владельца (u) к файлу document.txt. Это часто делается для скриптов, чтобы сделать их исполняемыми.

chmod u+x ~/project/my_files/document.txt

Проверьте изменения:

ls -l ~/project/my_files/document.txt

Вывод должен быть таким:

-rwxr--r-- 1 labex labex 0 Июн  6 17:36 /home/labex/project/my_files/document.txt

Теперь владелец имеет право выполнения (x).

Теперь поработаем с каталогом ~/project/my_files. Текущие права доступа — drwxrwxr-x. Удалим право записи для других (o) из каталога.

chmod o-w ~/project/my_files

Проверьте изменения:

ls -ld ~/project/my_files

Вывод должен быть таким:

drwxr-xr-x 2 labex labex 4096 Июн  6 17:36 /home/labex/project/my_files

Подождите, почему o-w не изменил вывод? Это потому, что у o (другие) уже не было права записи. r-x для других означает чтение и выполнение, но не запись. Это демонстрирует, что chmod применяет изменения только если они отличаются от текущего состояния.

Попробуем установить права точно. Мы установим права для document.txt на rw-r--r-- для всех (владелец, группа, другие). Это означает, что владелец получает чтение/запись, группа — чтение, а другие — чтение.

chmod a=rw,g=r,o=r ~/project/my_files/document.txt

Проверьте изменения:

ls -l ~/project/my_files/document.txt

Вывод должен быть таким:

-rw-r--r-- 1 labex labex 0 Июн  6 17:36 /home/labex/project/my_files/document.txt

Эта команда a=rw,g=r,o=r немного избыточна, так как a=rw применит rw ко всем, затем g=r установит для группы r (перезаписывая w из a=rw), а o=r установит для других r (перезаписывая w из a=rw). Более простой способ достижения rw-r--r--chmod u=rw,go=r. Попробуем это.

chmod u=rw,go=r ~/project/my_files/document.txt

Проверьте изменения:

ls -l ~/project/my_files/document.txt

Вывод должен остаться таким:

-rw-r--r-- 1 labex labex 0 Июн  6 17:36 /home/labex/project/my_files/document.txt

Наконец, сделаем document.txt исполняемым для всех.

chmod a+x ~/project/my_files/document.txt

Проверьте изменения:

ls -l ~/project/my_files/document.txt

Вывод должен быть таким:

-rwxr-xr-x 1 labex labex 0 Июн  6 17:36 /home/labex/project/my_files/document.txt

Изменение разрешений файлов с помощью chmod (восьмеричный режим)

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

Числовые значения для прав доступа:

  • Чтение (r): 4
  • Запись (w): 2
  • Выполнение (x): 1
  • Отсутствие прав (-): 0

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

Например:

  • rwx (чтение, запись, выполнение) = 4 + 2 + 1 = 7
  • rw- (чтение, запись, без выполнения) = 4 + 2 + 0 = 6
  • r-x (чтение, без записи, выполнение) = 4 + 0 + 1 = 5
  • r-- (чтение, без записи, без выполнения) = 4 + 0 + 0 = 4
  • --- (без прав) = 0 + 0 + 0 = 0

Команда chmod в восьмеричном режиме использует трёхзначное число, где каждая цифра представляет права доступа для владельца, группы и других пользователей соответственно. Синтаксис: chmod OGO FILE.

  • O: Восьмеричное значение прав владельца.
  • G: Восьмеричное значение прав группы.
  • O: Восьмеричное значение прав других.

Продолжим работу с файлом ~/project/my_files/document.txt и каталогом ~/project/my_files.

Сначала установим права доступа для document.txt на rw-r--r--.

  • Владелец: rw- = 6
  • Группа: r-- = 4
  • Другие: r-- = 4

Таким образом, восьмеричное значение будет 644.

chmod 644 ~/project/my_files/document.txt

Проверьте изменения:

ls -l ~/project/my_files/document.txt

Вывод должен быть таким:

-rw-r--r-- 1 labex labex 0 Июн  6 00:48 /home/labex/project/my_files/document.txt

Далее сделаем document.txt исполняемым только для владельца, сохранив чтение/запись для владельца и только чтение для группы и других. Это означает, что владелец будет иметь rwx (7), группа r-- (4), а другие r-- (4). Восьмеричное значение будет 744.

chmod 744 ~/project/my_files/document.txt

Проверьте изменения:

ls -l ~/project/my_files/document.txt

Вывод должен быть таким:

-rwxr--r-- 1 labex labex 0 Июн  6 00:48 /home/labex/project/my_files/document.txt

Теперь изменим права доступа к каталогу ~/project/my_files. Текущие права доступа — drwxr-xr-x. Установим права доступа на rwxr-x---.

  • Владелец: rwx = 7
  • Группа: r-x = 5
  • Другие: --- = 0

Таким образом, восьмеричное значение будет 750.

chmod 750 ~/project/my_files

Проверьте изменения:

ls -ld ~/project/my_files

Вывод должен быть таким:

drwxr-x--- 2 labex labex 26 Июн  6 00:48 /home/labex/project/my_files

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

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

echo '#!/bin/bash' > ~/project/my_script.sh
echo 'echo "Hello from my script!"' >> ~/project/my_script.sh

По умолчанию новые файлы не исполняемые. Проверим права доступа:

ls -l ~/project/my_script.sh

Вероятно, вы увидите права доступа, такие как -rw-r--r--. Чтобы сделать его исполняемым для владельца и группы, но не для других, нам нужен rwxrwx---.

  • Владелец: rwx = 7
  • Группа: rwx = 7
  • Другие: --- = 0

Таким образом, восьмеричное значение будет 770.

chmod 770 ~/project/my_script.sh

Проверьте изменения:

ls -l ~/project/my_script.sh

Вывод должен быть таким:

-rwxrwx--- 1 labex labex 41 Июн  6 00:52 /home/labex/project/my_script.sh

Теперь можно выполнить скрипт:

~/project/my_script.sh

Вы должны увидеть вывод:

Hello from my script!

Изменение владельца файла с помощью chown

В этом шаге вы научитесь изменять владельца и группу файлов и каталогов с помощью команды chown. Это важная административная задача, так как только пользователь root может изменить владельца файла. Пользователь labex имеет права sudo, что позволит вам выполнить эти действия.

Основной синтаксис для chown следующий: chown [OPTIONS] NEW_OWNER[:NEW_GROUP] FILE(s).

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

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

sudo groupadd devs

Затем создайте нового пользователя под названием developer и добавьте его в группу devs. Для этой демонстрации мы создадим системного пользователя без домашнего каталога или оболочки входа.

sudo useradd -r -g devs -s /sbin/nologin developer

Теперь изменим владельца файла ~/project/my_files/document.txt с labex на developer.

sudo chown developer ~/project/my_files/document.txt

Проверьте изменения с помощью ls -l:

ls -l ~/project/my_files/document.txt

Вывод должен теперь показывать developer как владельца:

-rwxr--r-- 1 developer labex 0 Июн  6 00:48 /home/labex/project/my_files/document.txt

Обратите внимание, что владение группой (labex) осталось неизменным.

Вы также можете одновременно изменить владельца и группу, используя синтаксис owner:group. Изменим владельца document.txt обратно на labex и его группу на devs.

sudo chown labex:devs ~/project/my_files/document.txt

Проверьте изменения:

ls -l ~/project/my_files/document.txt

Вывод должен теперь показывать labex как владельца и devs как группу:

-rwxr--r-- 1 labex devs 0 Июн  6 00:48 /home/labex/project/my_files/document.txt

Команда chown также поддерживает опцию -R (рекурсивно), которая позволяет изменить владение целым деревом каталогов. Изменим владельца каталога ~/project/my_files и всех его содержимых на developer, а группу на devs.

sudo chown -R developer:devs ~/project/my_files

Проверьте изменения для каталога:

ls -ld ~/project/my_files

Вывод должен отражать новое владение:

drwxr-x--- 2 developer devs 26 Июн  6 00:48 /home/labex/project/my_files

Обратите внимание, что после изменения владения каталога на developer:devs, пользователь labex больше не может получить доступ к файлам внутри каталога, потому что права доступа к каталогу — drwxr-x--- (владелец и группа имеют доступ, но другие нет), а labex не является ни владельцем (developer), ни членом группы (devs). Если вы попытаетесь перечислить файл сейчас:

ls -l ~/project/my_files/document.txt

Вы получите ошибку "Разрешение отказано". Это демонстрирует, как владение и права доступа работают вместе для управления доступом.

Вы также можете изменить только владение группой, используя chown :NEW_GROUP FILE(s). Это эквивалентно использованию команды chgrp. Изменим группу файла ~/project/my_script.sh на devs.

sudo chown :devs ~/project/my_script.sh

Проверьте изменения:

ls -l ~/project/my_script.sh

Вывод должен показывать devs как владельца группы, а labex остаётся владельцем файла:

-rwxrwx--- 1 labex devs 41 Июн  6 00:52 /home/labex/project/my_script.sh

Наконец, очистим, изменив владение обратно на labex:labex, а затем удалив пользователя developer и группу devs.

sudo chown -R labex:labex ~/project/my_files
sudo userdel developer
sudo groupdel devs

Понимание и применение специальных разрешений (SUID, SGID, бит сохранения)

На этом шаге вы изучите специальные разрешения в Linux: SUID (Set User ID), SGID (Set Group ID) и Sticky Bit. Эти разрешения обеспечивают расширенный контроль над выполнением файлов и поведением каталогов.

Специальные разрешения представлены дополнительной цифрой в восьмеричном режиме разрешений, размещенной перед стандартными тремя цифрами (владелец, группа, остальные).

  • SUID (Set User ID):
    • Восьмеричное значение: 4
    • Влияние на файлы: Когда исполняемый файл с SUID запускается, он выполняется с разрешениями владельца файла, а не пользователя, который его запустил. Это обычно используется для программ, которым требуются повышенные привилегии для выполнения определенных задач, например, команда passwd (которая должна записывать в /etc/shadow, файл, принадлежащий root).
    • В выводе ls -l: s отображается вместо x (выполнение) разрешения владельца. Если у владельца нет разрешения на выполнение, отображается заглавная буква S.
  • SGID (Set Group ID):
    • Восьмеричное значение: 2
    • Влияние на файлы: Аналогично SUID, но исполняемый файл запускается с разрешениями владельца группы файла.
    • Влияние на каталоги: Файлы и подкаталоги, созданные в каталоге с включенным SGID, наследуют принадлежность к группе этого каталога, а не основную группу пользователя, который их создал. Это очень полезно для общих каталогов, где все файлы должны принадлежать определенной группе.
    • В выводе ls -l: s отображается вместо x (выполнение) разрешения группы. Если у группы нет разрешения на выполнение, отображается заглавная буква S.
  • Sticky Bit:
    • Восьмеричное значение: 1
    • Влияние на файлы: Не влияет.
    • Влияние на каталоги: Пользователи могут создавать файлы в каталоге, но они могут удалять или переименовывать только файлы, которые им принадлежат. Это предотвращает удаление или перемещение пользователями файлов других пользователей в общем каталоге (например, /tmp).
    • В выводе ls -l: t отображается вместо x (выполнение) разрешения для остальных. Если у остальных нет разрешения на выполнение, отображается заглавная буква T.

Давайте продемонстрируем эти специальные разрешения.

Пример SUID

Мы создадим простую программу на C, которая пытается прочитать ограниченный файл.

Сначала создайте файл, который может читать только root:

sudo touch ~/project/secret_data.txt
sudo chmod 600 ~/project/secret_data.txt
sudo chown root:root ~/project/secret_data.txt

Проверьте его разрешения:

ls -l ~/project/secret_data.txt

Вывод:

-rw------- 1 root root 0 Jun  6 17:36 /home/labex/project/secret_data.txt

Теперь создайте программу на C read_secret.c, которая пытается прочитать этот файл:

nano ~/project/read_secret.c

Вставьте следующий код в read_secret.c:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    FILE *fp;
    char buffer[256];

    printf("Attempting to read /home/labex/project/secret_data.txt...\n");

    fp = fopen("/home/labex/project/secret_data.txt", "r");
    if (fp == NULL) {
        perror("Error opening file");
        return 1;
    }

    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf("%s", buffer);
    }

    fclose(fp);
    printf("Successfully read file.\n");
    return 0;
}

Сохраните и выйдите из nano (Ctrl+S, Ctrl+X).

Скомпилируйте программу:

gcc ~/project/read_secret.c -o ~/project/read_secret

Теперь попробуйте запустить ее от имени labex:

~/project/read_secret

Вы должны увидеть сообщение "Error opening file: Permission denied" (Ошибка открытия файла: Отказано в доступе), поскольку у labex нет доступа на чтение secret_data.txt.

Теперь давайте сделаем так, чтобы read_secret принадлежал root и установим бит SUID.

sudo chown root:root ~/project/read_secret
sudo chmod u+s ~/project/read_secret

Проверьте разрешения:

ls -l ~/project/read_secret

Вывод:

-rwsr-xr-x 1 root root 17704 Jun  6 01:02 /home/labex/project/read_secret

Обратите внимание на s в наборе разрешений владельца. Теперь запустите программу снова от имени labex:

~/project/read_secret

На этот раз она должна успешно прочитать файл (хотя он пуст, поэтому содержимое не будет напечатано, но сообщение "Successfully read file." указывает на успех). Это связано с тем, что бит SUID заставил программу работать с разрешениями root.

Пример SGID (в каталоге)

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

sudo groupadd shared_group
sudo mkdir ~/project/shared_dir
sudo chown labex:shared_group ~/project/shared_dir
sudo chmod 770 ~/project/shared_dir

Теперь установите бит SGID в shared_dir:

sudo chmod g+s ~/project/shared_dir

Проверьте разрешения:

ls -ld ~/project/shared_dir

Вывод:

drwxrws--- 2 labex shared_group 6 Jun  6 01:02 /home/labex/project/shared_dir

Обратите внимание на s в наборе разрешений группы.

Теперь создайте файл внутри shared_dir:

touch ~/project/shared_dir/new_file.txt

Проверьте принадлежность new_file.txt:

ls -l ~/project/shared_dir/new_file.txt

Вывод:

-rw-r--r-- 1 labex shared_group 0 Jun  6 01:02 /home/labex/project/shared_dir/new_file.txt

Несмотря на то, что основная группа labexlabex, new_file.txt унаследовал принадлежность к группе shared_group от shared_dir из-за бита SGID.

Пример Sticky Bit

Каталог /tmp является классическим примером каталога с установленным sticky bit. Давайте создадим аналогичный каталог.

sudo mkdir ~/project/public_upload
sudo chmod 1777 ~/project/public_upload

1 в 1777 — это восьмеричное значение для sticky bit. 777 предоставляет полные разрешения владельцу, группе и остальным.

Проверьте разрешения:

ls -ld ~/project/public_upload

Вывод:

drwxrwxrwt 2 root root 6 Jun  6 01:02 /home/labex/project/public_upload

Обратите внимание на t в наборе разрешений для остальных.

Теперь давайте смоделируем, как другой пользователь создает файл в этом каталоге. Поскольку у нас есть только пользователь labex, мы создадим файл как labex, а затем попытаемся удалить его после изменения его владельца на root (имитируя другого пользователя).

Создайте файл как labex:

touch ~/project/public_upload/labex_file.txt

Измените его владельца на root:

sudo chown root:root ~/project/public_upload/labex_file.txt

Теперь попробуйте удалить labex_file.txt как labex:

rm ~/project/public_upload/labex_file.txt

Вы увидите запрос с вопросом, хотите ли вы удалить защищенный от записи файл, и после подтверждения с помощью y вы получите ошибку "Operation not permitted" (Операция не разрешена). Это связано с тем, что sticky bit не позволяет пользователям удалять файлы, которые им не принадлежат, в этом каталоге, даже если у labex есть разрешение на запись в каталог public_upload. Только root или владелец labex_file.txt (в данном случае root) могут удалить его.

Чтобы очистить, вам понадобится sudo, чтобы удалить labex_file.txt:

sudo rm ~/project/public_upload/labex_file.txt

Очистка

Удалите созданные файлы и каталоги, а также пользователя/группу:

sudo rm -f ~/project/secret_data.txt ~/project/read_secret.c ~/project/read_secret
sudo rm -rf ~/project/shared_dir ~/project/public_upload
sudo groupdel shared_group

Настройка стандартных разрешений с помощью umask

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

Максимальные разрешения для нового файла — 666 (rw-rw-rw-), что означает чтение и запись для всех. Новые файлы обычно не получают разрешения на выполнение по умолчанию из соображений безопасности.
Максимальные разрешения для нового каталога — 777 (rwxrwxrwx), что означает чтение, запись и выполнение для всех.

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

Чтобы просмотреть текущее значение umask, просто введите umask:

umask

Вы, вероятно, увидите 0002 или 0022. В этой среде это 0022 для пользователя labex.

umask со значением 0022 означает:

  • Первая 0 предназначена для специальных разрешений (SUID, SGID, Sticky Bit), которые по умолчанию не затрагиваются umask.
  • Вторая 0 означает, что у владельца не удаляются никакие разрешения.
  • Третья 2 означает, что разрешение на запись (значение 2) удаляется из группы.
  • Четвертая 2 означает, что разрешение на запись (значение 2) удаляется из других.

Давайте рассчитаем разрешения по умолчанию с umask со значением 0022:

  • Для файлов (максимум 666):

    • Владелец: 6 - 0 = 6 (rw-)
    • Группа: 6 - 2 = 4 (r--)
    • Остальные: 6 - 2 = 4 (r--)
    • Получающиеся разрешения файла: 644 (rw-r--r--)
  • Для каталогов (максимум 777):

    • Владелец: 7 - 0 = 7 (rwx)
    • Группа: 7 - 2 = 5 (r-x)
    • Остальные: 7 - 2 = 5 (r-x)
    • Получающиеся разрешения каталога: 755 (rwxr-xr-x)

Давайте это проверим. Создайте новый файл и каталог:

touch ~/project/new_file_umask.txt
mkdir ~/project/new_dir_umask

Проверьте их разрешения:

ls -l ~/project/new_file_umask.txt
ls -ld ~/project/new_dir_umask

Вы должны увидеть разрешения, такие как -rw-r--r-- для файла и drwxr-xr-x для каталога, подтверждающие эффект umask со значением 0022.

Теперь давайте изменим umask на 0077. Этот umask удалит все разрешения группы и остальных пользователей.

umask 0077

Убедитесь, что umask изменился:

umask

Вывод:

0077

Теперь давайте рассчитаем разрешения по умолчанию с umask со значением 0077:

  • Для файлов (максимум 666):

    • Владелец: 6 - 0 = 6 (rw-)
    • Группа: 6 - 7 = -1 (фактически 0, ---)
    • Остальные: 6 - 7 = -1 (фактически 0, ---)
    • Получающиеся разрешения файла: 600 (rw-------)
  • Для каталогов (максимум 777):

    • Владелец: 7 - 0 = 7 (rwx)
    • Группа: 7 - 7 = 0 (---)
    • Остальные: 7 - 7 = 0 (---)
    • Получающиеся разрешения каталога: 700 (rwx------)

Давайте проверим этот новый umask. Создайте еще один новый файл и каталог:

touch ~/project/restricted_file.txt
mkdir ~/project/restricted_dir

Проверьте их разрешения:

ls -l ~/project/restricted_file.txt
ls -ld ~/project/restricted_dir

Теперь вы должны увидеть разрешения, такие как -rw------- для файла и drwx------ для каталога.

Настройка umask обычно настраивается в файлах инициализации оболочки (например, ~/.bashrc или /etc/profile), чтобы применяться автоматически при входе пользователя в систему. Для этой лабораторной работы изменение umask является временным и применяется только к текущему сеансу терминала.

Чтобы вернуть umask к значению по умолчанию для пользователя labex, вы можете просто установить его обратно на 0022:

umask 0022

Наконец, очистите файлы и каталоги, созданные на этом шаге:

rm ~/project/new_file_umask.txt ~/project/restricted_file.txt
rmdir ~/project/new_dir_umask ~/project/restricted_dir

Резюме

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

Кроме того, мы изучили, как изменять владение файлами с помощью команды chown, что имеет решающее значение для назначения административного контроля. Практикум также охватывал понимание и применение специальных разрешений (SUID, SGID и Sticky Bit), которые предоставляют расширенный контроль над выполнением и поведением при создании файлов. Наконец, мы изучили, как настроить стандартные разрешения для вновь созданных файлов и каталогов с помощью umask, обеспечивая согласованную настройку разрешений по всей системе.