Я наткнулся на этот вопрос, когда искал что-то совершенно не связанное, но подумал, что добавлю следующее важное различие, которое до сих пор не упоминалось: sudoedit не запускает ваш редактор от имени root.
$ sudo vim /etc/farts.conf
Просто запустите vim от имени пользователя root, что позволит ему прочитать файл. Недостатком является то, что редактор теперь также работает от имени пользователя root и может делать все что угодно. Если вы просто хотели позволить пользователю редактировать конфигурационный файл и ничего более, что очень плохо, вы просто предоставили им права root во всей системе. Ничто не мешает мне порождать оболочку от vim с помощью :sh
или :!command
, и, поскольку они являются подпроцессами, они также будут работать от имени пользователя root.
С другой стороны:
$ sudoedit /etc/farts.conf
на самом деле будет работать по-другому. Он создаст копию с уникальным именем в /tmp с разрешениями, заблокированными только для вашего пользователя, и затем породит ваш редактор, как обычно, без привилегий root, для этой копии.
После того, как вы выйдете из редактора, он сравнит временный файл и исходный файл и безопасно заменит исходный файл вашим редактированием, если он был изменен.
В этом сценарии становится возможным разрешить пользователю редактировать системный файл, но не разрешать ему запускать случайные двоичные файлы с правами root или копаться в файловой системе повсюду.
Это в основном фактическое различие, остальное, что было упомянуто, это просто аккуратные побочные эффекты.