
Я предлагаю, чтобы у меня был файл журнала с разрешением 666 и его владельцем была alice. Так что пользователь 'bob' может сменить его владельца следующим образом:
cp log log.temp; rm log; mv log.temp log
Как же мне устранить этот риск?
решение1
Как сказал выше Андрей, боб может делать то, что вы говорите, только если у него есть права на каталог, содержащий файл. Просто измените права доступа к каталогу на xx5, если вы хотите, чтобы боб имел доступ, но не мог создавать новые файлы.
Разрешения на доступ к файлам и папкам означают разные вещи с точки зрения пользователя.
Для файлов
- Читать: Если содержимое файла можно прочитать
- Писать:Если пользователь или процесс может записывать в файл (изменять его содержимое)
- Выполнять:Если файл может быть выполнен
Для каталогов
- Читать:Если список каталогов можно получить
- Писать:Если пользователь или процесс может каким-либо образом изменить содержимое каталога: создать новые или удалить существующие файлы в каталоге или переименовать файлы.
- Выполнять:Если пользователь или процесс может получить доступ к каталогу, то перейдите в него (сделайте его текущим рабочим каталогом)
решение2
Если предположить, что у OP была веская причина предоставить Алисе и Бобу права на запись в каталог журнала, то альтернативный ответ будет таким.
chmod og+t directorypath
Проблема не в том, что пользователь может прочитать файл журнала или даже создать новые файлы в том же каталоге, а в том, что он может переместить и удалить существующий файл журнала.
+t
разрешает перемещение и удаление файлов в каталоге только владельцу файла (за исключением root).
Вот как /tmp
работает dir.