Siguiendo con el tema tratado en el anterior post sobre como encontrar fallos e inconsistencias en los ficheros passwd y shadow, vamos a ver como a la hora de editar ciertos ficheros críticos del sistema debemos asegurarnos de hacerlo de forma correcta. Ficheros como /etc/passwd, /etc/group, /etc/shadow o /etc/sudoers pueden editarse ‘al vuelo‘ con un editor normal (gedit, vi, vim, nano…) pero corremos el peligro de que mientras lo estamos editando sus datos se hayan actualizado y se pierdan los cambios.
visudo
El comando visudo permite modificar en modo seguro el fichero /etc/sudoers. La diferencia de editarlo con visudo a hacerlo con cualquier otro editor es que visudo bloquea el fichero para evitar ediciones simultaneas. Otro punto a favor de editar sudoers de esta forma es que en el momento de guardar los cambios realiza un chequeo del fichero en busca de fallos de sintaxis y todo tipo de errores, y en caso de encontrarlos no nos permitirá guardar el fichero y nos indicará el número de línea donde se encuentra el error, permitiéndonos editar el fichero o salir sin guardar.
# visudo
Durante la edición:
$ ls -l /etc/sudoers* -r--r----- 1 root root 574 2011-04-15 19:02 /etc/sudoers -rw------- 1 root root 574 2011-04-15 19:02 /etc/sudoers.tmp
Y en el caso de que cometamos un fallo en la sintaxis dentro del archivo, al guardar nos avisa del problema:
# visudo >>> /etc/sudoers: syntax error near line 9 <<< What now? Options are: (e)dit sudoers file again e(x)it without saving changes to sudoers file (Q)uit and save changes to sudoers file (DANGER!)
vipw y vigr
Los comandos vipw y vigr permiten editar los ficheros /etc/passwd y /etc/group respectivamente de forma segura. Si quisiéramos editar el fichero /etc/shadow y /etc/gshadow deberíamos utilizar el parámetro -s.
Cabe decir que es recomendable evitar la manipulación directa de estos ficheros y que es conveniente usar los comandos correspondientes para gestión de usuarios: crear, eliminar y modificar usuarios de sistema en Unix. Si fuera estrictamente necesario, la modificación de passwd y shadow sería del siguiente modo:
Primero editamos el fichero /etc/passwd:
# vipw Ha modificado /etc/passwd. Necesitará modificar /etc/shadow por consistencia. Use la orden «vipw -s» para hacerlo.
Y posteriormente editamos el fichero shadow y gshadow:
# vipw -s vipw: /etc/shadow no está cambiado
El bloqueo durante la ejecución:
$ ls -l /etc/passwd* -rw-r--r-- 1 root root 1851 2014-12-18 19:29 /etc/passwd -rw-r--r-- 1 root root 1852 2014-12-18 19:29 /etc/passwd- -rw-r--r-- 1 root root 1851 2014-12-18 19:29 /etc/passwd.edit -rw------- 1 root root 5 2014-12-18 19:30 /etc/passwd.lock
Si no quisiéramos editar el fichero shadow a mano podemos decirle al sistema que lo actualice de forma automática con el comando pwconv:
# pwconv
Y lo mismo cuando editamos grupos con vigr, para evitar la modificación manual de gshadow podemos usar grpconv:
# grpconv
Al igual que con visudo, vigr y vipw bloquean los ficheros para evitar que puedan ser editados a la vez. Para evitar esto se crea un fichero temporal /etc/ptmp y se deshabilita la escritura del mismo.
Os recomiendo revisar las páginas man de los comandos para encontrar información más detallada sobre el funcionamiento y posibilidades de cada uno de ellos.
Hola.
¿Cómo se usa «visudo» con otros archivos?
¿El editor Nano estilo Terminal tiene mismas cualidades?
He editado a través de Pluma (editor de texto de Linux Mint), ¿cómo saber si efctuó incongruencias o errores sobre los ficheros que editó?
Hay ficheros que no se dejan abrir en modo de solo lectura (sin permiso de administrador), y los permite abrir solo en modo administrador, es decir logueandose con comando sudo. Si el usuario equivoca, podría salvar un cambio no esperado por error.
Saludos.