Existe alguma maneira de alterar o valor de "PermitRootLogin" por /etc/ssh/sshd_config
meio de um comando no terminal?
Quero alterar os valores deste arquivo sem abri-lo e alterar o valor de "PermitRootLogin" de sim para não.
Responder1
É perfeitamente possível fazer isso com sed
, combinar a linha e alterar o valor:
sed -i '/^PermitRootLogin/s/yes/no/' /etc/ssh/sshd_config
^PermitRootLogin
corresponde à linha que começa comPermitRootLogin
s/yes/no
altera o valor da opção de “sim” para “não”
Responder2
Quero alterar o valor de "PermitRootLogin" de sim para não.
Neste caso eu usaria Perl (ou seja, algo que funciona com campos e que pode editar no local; Sed falha no primeiro e AWK falha no segundo):
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
Responder3
Você pode alterá-los com sed, use a opção -i
sed -i -e 's/old/new/g' file
Veja man sed para detalhes
Responder4
Qualquer programa que de alguma forma lide com arquivos, deve emitir open()
também read()
chamadas de sistema, que podem ser verificadas com strace
. Abrir um arquivo sem essas chamadas de sistema é impossível
Sua pergunta parece perguntar se um arquivo pode ser editado sem editor de texto. Isso é possível, como outros demonstraram. Minha pequena contribuição aqui é a seguinte:
awk '/^PermitRootLogin/{$2="yes"}1' /etc/ssh/sshd_config > /tmp/sshd_config && mv /tmp/sshd_config /etc/ssh/sshd_config
Basicamente com AWK , encontramos a linha apropriada, substituímos o campo 2 , que é "não" por "sim", enviamos tudo para o arquivo tmp e substituímos o original pelo arquivo tmp usando mv
.
Lembre-se de que a propriedade desse arquivo de configuração pertence ao root, então você precisaria sudo
de acesso (adicionar sudo
antes mv
)