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


53

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

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

Ответы:


59

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

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


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/ для получения более подробной информации.


3

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


2

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

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

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

источник

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.