Команда chmod. Изменение значений прав доступа к файлам

Пояснение

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

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

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

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

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

Для того, чтобы перейти на страницу с описанием команды chmod, щелкните по рисунку ниже.

Изменение прав доступа к файлам. Команда chmod

Подготовка к уроку

Под администратором системы сделать следующее:

  1. Создать двух новых пользователей, если в системе их недостаточно. Потребуется три пользователя. Например: sv, pupil7, test.
  2. Создать новую группу. Например: real.
    groupadd real
  3. Добавить двух пользователей в только что созданную группу.
    gpasswd -a sv real
    gpasswd -a pupil7 real
  4. Создать общедоступный разделяемый каталог в каталоге /home. Например lesson.
    mkdir /home/lesson
    chmod a+wt /home/lesson
  5. Перейти в каталог
    cd /home/lesson
  6. В каталоге /home/lesson/ создать файл hello.c
    vim hello.c

    Нажать клавишу Insert. И ввести программный код:
    #include <stdio.h>
    main()
    {
         printf("hello world!\n");
    }

    Нажать Esc. Затем комбинацию :wq (двоеточие и две буквы). Нажать Enter.
  7. Скомпилировать файл.
    gcc hello.c

    В результате в каталоге должен появиться исполняемый файл a.out
  8. Изменить пользователя и группу файлов.
    chown sv:real hello.c
    chown sv:real a.out

Инструкционная карта ученика

Примечание: данную инструкционную карту необходимо отредактировать в соответствие с пользователями в вашей системе.

  1. Перейдите в текстовый режим (терминал tty2). Войдите в систему под пользователем sv. Перейдите в каталог /home/lesson.
    cd /home/lesson
  2. Сделайте тоже самое для пользователей pupil7 и test (терминалы соответственно tty3 и tty4).
  3. Вернитесь к пользователю sv.
  4. sv. Просмотрите содержимое каталога:
    ls -l

    Опишите кто является владельцем файлов a.out и hello.c, какой группе они принадлежат.
    _____________________________________________________
    _____________________________________________________
  5. sv. Запретите «остальным» исполнять файл a.out:
    chmod o-x a.out
  6. pupil7. Выполните файл a.out:
    ./a.out
  7. test. Попытайтесь выполнить файл a.out также. Что произошло? Объясните разницу между пользователями test и pupil7 по отношению к данному файлу.
    Что произошло?_________________________________________
    Причина: ______________________________________________
  8. pupil7. Попытайтесь переименовать файл hello.c:
    mv hello.c hi.c

    Что произошло? ________________________________________
    Причина: ______________________________________________
  9. pupil7. Попытайтесь установить разрешение на изменение файла hello.c для группы:
    chmod g+w hello.c

    Что произошло? ________________________________________
  10. sv. Выполните предыдущую команду в роли данного пользователя. Почему пользователь sv может менять значения прав файла hello.c, а pupil7 — нет?
    _______________________________________________________
  11. pupil7. Переименуйте файл hello.c:
    mv hello.c hi.c
  12. test. Создайте файл:
    cat > filetest

    Напишите несколько строчек, затем нажмите Ctrl + C.
  13. test. Просмотрите каталог:
    ls -l

    Просмотрите файл:
    cat filetest
  14. test. Разрешите запись группе и запретите всё для «остальных»:
    chmod 660 filetest
  15. sv. Попытайтесь прочитать файл:
    cat filetest

    Почему отказано в доступе? ___________________________________

насколько могу судить, то 11

насколько могу судить, то 11 пункт не может быть выполнен так как юзер pupil7 не может переименновать файл hello.c

хоть он и входит в одну и ту же групу что и владелец этого файла а также в свойствах файла стоит доступ на возможность модификации для группы, НО так как мы при создании папки /home/lesson использовали дополнительный t-бит(#chmod a+wt /home/lesson) а при его наличии пользователь может изменять только свои файлы

тоесть pupil7 может изменять содержимое файла hello.c но не может переименновать или удалить его