Почему непривилегированный пользователь не может изменять права собственности на файл?

Из chown (2):

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

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

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

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

 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... 

Это просто личный выбор дизайнеров Linux, чтобы не допустить этого – все из соображений псевдо-безопасности, приведенные в данном документе , носят видный характер, так как существуют системы unix, которые позволяют это.

Я думаю, что эта функциональность сводилась к тому, что поведение вашей unix последовало за «System-V» (AT & T) или Unix (BSD) Беркли …

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

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

    Non-issue: изменение «владельца» очищает любые биты setXid (U / G)

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

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

  • Похоже, что кто-то создал файл.

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

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

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

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

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

  • квоты

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

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

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

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

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

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

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

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

  • Как проверить текущее дисковое пространство, используемое моим Linux?
  • Безопасный запуск кода пользователя
  • SSH от Windows до Linux без ввода пароля
  • Как эта стратегия резервного копирования работает?
  • Настройка IPv6 на Debian - глобальный временный адрес
  • Как загрузить большое количество файлов через ubuntu
  • Как установить Fedora 12 iso-файл?
  • Хороший, легкий графический монитор для Linux
  • Как сопоставить Control to Escape на «одиночном» прессе под Linux?
  • Ручное закрытие порта из командной строки
  • Преобразование изображения в несжатый PNG из командной строки
  • Давайте будем гением компьютера.