как изменить значение системных файлов, не открывая их?

Есть ли любой способ изменить значение "PermitRootLogin" в /etc/ssh/sshd_config через одну команду в терминале?

Я хочу изменить значения этого файла, не открывая его и изменить значение "PermitRootLogin" от да до нет.

0
задан 24 November 2015 в 23:29

6 ответов

Совершенно возможно сделать это с sed, соответствие для строки и изменить значение:

sed -i '/^PermitRootLogin/s/yes/no/' /etc/ssh/sshd_config
  • ^PermitRootLogin соответствия строка, запускающаяся с PermitRootLogin
  • s/yes/no изменения значение опции от "да" до "нет"
4
ответ дан 26 July 2019 в 14:36

Можно изменить их с sed, использовать-i опцию

sed -i -e 's/old/new/g' file

, Посмотрите человека sed для detials

http://www.grymoire.com/Unix/Sed.html

0
ответ дан 26 July 2019 в 14:36

Если Вы имеете в виду, "не открывая файл в редакторе", это возможно.

, Например, можно использовать sed для замены образцов регулярного выражения фиксированными строками:

sed 's/REGEX-PATTERN/REPLACE-WITH-THIS-STRING/' /PATH/TO/FILE

вышеупомянутая команда распечатает содержание файла со строками, которыми заменяют. Это будет не выполнять замены, просто печатать "предварительный просмотр" !
Для фактического применения замен, проверив их, используйте -i ("замена на месте") флаг:

sed -i 's/REGEX-PATTERN/REPLACE-WITH-THIS-STRING/' /PATH/TO/FILE
0
ответ дан 26 July 2019 в 14:36

Любая программа, которая всегда имеет дело с файлами, должна иметь к системным вызовам, выпуска open() а также read(), которые могут быть проверены с strace. Открытие файла без тех системных вызовов невозможно

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

awk '/^PermitRootLogin/{$2="yes"}1' /etc/ssh/sshd_config > /tmp/sshd_config && mv /tmp/sshd_config /etc/ssh/sshd_config

В основном с AWK, мы находим соответствующую строку, заменяем поле 2, которое является "нет" к "да", производит все в tmp файл и заменяет исходный tmp файлом с помощью mv.

Помнят, что владение того файла конфигурации принадлежит корню, таким образом, Вам было бы нужно sudo доступ (добавьте sudo прежде mv)

0
ответ дан 26 July 2019 в 14:36

Можно использовать Vim в режиме Ex:

ex -sc '/^PermitRootLogin/s/yes/no/|x' /etc/ssh/sshd_config
  1. s замена

  2. x сохраняет и закрывается

0
ответ дан 26 July 2019 в 14:36

Я хочу изменить значение "PermitRootLogin" от да до нет.

В этом случае я использовал бы Perl (т.е. что-то, что работает с полями, и это может отредактировать оперативный; Sed перестал работать в первом и сбоях AWK во втором):

sudo perl -i -lane '/^PermitRootLogin/?print("@F[0] no"):print($_)' /etc/ssh/sshd_config
% grep ^PermitRootLogin /etc/ssh/sshd_config                                                     
PermitRootLogin without-password
% sudo perl -i -lane '/^PermitRootLogin/?print("@F[0] no"):print($_)' /etc/ssh/sshd_config
[sudo] password for user: 
% grep ^PermitRootLogin /etc/ssh/sshd_config                                              
PermitRootLogin no
1
ответ дан 26 July 2019 в 14:36

Другие вопросы по тегам:

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