15

От чоун (2):

Только привилегированный процесс (Linux: один с возможностью CAP_CHOWN) может изменить владельца файла. Владелец файла может изменить группу файла на любую группу, членом которой является этот владелец. Привилегированный процесс (Linux: с CAP_CHOWN) может произвольно изменить группу.

В чем причина этого ограничения? Почему непривилегированный пользователь не может изменить владельца файла, которым он владеет (т. Е. Нет /etc /shadow)?

$ touch blah
$ chown root:root blah
chown: changing ownership of `blah': Operation not permitted

4 ответа4

27

Позволяя пользователям "отдавать" файлы, вы сталкиваетесь с различными функциями ОС. Такие как:

Taking up another user's disk quota.
Impersonating another user (or even root) via setuid.
Having insufficient privileges to undo a mistaken chown.
Making it appear that someone else had created a given file.
Setting up cron jobs to run on other user's accounts.
And many more...
8

Это просто личный выбор дизайнеров Линукс , чтобы не допустить его - все причины псевдо-безопасности, данные, являются привлекательностью, так как есть UNIX системы , которые позволяют это.

Я думаю, что эта функциональность сводилась к тому, следовало ли поведение вашего Unix 'System-V' (AT & T) или Unix Беркли (BSD) ...

Что касается других проблем безопасности, упомянутых:

  • Выдача себя за другого пользователя (или даже root) через setuid.

    Не проблема: изменение владельца очищает любые биты setXid (U/G)

  • Недостаточно прав для отмены ошибочного чоуна

    На самом деле это не «риск для безопасности», НО, это может быть в системах, которые позволяют менять пользователя, вы можете изменить его обратно, если он находится в вашем собственном каталоге, в противном случае: «будьте осторожны»!

  • Создаем впечатление, что кто-то другой создал данный файл.

    Он по-прежнему будет в каталоге, доступном для записи вами. Т.е. вы не можете переместить его в их домашний каталог, если он не открыт для записи вашей группе или всем (или вам, в частности, если ACL доступны).

  • Настройка заданий cron для запуска на учетных записях других пользователей.

    Опять же, не будет работать - так как crondirs принадлежат пользователю и не могут быть доступны для чтения другим пользователям, не говоря уже о записи.

  • если кто-то может изменить владельца, то любой может изменить разрешения, чтобы получить доступ к любому файлу в системе.

    Нет: только если пользователь «владеет» каталогом, содержащим этот файл. Т.е. Я могу передать root-файл с именем passwd, но я не смог переместить его в /etc /, если у меня нет разрешения на запись в /etc /.

  • квоты

    Потенциально верная точка - если вы используете квоты, но кажется, что было бы легко определить, суммируете ли вы дисковое пространство с помощью home-dir; Единственная проблема будет в каталогах, которые могут быть записаны несколькими пользователями. В этом случае, может быть, владелец этого «директора». Это может иметь место в тех системах, которые поддерживают «раздачу» файлов, что вы можете делать это только в каталогах, которые у вас «есть», но это было ДОЛГОЕ время, так как я фактически находился в системе, которая позволяет это, так Я не помню точных ограничений.

Кажется, я помню, что был какой-то «компромисс» для разрешения «раздачи файлов» ... например - в системах, которые позволяли это, что-то еще не разрешалось, что разрешает linux, но не могу вспомнить, что это было отключено рука...

Я бы сказал, что вышеприведенный «ответ» должен быть помечен как ответ, поскольку это НЕ реальный ответ. Это скорее дизайнерское решение - я просто не знаю, каковы были компромиссы.

Могут быть проблемы с безопасностью, не затронутые выше, которые могут быть действительными, но приведенные выше недействительны.

ИМО, это должно быть устанавливаемое системой «значение» в «/proc», но, вообще говоря, я думаю, что большинству людей это безразлично.

Если бы в этом была сильная потребность, «chown» мог бы быть усилен и модифицирован для обеспечения безопасности, а затем настроить w/setuid «root», чтобы он мог реализовать такую политику.

6

Что ж, если кто-то может изменить владельца, то любой может изменить разрешения, чтобы получить доступ к любому файлу в системе. Это плохо не только с точки зрения вредоносного ПО (sudo не требуется), но и с точки зрения системного администратора. Если кто-либо из пользователей может изменить любой из файлов, то права доступа к файлам бесполезны.

5

Потому что тогда пользователь может уклоняться от квот файловой системы. Если у меня есть квота в 100 МБ, а у вас есть квота в 100 МБ, я могу загрузить 100 МБ, chmod a+r, chown you, а затем загрузить еще 100 МБ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .