Пояснение
Задача этого урока — изучить, как значения прав на файлы для разных категорий влияют на возможные действия с ним. Придется действовать от имен разных пользователей, поэтому необходимо, чтобы в системе было несколько пользователей.
По умолчанию, когда создается новый пользователь в Linux, он входит только в свою собственную группу. Чтобы увидеть как члены одной группы могут работать с файлом, требуется создать новую группу и добавить туда пару пользователей (или одного пользователя добавить в группу другого).
Поскольку в процессе урока происходит постоянное переключение между пользователями, необходимы элементарные навыки работы в текстовом режиме операционных систем GNU/Linux.
Положительное право исполнять имеет смысл не для всех файлов. Поэтому в уроке предусмотрена подготовка файла с кодом на языке C и его последующая компиляция в бинарный файл.
Данная методическая разработка может быть практической частью к уроку о правах пользователей.
Для того, чтобы перейти на страницу с описанием команды chmod, щелкните по рисунку ниже.
Подготовка к уроку
Под администратором системы сделать следующее:
- Создать двух новых пользователей, если в системе их недостаточно. Потребуется три пользователя. Например: sv, pupil7, test.
- Создать новую группу. Например: real.
- Добавить двух пользователей в только что созданную группу.
gpasswd -a sv real
gpasswd -a pupil7 real
- Создать общедоступный разделяемый каталог в каталоге /home. Например lesson.
mkdir /home/lesson
chmod a+wt /home/lesson
- Перейти в каталог
- В каталоге /home/lesson/ создать файл hello.c
Нажать клавишу Insert. И ввести программный код:
#include <stdio.h>
main()
{
printf("hello world!\n");
}
Нажать Esc. Затем комбинацию :wq (двоеточие и две буквы). Нажать Enter.
- Скомпилировать файл.
В результате в каталоге должен появиться исполняемый файл a.out
- Изменить пользователя и группу файлов.
chown sv:real hello.c
chown sv:real a.out
Инструкционная карта ученика
Примечание: данную инструкционную карту необходимо отредактировать в соответствие с пользователями в вашей системе.
- Перейдите в текстовый режим (терминал tty2). Войдите в систему под пользователем sv. Перейдите в каталог /home/lesson.
- Сделайте тоже самое для пользователей pupil7 и test (терминалы соответственно tty3 и tty4).
- Вернитесь к пользователю sv.
- sv. Просмотрите содержимое каталога:
Опишите кто является владельцем файлов a.out и hello.c, какой группе они принадлежат.
_____________________________________________________
_____________________________________________________
- sv. Запретите «остальным» исполнять файл a.out:
- pupil7. Выполните файл a.out:
- test. Попытайтесь выполнить файл a.out также. Что произошло? Объясните разницу между пользователями test и pupil7 по отношению к данному файлу.
Что произошло?_________________________________________
Причина: ______________________________________________
- pupil7. Попытайтесь переименовать файл hello.c:
Что произошло? ________________________________________
Причина: ______________________________________________
- pupil7. Попытайтесь установить разрешение на изменение файла hello.c для группы:
Что произошло? ________________________________________
- sv. Выполните предыдущую команду в роли данного пользователя. Почему пользователь sv может менять значения прав файла hello.c, а pupil7 — нет?
_______________________________________________________
- pupil7. Переименуйте файл hello.c:
- test. Создайте файл:
Напишите несколько строчек, затем нажмите Ctrl + C.
- test. Просмотрите каталог:
Просмотрите файл:
- test. Разрешите запись группе и запретите всё для «остальных»:
- sv. Попытайтесь прочитать файл:
Почему отказано в доступе? ___________________________________