como alterar o valor dos arquivos do sistema sem abri-los?

como alterar o valor dos arquivos do sistema sem abri-los?

Existe alguma maneira de alterar o valor de "PermitRootLogin" por /etc/ssh/sshd_configmeio 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
  • ^PermitRootLogincorresponde à linha que começa comPermitRootLogin
  • s/yes/noaltera 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

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

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 sudode acesso (adicionar sudoantes mv)

informação relacionada