Редактировать файл с правами суперпользователя

53

Когда вам нужно редактировать системные файлы, обычно вы запускаете Emacs с обычным пользователем, поэтому файл будет защищен от записи. Что я могу сделать, чтобы получить права root? Я имею в виду что-то вроде M-x sudoот Dired.

Я не хочу запускать Emacs как суперпользователь и не хочу выходить из него.

smonff
источник

Ответы:

59

Используйте C-x C-fи введите /su::/etc/hostnameили, /sudo::/etc/hostnameесли применимо.

Это использует пакет TRAMP , который распространяется с Emacs. Этот пакет предоставляет доступ к удаленным файлам и, в более общем смысле, к файлам, которые Emacs не может открыть напрямую.

artagnon
источник
1
Благодарю. В чем смысл ::?
Smonff
7
Является разделителем; мы предоставляем его во второй раз, чтобы указать, что больше нет аргументов. Вы можете /su:otheruser@localhost:, например.
Артаньон
5
/sudo::является сокращением бродяги дляsudo:root@<hostname>:
Филс
9

Используйте find-fileс бродягой. В приглашении /sudo::/etc/ssh/ssh_configбудет использовать sudo и подоболочку, чтобы открыть этот файл с правами суперпользователя. Когда sudo используется впервые, он запрашивает пароль, но до закрытия этого сеанса вы можете редактировать любой файл с этими разрешениями, используя префикс существующей /sudo::команды.

См. Http://www.gnu.org/software/tramp/ для получения более подробной информации.

dgtized
источник
3

Если вы используете ivyпакет и настроили его counsel-find-fileна замену find-file, то одно из предварительно настроенных для вас «действий плюща» - это отредактировать файл как root. hydraКлавиша по умолчанию для этого действия r.

user1404316
источник
2

Сегодня существует множество пакетов, которые решают эту проблему (по состоянию на 2018 год). Некоторые из них:

  • sudo-edit, позволяет переключать права редактирования уже открытого файла только для чтения. Просто M-x sudoи введите пароль, и все готово. После многих лет использования этого, я думаю, что это более удобно для этой необходимости. sudo-editпозволяет открыть файл как любой пользователь, но по умолчанию это sudo, если ничего не указано.
  • dired-toggle-sudo, Это было первое упакованное решение, которое я нашел после того, как задал этот вопрос. Он ориентирован на Dired, поэтому, если вы предпочитаете файлово- ориентированную версию, смотрите первый пункт этого списка.
  • Другие решения существуют на Melpa
smonff
источник
2

Если вы используете шлем. Вам не нужно никаких внешних пакетов / дополнительных настроек. это работает из коробки.

Внутри helm-find-filesвы можете ссылаться на find file as rootкоторые связаны C-c r. Это работает для файлов или каталогов в helm-find-filesсеансе.

Если вы не хотите вводить пароль каждый раз, когда открываете корневые файлы / каталоги. Поместите следующую строку в ваш~/.authinfo.gpg

machine localhost port sudo login root password xxxxxx
machine your_machine_name port sudo login root password xxxxx

источник

azzamsa
источник