Флаг навязчивости sticky нужен также для выполняемых файлов и используется для запроса к ядру системы на сохранение «образа» программы в области свопинга
после завершения ее выполнения
Системные администраторы часто устанавливают флаг sticky для наиболее часто выполняемых программ, увеличивая тем самым производительность системы. В большинстве современных реализаций UNIX все завершенные программы по возможности оставляются в области свопинга (при этом используется одна из вариаций алгоритма замены недавно использовавшейся информацией — LRU), таким образом, для них не требуется применение флага навязчивости.
Флаги sgid и sticky применяются немного по-другому для каталогов. Если флаг sticky установлен, а в каталог можно производить запись, то процесс обладает правом на удаление или изменение файла в этом каталоге только в том случае, если его действительный UID совпадает с идентификатором владельца файла или каталога.
А также тогда, когда процесс обладает правами на запись файла. Если флаг sticky сброшен, то удалять или переименовывать файлы, находящиеся в каталоге, может любой процесс, обладающий правом на запись в этот каталог.
При создании файла значение действительного UID наследуется от создавшего его процесса. Идентификатор GID владельца при этом может иметь только два значения. В системе SVR3 файл наследовал действительный GID от своего создателя. В 4.3BSD наследуется GID каталога, в котором файл был создан. В системе SVR4 для выбора значения идентификатора используется флаг sgid родительского каталога. Если этот флаг был установлен для каталога, то при создании новых файлов значение GID наследуется от родительского каталога. Когда флаг sgid сброшен, новые файлы получают GID от своего создателя.
Для манипуляций с атрибутами файлов в UNIX предлагается специальный набор системных вызовов.
Входным аргументом всех этих функций является полное имя файла. Вызовы link и unlink применяются соответственно для создания и удаления жесткой связи. Ядро удаляет файл только в том случае, если на него не остается ни одной ссылки и никто им не пользуется в текущий момент. Системный вызов utimes изменяет временные метки доступа и изменения для файла. Функция chown переназначает идентификаторы пользователя и группы владельца. Вызов chmod изменяет права и флаги режимов файла.
В многонитевых системах необходимо помнить о некоторых сложностях, связанных с возможностью совместного доступа к файлам.
Например, в таких системах могут возникать ситуации, когда одна нить производит вызов
Iseek перед тем, как другая нить вызовет read. В результате вторая нить начнет чтение с совершенно иного, отличного от заданного ею смещения. В некоторых ОС, например Solaris, поддерживаются специальные системные вызовы pread и pwrite, предлагающие неделимые операции позиционирования и чтения (записи).
Опубликовал katy
July 08 2015 08:05:08 ·
0 Комментариев ·
2312 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.