Step 5 (S-13642)

From Stepik Wiki
Revision as of 15:35, 3 March 2017 by Admin (Talk | contribs) (Create page for step id=13642)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/6283/step/5

Предположим вы использовали команду sudo для создания директории dir. По умолчанию для dir были выставлены права доступа rwxr-xr-x (владелец root, группа root). Таким образом никто кроме пользователя root не может ничего записывать в эту директорию, например, не может создавать файлы в ней. 

После выполнения какой команды user из группы group всё-таки сможет создать файл внутри dir? Укажите все верные варианты ответов!

Примечание: считаем, что все команды выполняются от имени user, если явно не указано, что команда выполнена с sudo.

Примечание 2: мы выбрали пример с директорией, а не с файлом не случайно.
Дело в том, что если создать при помощи sudo файл с правами rw-r--r-- в директории, которая принадлежит пользователю, то возникнет любопытная ситуация. С одной стороны пользователь может удалить этот файл (т.к. ему разрешено удалять все файлы внутри его директории) и может прочитать его содержимое (т.к. право "r" у файла установлено для всех), с другой стороны он не может этот файл редактировать (т.к. право "w" у файла есть только для root). При этом некоторые "умные" редакторы, например, vim позволят даже редактировать этот файл, но сделают они это своеобразно: через удаление оригинала и создание копии уже с нужными правами (удалять мы можем, а раз можем читать, то и копию создать не сложно). Итого получается, что несмотря на права  rw-r--r--,пользователь может сделать с этим файлом почти всё что угодно!
В случае же, когда речь идет о директории созданной root, ситуация будет проще: пользователь сможет смотреть её содержимое (у него есть право "r"), но удалять и создавать файлы в ней не сможет (права "w" у него нет). 
Важно отметить, что директории в Linuxэто' в каком-то смысле файлы. Содержимое такого "файла" -- это записи о файлах и поддиректориях этой директории (грубо говоря их названия). Таким образом, право "r" у директории дает возможность просматривать "записи", т.е. просматривать её состав. Право "w" у директории дает возможность удалять/добавлять новые "записи", т.е. удалять/создавать файлы/поддиректории в ней.
На самом деле и это еще не всё. Существует так называемый sticky bit (атрибут файла или директории), выставление которого меняет описанное выше поведение. Файлы (или директории) с таким атрибутом сможет удалить только их владелец вне зависимости от прав, установленных у директории, в которой эти файлы (или директории) лежат!

Отдельное спасибо слушателю курса Alexey Antipovsky за помощь в оформлении Примечания 2!