Выполнять пользовательские команды systemctl --от имени пользователя root

Vim не может получить дополнительные разрешения. :w!просто переопределяет внутреннюю опцию 'readonly', которая могла быть установлена, потому что:

  • вы открыли файл с помощью опции строки -Rкоманды -или с помощью :viewвместо :editили:setlocal readonly
  • Vim распознает, что файл в настоящее время не имеет прав на запись

В последнем случае запись в файл все еще может быть возможна, поскольку Vim (по умолчанию)создает новый файл , а затем заменяет им исходный файл. Это все еще зависит от разрешений, установленных таким образом, чтобы разрешить это.


Чтобы действительно получить права на запись там, где у пользователя, открывшего Vim, их нет, необходимо использовать :w !sudo tee >/dev/null fileтрюк либо напрямую, либо через плагин, такой как SudoEdit .

1
04.10.2021, 16:25
1 ответ

Не используйте suили sudo, а вместо этого используйте machinectl, что даст вам правильный пользовательский -сеанс и контекст.

Вы можете просто закинуть снаряд, как вы привыкли из su/sudo:

machinectl shell root@.host

… и выполнить все, что вы хотите, в контексте данного пользователя, или вы можете передать cmd для выполнения в качестве дополнительного аргумента, например.:

machinectl shell root@.host $(which bash) -c "systemctl --user status myunit.service"

Убедитесь, что $ (который bash)-c не заключен в кавычки.

1
05.10.2021, 23:23

Теги

Похожие вопросы