Большинство систем Unix запрещают пользователям «отдавать» файлы, то есть пользователи могут работать, только chown
если у них есть права целевого пользователя и группы. Поскольку для использования chown
требуется владение файлом или наличие прав root (пользователи никогда не могут присваивать файлы других пользователей), только root может работать, chown
чтобы сменить владельца файла на другого пользователя.
Причина этого ограничения заключается в том, что передача файла другому пользователю может привести к возникновению плохих вещей в необычных, но все же важных ситуациях. Например:
- Если в системе активированы дисковые квоты, Алиса может создать файл, доступный для записи в мире, в каталоге, доступном только ей (чтобы никто другой не мог получить доступ к этому файлу, доступному для записи), а затем запустить,
chown
чтобы этот файл стал владельцем другого пользователя Билла. После этого файл будет считаться дисковой квотой Билла, даже если файл может использовать только Алиса.
- Если Алиса передает файл Биллу, нет никаких признаков того, что Билл не создал этот файл. Это может быть проблемой, если файл содержит недопустимые или иным образом компрометирующие данные.
- Некоторые программы требуют, чтобы их входной файл принадлежал конкретному пользователю для аутентификации запроса (например, файл содержит некоторые инструкции, которые программа будет выполнять от имени этого пользователя). Обычно это небезопасный дизайн, потому что даже если Билл создал файл, содержащий синтаксически правильные инструкции, он, возможно, не намеревался выполнять их именно в это время. Тем не менее, разрешение Алисе создавать файл с произвольным содержимым и принимать его в качестве входных данных от Билла может только усугубить ситуацию.