Практическая работа: Модуль 9. Работа с правами доступа, ACL

См. также Требования, правила и цели выполнения практической работы

Практические задания

Задание 1. Права rw на текстовый файл.

  1. Создайте пользователя user1, назначьте для него пароль и выполните вход (команды useradd, passwd, login).

  2. Создайте файл в домашней директории пользователя ~/file.txt с контентом «hello». Владельцем файла должен быть user1:user1, права доступа по умолчанию 644 (u=rw,g=r,o=r).

  3. Назначьте на файл права доступа 000 (u=,g=,o=) и проверьте, что вы

    1. не можете прочитать файл

    2. не можете записать в файл новую строку «world»

  4. Назначьте на файл права доступа 400 (u=r,g=,o=) и проверьте, что запись все еще недоступна, но чтение появилось.

  5. Назначьте на файл права доступа 600 (u=rw,g=,o=) и проверьте, что вы можете теперь и читать, и писать в файл.

  6. Назначьте на файл права доступа 006 (u=,g=,o=rw) и проверьте, что вы снова не можете ни читать, ни писать в файл.

Задание 2. Права x на исполняемом файле.

  1. Скопируйте исполняемый файл cat в домашнюю директорию пользователя.

  2. Выполните чтение из файла file.txt с помощью утилиты cat из домашней директории.

  3. Назначьте на исполняемый файл права доступа 600 (u=rw,g=,o=) и проверьте, что вы не можете запускать эту утилиту для чтения файлов.

  4. Назначьте на исполняемый файл права 100 (u=x,g=,o=) и проверьте, что права доступа на запуск утилиты снова появились.

Задание 3. Права rwx на каталог.

  1. Создайте каталог ~/folder и файл ~/folder/file.txt с контентом «hello».

  2. Назначьте на каталог права 000 (u=,g=,o=) и проверьте, что вы не можете более просматривать содержимое папки.

  3. Назначьте на каталог права 400 (u=r,g=,o=) и проверьте, что теперь вы можете просмотреть список файлов, но без прав доступа к ним. Создание новых файлов все так же недоступно.

  4. Назначьте на каталог права 600 (u=rw,g=,o=) и проверьте, что ничего не изменилось. Запись все так же недоступна.

  5. Назначьте на каталог права 700 (u=rwx,g=,o=) и проверьте, что x дает возможность читать права на дочерние файлы, а в сочетании wx появилась возможность создания файлов.

Задание 4. ACL на пользователя.

  1. Откройте еще одно окно терминала с правами root и создайте файл ~/file2.txt с контентом «hello». Владельцем файла должен быть root:root, права доступа по умолчанию 644 (u=rw,g=r,o=r).

  2. Назначьте на файл права доступа 007 (u=,g=,o=rwx).

  3. Добавьте пользователя user1 в ACL файла c правами 4 (u:user1:r).

    Убедитесь, что пользователь потерял права на запись, которые ему ранее предоставляла категория others, и теперь у него права только на чтение через ACL.

  4. Установите на файл через ACL маску c правами 0 (m::).

Убедитесь, что права на чтение, которые ему ранее предоставляла запись в ACL, перекрываются маской, поэтому он «выпадает» из ACL, и ему снова выдаются права в соответствии с правами категории others.

Ответы на практические задания (пошаговые инструкции)

Задание 1. Права rw на текстовый файл.

  1. Создайте пользователя user1, назначьте для него пароль и выполните вход (команды useradd, passwd, login).

root@astra:~# useradd user1
root@astra:~# passwd user1
root@astra:~# login user1
  1. Создайте файл в домашней директории пользователя ~/file.txt с контентом «hello». Владельцем файла должен быть user1:user1, права доступа по умолчанию 644 (u=rw,g=r,o=r).

user1@astra:~$ echo "hello" > ~/file.txt
user1@astra:~$ ls -l ~/file.txt
-rw-r--r-- 1 user1 user1 0 фев 22 07:20 /home/user1/file.txt
  1. Назначьте на файл права доступа 000 (u=,g=,o=) и проверьте, что вы

    1. не можете прочитать файл

    2. не можете записать в файл новую строку «world»

user1@astra:~$ chmod u=,g=,o= ~/file.txt
user1@astra:~$ ls -l ~/file.txt
---------- 1 user1 user1 6 фев 22 07:13 /home/user1/file.txt
user1@astra:~$ cat ~/file.txt
cat: /home/user1/file.txt: Отказано в доступе
user1@astra:~$ echo "world" >> ~/file.txt
-sh: /home/user1/file.txt: Отказано в доступе
  1. Назначьте на файл права доступа 400 (u=r,g=,o=) и проверьте, что запись все еще недоступна, но чтение появилось.

user1@astra:~$ chmod u=r,g=,o= ~/file.txt
user1@astra:~$ cat ~/file.txt
hello
user1@astra:~$ echo "world" >> ~/file.txt
-sh: /home/user1/file.txt: Отказано в доступе
  1. Назначьте на файл права доступа 600 (u=rw,g=,o=) и проверьте, что вы можете теперь и читать, и писать в файл.

user1@astra:~$ chmod u=rw,g=,o= ~/file.txt
user1@astra:~$ echo "world" >> ~/file.txt
user1@astra:~$ cat ~/file.txt
hello
world
  1. Назначьте на файл права доступа 006 (u=,g=,o=rw) и проверьте, что вы снова не можете ни читать, ни писать в файл.

user1@astra:~$ chmod u=,g=,o=rw ~/file.txt
user1@astra:~$ cat ~/file.txt
cat: /home/user1/file.txt: Отказано в доступе
user1@astra:~$ echo "world" >> ~/file.txt
-sh: /home/user1/file.txt: Отказано в доступе

Задание 2. Права x на исполняемом файле.

  1. Скопируйте исполняемый файл cat в домашнюю директорию пользователя.

user1@astra:~$ which cat
/usr/bin/cat
user1@astra:~$ cp /usr/bin/cat ~/
user1@astra:~$ ls -l ~/cat
-rwxr-xr-x 1 user1 user1 40080 фев 22 07:50 /home/user1/cat
  1. Выполните чтение из файла file.txt с помощью утилиты cat из домашней директории.

user1@astra:~$ ~/cat ~/file.txt
hello
world
  1. Назначьте на исполняемый файл права доступа 600 (u=rw,g=,o=) и проверьте, что вы не можете запускать эту утилиту для чтения файлов.

user1@astra:~$ chmod u=rw,g=,o= ~/cat
user1@astra:~$ ~/cat ~/file.txt
-sh: /home/user1/cat: Отказано в доступе
  1. Назначьте на исполняемый файл права 100 (u=x,g=,o=) и проверьте, что права доступа на запуск утилиты снова появились.

user1@astra:~$ chmod u=x,g=,o= ~/cat
user1@astra:~$ ~/cat ~/file.txt
hello
world

Задание 3. Права rwx на каталог.

  1. Создайте каталог ~/folder и файл ~/folder/file.txt с контентом «hello».

user1@astra:~$ mkdir ~/folder
user1@astra:~$ echo "hello" > ~/folder/file.txt
user1@astra:~$ ls -l ~/folder/
итого 4
-rw-r--r-- 1 user1 user1 6 фев 22 07:58 file.txt
  1. Назначьте на каталог права 000 (u=,g=,o=) и проверьте, что вы не можете более просматривать содержимое папки.

user1@astra:~$ chmod u=,g=,o= ~/folder/
user1@astra:~$ ls -l ~/folder/
ls: невозможно открыть каталог '/home/user1/folder/': Отказано в доступе
user1@astra:~$ echo "hello2" > ~/folder/file2.txt
-sh: /home/user1/folder/file2.txt: Отказано в доступе
user1@astra:~$ cd ~/folder/
-sh: cd: /home/user1/folder/: Отказано в доступе
  1. Назначьте на каталог права 400 (u=r,g=,o=) и проверьте, что теперь вы можете просмотреть список файлов, но без прав доступа к ним. Создание новых файлов все так же недоступно.

user1@astra:~$ chmod u=r,g=,o= ~/folder/
user1@astra:~$ ls -l ~/folder/
ls: невозможно получить доступ к '/home/user1/folder/file.txt': Отказано в доступе
итого 0
-????????? ? ? ? ? ? file.txt
user1@astra:~$ echo "hello2" > ~/folder/file2.txt
-sh: /home/user1/folder/file2.txt: Отказано в доступе
  1. Назначьте на каталог права 600 (u=rw,g=,o=) и проверьте, что ничего не изменилось. Запись все так же недоступна.

user1@astra:~$ chmod u=rw,g=,o= ~/folder/
user1@astra:~$ echo "hello2" > ~/folder/file2.txt
-sh: /home/user1/folder/file2.txt: Отказано в доступе
  1. Назначьте на каталог права 700 (u=rwx,g=,o=) и проверьте, что x дает возможность читать права на дочерние файлы, а в сочетании wx появилась возможность создания файлов.

user1@astra:~$ chmod u=rwx,g=,o= ~/folder/
user1@astra:~$ ls -l ~/folder/
итого 4
-rw-r--r-- 1 user1 user1 6 фев 22 07:58 file.txt

Задание 4. ACL на пользователя.

  1. Откройте еще одно окно терминала с правами root и создайте файл ~/file2.txt с контентом «hello». Владельцем файла должен быть root:root, права доступа по умолчанию 644 (u=rw,g=r,o=r).

root@astra:~# cd /home/user1/
root@astra:/home/user1# echo "hello2" > file2.txt
# ls -l file2.txt
-rw-r--r-- 1 root root 0 фев 22 09:15 file2.txt
  1. Назначьте на файл права доступа 007 (u=,g=,o=rwx).

root@astra:/home/user1# chmod u=,g=,o=rwx file2.txt

В этом случае пользователь user1 получит права rwx через категорию пользователей other.

user1@astra:~$ echo "world2" >> ~/file2.txt
user1@astra:~$ cat ~/file2.txt
hello2
world2
  1. Добавьте пользователя user1 в ACL файла file2.txt c правами 4 (u:user1:r).

root@astra:/home/user1# setfacl -m u:user1:r file2.txt
root@astra:/home/user1# getfacl file2.txt
# file: file2.txt
# owner: root
# group: root
user::---
user:user1:r--
group::---
mask::r--
other::rwx

Убедитесь, что пользователь потерял права на запись, которые ему ранее предоставляла категория others, и теперь у него права только на чтение через ACL.

user1@astra:~$ echo "wide2" >> ~/file2.txt
-sh: /home/user1/file2.txt: Отказано в доступе
user1@astra:~$ cat ~/file2.txt
hello
world2
  1. Установите на файл через ACL маску c правами 0 (m::).

root@astra:/home/user1# setfacl -m m::- file2.txt
root@astra:/home/user1# getfacl file2.txt
# file: file2.txt
# owner: root
# group: root
user::---
user:user1:r-- #effective:---
group::---
mask::---
other::rwx

Убедитесь, что права на чтение, которые ему ранее предоставляла запись в ACL, перекрываются маской, поэтому он «выпадает» из ACL, и ему снова выдаются права в соответствии с правами категории others.

user1@astra:~$ echo "wide2" >> ~/file2.txt
user1@astra:~$ cat ~/file2.txt
hello2
world2
wide2