Практическая работа: Модуль 9. Работа с правами доступа, ACL
См. также Требования, правила и цели выполнения практической работы
Практические задания
Задание 1. Права rw на текстовый файл.
Создайте пользователя user1, назначьте для него пароль и выполните вход (команды
useradd
,passwd
,login
).Создайте файл в домашней директории пользователя
~/file.txt
с контентом «hello». Владельцем файла должен быть user1:user1, права доступа по умолчанию 644 (u=rw,g=r,o=r).Назначьте на файл права доступа 000 (u=,g=,o=) и проверьте, что вы
не можете прочитать файл
не можете записать в файл новую строку «world»
Назначьте на файл права доступа 400 (u=r,g=,o=) и проверьте, что запись все еще недоступна, но чтение появилось.
Назначьте на файл права доступа 600 (u=rw,g=,o=) и проверьте, что вы можете теперь и читать, и писать в файл.
Назначьте на файл права доступа 006 (u=,g=,o=rw) и проверьте, что вы снова не можете ни читать, ни писать в файл.
Задание 2. Права x на исполняемом файле.
Скопируйте исполняемый файл cat в домашнюю директорию пользователя.
Выполните чтение из файла
file.txt
с помощью утилитыcat
из домашней директории.Назначьте на исполняемый файл права доступа 600 (u=rw,g=,o=) и проверьте, что вы не можете запускать эту утилиту для чтения файлов.
Назначьте на исполняемый файл права 100 (u=x,g=,o=) и проверьте, что права доступа на запуск утилиты снова появились.
Задание 3. Права rwx на каталог.
Создайте каталог
~/folder
и файл~/folder/file.txt
с контентом «hello».Назначьте на каталог права 000 (u=,g=,o=) и проверьте, что вы не можете более просматривать содержимое папки.
Назначьте на каталог права 400 (u=r,g=,o=) и проверьте, что теперь вы можете просмотреть список файлов, но без прав доступа к ним. Создание новых файлов все так же недоступно.
Назначьте на каталог права 600 (u=rw,g=,o=) и проверьте, что ничего не изменилось. Запись все так же недоступна.
Назначьте на каталог права 700 (u=rwx,g=,o=) и проверьте, что x дает возможность читать права на дочерние файлы, а в сочетании wx появилась возможность создания файлов.
Задание 4. ACL на пользователя.
Откройте еще одно окно терминала с правами root и создайте файл
~/file2.txt
с контентом «hello». Владельцем файла должен быть root:root, права доступа по умолчанию 644 (u=rw,g=r,o=r).Назначьте на файл права доступа 007 (u=,g=,o=rwx).
Добавьте пользователя user1 в ACL файла c правами 4 (u:user1:r).
Убедитесь, что пользователь потерял права на запись, которые ему ранее предоставляла категория others, и теперь у него права только на чтение через ACL.
Установите на файл через ACL маску c правами 0 (m::).
Убедитесь, что права на чтение, которые ему ранее предоставляла запись в ACL, перекрываются маской, поэтому он «выпадает» из ACL, и ему снова выдаются права в соответствии с правами категории others.
Ответы на практические задания (пошаговые инструкции)
Задание 1. Права rw на текстовый файл.
Создайте пользователя user1, назначьте для него пароль и выполните вход (команды
useradd
,passwd
,login
).
root@astra:~# useradd user1
root@astra:~# passwd user1
root@astra:~# login user1
Создайте файл в домашней директории пользователя
~/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
Назначьте на файл права доступа 000 (u=,g=,o=) и проверьте, что вы
не можете прочитать файл
не можете записать в файл новую строку «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: Отказано в доступе
Назначьте на файл права доступа 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: Отказано в доступе
Назначьте на файл права доступа 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
Назначьте на файл права доступа 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 на исполняемом файле.
Скопируйте исполняемый файл 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
Выполните чтение из файла
file.txt
с помощью утилитыcat
из домашней директории.
user1@astra:~$ ~/cat ~/file.txt
hello
world
Назначьте на исполняемый файл права доступа 600 (u=rw,g=,o=) и проверьте, что вы не можете запускать эту утилиту для чтения файлов.
user1@astra:~$ chmod u=rw,g=,o= ~/cat
user1@astra:~$ ~/cat ~/file.txt
-sh: /home/user1/cat: Отказано в доступе
Назначьте на исполняемый файл права 100 (u=x,g=,o=) и проверьте, что права доступа на запуск утилиты снова появились.
user1@astra:~$ chmod u=x,g=,o= ~/cat
user1@astra:~$ ~/cat ~/file.txt
hello
world
Задание 3. Права rwx на каталог.
Создайте каталог
~/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
Назначьте на каталог права 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/: Отказано в доступе
Назначьте на каталог права 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: Отказано в доступе
Назначьте на каталог права 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: Отказано в доступе
Назначьте на каталог права 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 на пользователя.
Откройте еще одно окно терминала с правами 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
Назначьте на файл права доступа 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
Добавьте пользователя 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
Установите на файл через 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