¿Hay alguna forma de cambiar el valor de "PermitRootLogin" /etc/ssh/sshd_config
mediante un comando en la terminal?
Quiero cambiar los valores de este archivo sin abrirlo y cambiar el valor de "PermitRootLogin" de sí a no.
Respuesta1
Es perfectamente posible hacerlo con sed
, hacer coincidir la línea y cambiar el valor:
sed -i '/^PermitRootLogin/s/yes/no/' /etc/ssh/sshd_config
^PermitRootLogin
coincide con la línea que comienza conPermitRootLogin
s/yes/no
cambia el valor de la opción de "sí" a "no"
Respuesta2
Quiero cambiar el valor de "PermitRootLogin" de sí a no.
En este caso, usaría Perl (es decir, algo que funcione con campos y que pueda editarse en el lugar; Sed falla en el primero y AWK falla en el 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
Respuesta3
Puedes cambiarlos con sed, usa la opción -i
sed -i -e 's/old/new/g' file
Consulte al hombre sed para obtener más detalles.
Respuesta4
Cualquier programa que de alguna manera trate con archivos debe emitir open()
además read()
llamadas al sistema, lo cual se puede verificar con strace
. Abrir un archivo sin esas llamadas al sistema es imposible
Su pregunta parece ser si un archivo se puede editar sin un editor de texto. Eso es posible, como han demostrado otros. Mi pequeño aporte aquí es el siguiente:
awk '/^PermitRootLogin/{$2="yes"}1' /etc/ssh/sshd_config > /tmp/sshd_config && mv /tmp/sshd_config /etc/ssh/sshd_config
Básicamente, con AWK, encontramos la línea apropiada, reemplazamos el campo 2, que es "no" por "sí", enviamos todo al archivo tmp y reemplazamos el original con el archivo tmp usando mv
.
Recuerde que la propiedad de ese archivo de configuración pertenece a root, por lo que necesitaría sudo
acceso (agregar sudo
antes mv
)