Usamos git para rastrear cambios en /etc/
nuestros servidores.
Los administradores trabajan como root cuando cambian archivos en / etc /, y por lo tanto sus commits tienen autor
root <root@machinename>
Esto no es muy satisfactorio ya que no puede ver qué administrador realmente hizo el cambio.
¿Qué podemos hacer para obtener los nombres de administrador reales en el registro de git? No creo que sea factible mantener un clon local del repositorio ya que a menudo cambiamos de manera interactiva hasta que algo funciona, y un ciclo change-commit-push-seeError-repeat no ayudaría aquí.
etckeeper
, se encarga de las cosas raras como esta en el control de versiones / etc. También comience a usar cuentas por usuario ysudo
.Respuestas:
El autor Git y el nombre del confirmador pueden ser influenciados con las variables de entorno
GIT_COMMITTER_NAME
,GIT_COMMITTER_EMAIL
,GIT_AUTHOR_NAME
yGIT_AUTHOR_EMAIL
.Ahora el truco es enviar esas variables al servidor remoto cuando se conecta a través de SSH:
Defina y exporte las variables en su
~/.bashrc
archivo:Envíelos automáticamente con una conexión SSH ajustando
~/.ssh/config
:LANG
yLC_*
no son necesarios, pero Debian tiene su ssh_config predeterminado, así que pensé que debería enviarlos tambiénEn el servidor remoto, ajuste la configuración de sshd
/etc/ssh/sshd_config
para aceptarGIT_*
variables de entorno:Voila - a
git commit
como raíz en/etc/
conduce a:En caso de fallas del servidor por defecto en el futuro: http://cweiske.de/tagebuch/carry-git-settings.htm
fuente
Primero, y no relacionado con su pregunta, le insto a que que deje de usar los
root
inicios de sesión urgenciasu
y, en susudo
lugar, use los inicios de sesión de los usuarios . Restrinja susroot
inicios de sesión solo a la consola, o ni siquiera eso.Dicho esto,
git commit
tiene una--author
opción que puede ayudarte allí:También puede usar cuidadosamente las variables de entorno por usuario para establecer
GIT_AUTHOR_NAME
y lasGIT_AUTHOR_EMAIL
variables. En el registro, aparecerán diferentes autores y el mismo commiter (root@host
), pero le dará más auditoría. Por supuesto, eso significa que confía en sus administradores para mantener las variables intactas. Como cada uno usa un shell específico, puedensudo
rootear y obtener un archivo con susgit
variables específicas , identificando cada uno de manera diferente en los commits. No es muy práctico, pero incluso puede automatizar eso con scripts.EDITAR: Por supuesto, un enfoque aún mejor según lo designado por @ScottPack sería usar un sistema de administración de configuración como Puppet o Chef y usar git para rastrear los cambios en el servidor central y no en los servidores reales para que cada administrador pueda tener una copia de trabajo de la configuración.
fuente
--author
es posible, por supuesto, pero la gente no usa eso en su flujo de trabajo normal ya que es demasiado para escribir. En su segunda idea de usar sudo: soy una de las personas que considera sudo dañino y prefiero usar el acceso raíz ssh solo con claves ssh. Y sí, confiamos en nuestros administradores.sudo
que obliga al usuario que escriba una contraseña (incluso si usa una clave ssh para iniciar sesión como su usuario) y usted puede controlar lo que el usuario puede ejecutar y principalmente tiene una pista de auditoría de quién ha hecho qué. Pero todos tienen derecho a su propia opinión.sudo
para obligar a un usuario a ingresar una contraseña para cada comando (timestamp_timeout = 0
). Tal vez no sea adecuado para el desarrollo y los escenarios, pero ciertamente es adecuado para la producción. En mi humilde opinión, sobre la base del consenso de SF, debe repensar sus puntos de vistasudo
. Una de las mejores cosas de SF es tener una comunidad de compañeros que realmente conocen su mierda :-).Con masilla puede configurar esto en "Conexión -> Datos -> Variables de entorno".
También están presentes después de '
su
' a la raíz.fuente
Si aprovisiona cuentas de usuario en sus servidores utilizando claves ssh, puede adjuntar variables de entorno a las claves autorizadas en el momento de la configuración, por ejemplo en ~ bob / .ssh / Authorizedkeys
De esta manera, cuando los usuarios de SSH ingresan, automáticamente configuran estos envs; no es necesario que los reenvíen desde el cliente local. Puntos de bonificación si ya tiene esta información y está generando configuraciones de claves_autorizadas desde un sistema de administración de configuración.
Nota: Lo anterior requiere
PermitUserEnvironment yes
en sshd_configfuente
Si estas usando
sudo
y su usuario no root tiene su directorio de inicio montado:git -c include.path=<file>
incluirá la configuración en<file>
.Para extraer automáticamente los archivos de configuración de mi usuario no root, utilizo el
bash
alias:Entonces uso
gsudo
lugar degit
ambos:Verifique que la configuración se esté importando:
fuente
Además de la respuesta de coredump, también puede configurar estas opciones en el
.git/config
archivo en su copia de trabajo del repositorio (a mano o con elgit config
comando.Consulte
man git-config
para obtener más información sobre el comando y las cosas interesantes que puede hacer con él.fuente