Книга: Linux программирование в примерах
5.5.4. Использование fchown() и fchmod() для обеспечения безопасности
5.5.4. Использование fchown()
и fchmod()
для обеспечения безопасности
В исходных системах Unix были только системные вызовы chown()
и chmod()
. Однако, на сильно загруженных системах эти системные вызовы попадают в условия состязания, посредством чего злоумышленник может организовать замещение другим файлом файла, у которого изменяется владелец или права доступа.
Однако, после открытия файла условие состязания больше не представляет проблему. Программа может использовать stat()
с именем файла для получения информации о файле. Если получены сведения, которые ожидались, после открытия файла fstat()
может проверить, что файл тот же самый (сравнив поля st_dev
и st_ino
структур struct stat
«до» и «после»).
Когда программа знает, что файлы те же самые, владение или права доступа могут быть изменены с помощью fchown()
или fchmod()
.
Эти системные вызовы, также как lchown()
, сравнительно недавние;[63] в старых системах Unix их не было, хотя в современных совместимых с POSIX системах они есть.
Соответствующих функций futime()
или lutime()
нет. В случае futime()
это (очевидно) потому, что временные отметки не являются критическими для безопасности системы в том же отношении, что для владения и прав доступа, lutime()
отсутствует потому, что временные отметки неуместны для символических ссылок.
- 5.5.2. Изменение прав доступа: chmod() и fchmod()
- VI Юзабилити программного обеспечения
- 4. Внедрение базового программного обеспечения
- 4.3. Иерархичность программного обеспечения
- Восстановление с использованием инструмента gbak
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Выбор аппаратного обеспечения для InterBase
- Система безопасности InterBase
- Общие рекомендации по безопасности
- Типы страниц и их использование
- Использование констант
- Использование переменной окружения ISC_PATH