Я сделал длительные изменения в файле конфигурации на компьютере с Ubuntu Linux с помощью редактора vi. К сожалению, я сначала забыл sudo, так что теперь я в редакторе, но не могу сохранить свои изменения из-за отсутствия прав. Могу ли я задним числом судить пользователя на этом терминале, или как лучше всего действовать?
linux
permissions
sudo
vi
Саймон
источник
источник
Ответы:
В этом случае я пишу файл с
:w /tmp/tmpfile
. Затем я выхожу и перехожу/tmp/tmpfile
к своему старому файлу с правами sudo.источник
vi
«по умолчанию» (который, вероятно, равен 666, и с обратным к вашему «umask»), заменяет владельца файла вашим UID (это был «root», не так ли?), и ломает жесткие ссылки./tmp
каталог. (2) Если в вашей системе действительно злые пользователи, они могут заменить вас/tmp/tmpfile
между тем, когда вы пишете (изvi
), и когда вы копируете его в файл конфигурации системы, который вы редактировали. Безопаснее поместить временный файл в каталог, к которому есть доступ только у вас.От ТАК :
На самом деле, я теперь использую этот способ делать это чаще:
Я думаю, что это немного более интуитивно, поскольку я знаю, что
:%!
делает, тогда как у меня нет интуитивного понимания:w !
. Кроме того, легко пропустить очень важное пространство междуw
и!
.источник
vi
команды могут состоять из нескольких букв, поэтому теоретически может бытьwfoo
команда « », поэтому, если вы хотите записать в файл с именем «foo
», вы должны сказать «:w foo
». То есть вам нужно пробел после «:w
». Что касается «:w !
» - вы знаете, что такое «:!
», верно? «:!date
» Запускаетdate
команду « ». Таким образом, «:w !xyz
» записывает буфер, но в команду, а не в файл.Не могли бы вы открыть другой терминал и временно изменить права доступа к файлу?
источник
:w !sudo tee % solution
wfaulk отвечал