Есть ли любой способ изменить значение "PermitRootLogin" в /etc/ssh/sshd_config
через одну команду в терминале?
Я хочу изменить значения этого файла, не открывая его и изменить значение "PermitRootLogin" от да до нет.
Совершенно возможно сделать это с sed
, соответствие для строки и изменить значение:
sed -i '/^PermitRootLogin/s/yes/no/' /etc/ssh/sshd_config
^PermitRootLogin
соответствия строка, запускающаяся с PermitRootLogin
s/yes/no
изменения значение опции от "да" до "нет" Можно изменить их с sed, использовать-i опцию
sed -i -e 's/old/new/g' file
, Посмотрите человека sed для detials
Если Вы имеете в виду, "не открывая файл в редакторе", это возможно.
, Например, можно использовать 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
Любая программа, которая всегда имеет дело с файлами, должна иметь к системным вызовам, выпуска 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
)
Можно использовать Vim в режиме Ex:
ex -sc '/^PermitRootLogin/s/yes/no/|x' /etc/ssh/sshd_config
s
замена
x
сохраняет и закрывается
Я хочу изменить значение "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