Vim не может получить дополнительные разрешения. :w!
просто переопределяет внутреннюю опцию 'readonly'
, которая могла быть установлена, потому что:
-R
команды -или с помощью :view
вместо :edit
или:setlocal readonly
В последнем случае запись в файл все еще может быть возможна, поскольку Vim (по умолчанию)создает новый файл , а затем заменяет им исходный файл. Это все еще зависит от разрешений, установленных таким образом, чтобы разрешить это.
Чтобы действительно получить права на запись там, где у пользователя, открывшего Vim, их нет, необходимо использовать :w !sudo tee >/dev/null file
трюк либо напрямую, либо через плагин, такой как SudoEdit .
Не используйте su
или sudo
, а вместо этого используйте machinectl
, что даст вам правильный пользовательский -сеанс и контекст.
Вы можете просто закинуть снаряд, как вы привыкли из su
/sudo
:
machinectl shell root@.host
… и выполнить все, что вы хотите, в контексте данного пользователя, или вы можете передать cmd для выполнения в качестве дополнительного аргумента, например.:
machinectl shell root@.host $(which bash) -c "systemctl --user status myunit.service"
Убедитесь, что $ (который bash)-c не заключен в кавычки.