Renombrar/cambiar el nombre de usuario de cygwin
username (3)
Cuando inicia por primera vez el shell de Cygwin, inicia sesión como el usuario que está en Windows. ¿Cómo cambia solo el nombre de usuario de ese usuario, dejando la asociación existente de cygwin del usuario de Cygwin con el usuario de Windows? (es decir, sin crear una cuenta de Windows completamente nueva)
¿Por qué? Acabo de pasar de una máquina virtual a Cygwin y deseo reutilizar todos mis scripts y personalizaciones de shell que asumen un nombre de usuario específico (piense en .ssh / config, .subversion, etc.) sin cambios.
Esto es lo que hice que funcionó en Windows 10 que combina elementos de otras dos respuestas:
- Verifica que tu Cygwin / etc / passwd no exista
- cd / home
- mv oldname newname
- ln -s newname oldname
- "mkpasswd -l> / etc / passwd" (esto insertará muchas cuentas en su nuevo / etc / passwd)
- edite / etc / passwd y busque la entrada oldname, y modifique "oldname" por "newname" en tres lugares en esa única entrada de una línea
- matar a todos los proyectiles cygwin
- trae una nueva concha cygwin
¡Disfrutar! Puede ser que los pasos 5-8 funcionen solos, pero son las 3:17 am y no me importa.
Mi nombre de usuario original era root
(bajo Windows, irónicamente), y quería que fuera someuser
. Pensé que querría que mi directorio de inicio fuera también /home/someuser
, y que fuera legible desde Windows.
Esto es lo que hice:
cd /home
mv root someuser
ln -s someuser root
sed -e ''s/^root/someuser/'' -e ''s///home//root///home//user/'' -i /etc/passwd
Y eso es todo, simplemente reinicie el shell.
Hice el enlace simbólico en caso de que Cygwin actualice /etc/passwd
por algún motivo, y restaure el nombre de usuario a root
y su directorio de inicio a /home/root
, para que aún sea posible iniciar sesión.
(Para cambiar solo el nombre de usuario: sed -e ''s/^root/someuser/'' -i /etc/passwd
)
Para las personas que comienzan con una instalación Cygwin limpia, un enfoque podría ser crear un nuevo /etc/passwd
(no existe por defecto en las versiones actuales de Cygwin) usando mkpasswd -l >/etc/passwd
lo que creará una entrada para cada usuario ( agregue -b
para omitir los usuarios incorporados o simplemente -c
para crear solo una entrada para el usuario actual, consulte https://cygwin.com/cygwin-ug-net/mkpasswd.html ).
A continuación, simplemente abra /etc/passwd
cambie el nombre de la cuenta allí (primera columna).
Consulte https://cygwin.com/cygwin-ug-net/ntsec.html para obtener una descripción de cómo Cygwin maneja la asignación entre "Cygwin" y el usuario de Windows. Ah, y también hay un mkgroup
que puede usarse de manera similar, consulte https://cygwin.com/cygwin-ug-net/mkgroup.html .
Verá que la creación no se recomienda oficialmente pero, según mi experiencia, no ha causado ningún problema, tal vez podría hacerlo si haría cosas bastante avanzadas relacionadas con los derechos de usuario / grupo o si no la mantuviera actualizada cuando cambiar los usuarios de Windows.