una poner organizar mp3tag etiquetas etiquetar etiqueta español documentos como colorear carpetas archivos archivo agregar cygwin etcpasswd

cygwin - organizar - poner etiquetas a carpetas en windows



Cambiar de forma segura el directorio de inicio (11)

Edité mi archivo / etc / passwd directamente (asegurándome de que nada más accedería a él), y cambié todas las referencias a / home to be / Users (en Windows 7). Descubrí que, para que todo funcione correctamente, tuve que eliminar cualquier directorio en el directorio / home (o moverlos a la otra ubicación apropiada). De lo contrario, cygwin desarrollaría una personalidad dividida donde, por ejemplo, ''bash -l'' comenzaría en / home / Pablo, pero $ HOME sería / Users / Pablo y emacs parecerían hacer lo contrario. Una vez que eliminé / home / Pablo, todo funcionó bien.

Estoy tratando de actualizar de manera segura el directorio de inicio como se especifica en /etc/passwd , pero las utilidades de Linux estándar - usermod y vipw - para hacerlo no son provistas por Cygwin.

¿Alguien podría decirme cómo cambiaron esto en Cygwin?


Siempre configuro HOME como una variable de entorno específica del usuario en Computer Properties.


Me gusta mantener sincronizada mi instalación Cygwin con un pen drive y otra computadora, por lo que odio codificar el directorio de inicio. Yo uso el siguiente cygwin.bat:

echo off SETLOCAL set SHELL=//bin//bash set HOME=%~dp0../../doc/unix bin/bash --login -i ENDLOCAL

SETLOCAL y ENDLOCAL se aseguran de que SHELL y HOME no bloqueen las variables env existentes para otros programas. HOME=%~dp0../../doc/unix configura HOME para que sean dos directorios hacia arriba, en el subdirectorio doc / unix. Luego, en .... / doc / unix.bashrc, incluyo PATH="/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin" . No utilicé start /wait %CD%/bin/bash para iniciar bash, porque estoy usando Console2 , así que no necesito una ventana adicional de cmd.


Usando la variable de entorno de Windows: HOME

Esto funciona para mí para una solución permanente, no portátil, que no sea de red; es decir, establecer la variable de entorno HOME de forma permanente en Windows.

Tenga en cuenta que esto no afecta a las sesiones de ssh o telnet que siempre se refieren a / etc / passwd

ref: Configuración de la variable de entorno Cygwin- My HOME no es lo que quiero.

CMD

Para el usuario actual (necesita ejecutarse una vez por usuario) ::

reg add HKCU/Environment /v HOME /t REG_EXPAND_SZ /d ^%USERPROFILE^%

Para nuevos usuarios:

reg add HKU/.DEFAULT/Environment /v HOME /t REG_EXPAND_SZ /d ^%USERPROFILE^%

Nota: Cuidado ^ antes del porcentaje-signos%

IMPORT REG FILE

Importar este archivo reg (usuario actual ):

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER/Environment] "HOME"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,/ 00,45,00,25,00,00,00

Para nuevos usuarios:

Windows Registry Editor Version 5.00 [HKU/.DEFAULT/Environment] "HOME"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,/ 00,45,00,25,00,00,00

REGEDIT

En Regedit, bajo:

Para el usuario actual :

HKEY_CURRENT_USER/Environment

Para nuevos usuarios:

HKU/.DEFAULT/Environment

Cree HOME como un nuevo valor de cadena expandible (* REG_EXPAND_SZ *) e ingrese% USERPROFILE%


Para evitar problemas causados ​​por tener espacios en la ruta a su directorio de inicio, use la forma abreviada del directorio de Windows ''Perfiles'', es decir, /cygdrive/c/DOCUME~1/user .

Puedes hacer esto escribiendo el comando:

mkpasswd -l -p "$(cygpath $(cygpath -dH))" > /etc/passwd


Terminé saliendo de todos mis shells cygwin y editándolos a mano en un editor de texto. Hasta aquí todo bien.

Nota: no escape los espacios en el directorio "Documentos y configuraciones". La entrada se verá como

user:...:/cygdrive/c/Documents and Settings/user:/bin/bash

La línea se tokeniza en el : carácter.


Para el usuario actual, lo siguiente funcionó para mí:

  1. Cerrar Cygwin.
  2. Establezca la variable de entorno de usuario de HOME Windows.
  3. Comience Cygwin.
  4. ejecuta "mkpasswd -c -p" $ (cygpath -H) "> / etc / passwd".
  5. Reinicia Cygwin.

Confirmé que funcionaba ejecutando ssh-keygen sin ningún argumento. Después de realizar este cambio, la aplicación ahora de forma predeterminada guarda la clave en / cygdrive / c / Users / user en lugar de / home / user.

No sé si se requiere configurar HOME, pero lo hice de todas formas siguiendo las instrucciones para configurar TortoiseGit con Cygwin usando la documentación oficial de Tortoise para el soporte no oficial de Cygwin aquí . Sin embargo, configurar el valor de HOGAR solo no fue suficiente para que ssh-keygen reconociera el cambio del directorio de inicio.

Además, tenga en cuenta que la documentación oficial de Cygwin sobre este tema se puede encontrar aquí .

Confirmado en Windows 7 usando Cygwin v1.7.35 de 64 bits.


cd /home rm -rf chris ln -s /cygdrive/z chris

No estoy seguro de si es la solución más segura, pero es una solución posible que funciona para mí;)


La respuesta más simple que he encontrado es hacer que / home sea un enlace suave a su directorio de Windows Home / UserProfile

cd / mv home oldhome ln -s "$(cygpath -H)" home

Utilicé cygpath, ya que obtendrá la ubicación correcta para el directorio HOME en la versión actual de Windows. En mi caja cygpath -H returns /cygdrive/c/Users


Respuesta original de Christopher de otra parte

Cygwin 1.7.34+

Para quienes usan Cygwin 1.7.34 o superior, Cygwin admite la configuración de cómo recuperar el directorio de inicio, el shell de inicio de sesión y la información de gecos en /etc/nsswitch.conf . Esto se detalla en la sección de la Guía del usuario de Cygwin:

Si ha creado previamente un /etc/passwd o /etc/group , querrá eliminarlos y configurar Cygwin utilizando el nuevo modelo de seguridad de Windows para las asignaciones de POSIX.

[[ -f /etc/passwd ]] && mv /etc/passwd /etc/passwd.bak [[ -f /etc/group ]] && mv /etc/group /etc/group.bak

La /etc/nsswitch.conf db_home: del archivo /etc/nsswitch.conf define cómo Cygwin recupera el directorio de inicio del usuario. La configuración predeterminada para db_home: es

db_home: /home/%U

Entonces, de forma predeterminada, Cygwin simplemente establece el directorio de inicio en /home/$USERNAME . Puede cambiar eso para apuntar a cualquier otra ruta personalizada que desee. Los caracteres comodín admitidos son:

  • %u El nombre de usuario de Cygwin (eso es u en minúscula).
  • %U El nombre de usuario de Windows (eso es U mayúscula).
  • %D dominio de Windows en estilo NetBIOS.
  • %H Directorio de inicio de Windows en estilo POSIX. Tenga en cuenta que, para el ajuste db_home: esto solo tiene sentido justo después de la barra anterior, como en db_home: /%H/cygwin
  • %_ Como los caracteres espacio y TAB se usan para separar los esquemas, un espacio en el nombre del archivo se debe dar como %_ (que es un guión bajo).
  • %% Un personaje por ciento.

En lugar de una ruta, puede especificar uno de los cuatro esquemas de ruta nombrados que están predefinidos.

  1. windows El directorio de inicio del usuario está configurado en el mismo directorio que se usa como directorio de inicio de Windows, generalmente algo en la línea de %USERPROFILE% o C:/Users/$USERNAME . Por supuesto, el directorio de Windows se convierte a estilo POSIX por Cygwin.

  2. Solo cygwin AD: el directorio de inicio del usuario se establece en la ruta POSIX proporcionada en el atributo cygwinHome de la clase auxiliar cygwinUser. Ver también la sección llamada "El esquema cygwin" .

  3. unix AD only: el directorio de inicio del usuario se establece en la ruta POSIX dada en el atributo unixHomeDirectory de la clase auxiliar posixAccount. Ver también la sección llamada "El esquema de Unix" .

  4. desc El directorio desc usuario se establece en la ruta POSIX dada en la configuración home = "..." XML-like en el atributo de descripción del usuario en SAM o AD. Consulte la sección llamada "El esquema de descifrado" para obtener una descripción detallada.

Lo siguiente hará que el directorio de inicio del usuario en Cygwin sea el mismo que se usa para el directorio de inicio de Windows.

db_home: windows

Cygwin 1.7.33 o anterior

Para aquellos que usan Cygwin 1.7.33 o anterior, actualicen a la última versión de Cygwin y eliminen los archivos /etc/passwd y /etc/group previamente utilizados, luego vea los pasos anteriores.

De lo contrario, siga estos pasos anteriores más abajo.

En primer lugar, establezca una variable de entorno de Windows para HOME que apunte a su perfil de usuario:

  1. Sistema abierto en el panel de control
  2. En la pestaña Avanzado, haga clic en Variables de entorno (hacia abajo)
  3. En el área Variables de usuario, haga clic en "Nuevo ..."
  4. Para nombre de variable, ingrese HOME
  5. Para el valor de variable, ingrese %USERPROFILE%
  6. Haga clic en Aceptar en todos los cuadros de diálogo abiertos para aplicar esta nueva configuración

Ahora vamos a actualizar el /etc/passwd Cygwin /etc/passwd con la variable Windows %HOME% que acabamos de crear. Los inicios de sesión de Shell y los inicios de sesión remotos a través de ssh se basarán en /etc/passwd para indicarles la ubicación de la ruta $HOME del usuario.

En el indicador de comando Cygwin bash, escriba lo siguiente:

cp /etc/passwd /etc/passwd.bak mkpasswd -l -p $(cygpath -H) > /etc/passwd mkpasswd -d -p $(cygpath -H) >> /etc/passwd

El -d le dice a mkpasswd que incluya usuarios de DOMINIO, mientras que -l solo debe enviar usuarios de la máquina LOCAL. Esto es importante si está utilizando una PC en el trabajo donde la información del usuario se obtiene de un controlador de dominio de Windows.

Ahora, también puede hacer lo mismo para los grupos, aunque esto no es necesario a menos que use una computadora que sea parte de un Dominio de Windows. Cygwin lee información de grupo de las bases de datos de cuenta de Windows, pero puede agregar un /etc/group si su máquina a menudo está desconectada de su Controlador de dominio.

En el indicador de bash de Cygwin, escriba lo siguiente:

cp /etc/group /etc/group.bak mkgroup -l > /etc/group mkgroup -d >> /etc/group

Ahora, salga de Cygwin y vuelva a iniciarlo. Debería encontrar que su ruta HOME apunta a la misma ubicación que su perfil de usuario de Windows, es decir, /cygdrive/c/Users/username


EDITAR: para las versiones recientes de Cygwin (1.7.34 y posteriores), vea esta pregunta más nueva .

Al igual que la respuesta de sblundy, siempre puedes editar con la mano.

Pero si quiere hacerlo de la manera "oficial", use el comando mkpasswd específico de cygwin. A continuación se muestra un fragmento de los documentos oficiales en mkpasswd :

Por ejemplo, este comando:

Ejemplo 3.11. Usar una raíz local alternativa

$ mkpasswd -l -p "$(cygpath -H)" > /etc/passwd

pondría los directorios de inicio de los usuarios locales en el directorio ''Perfiles'' de Windows.

Hay muchos otros comandos realmente útiles que se describen en la página de documentación de Cygwin Utilities (que incluye mkpasswd ). El uso de cygpath en el ejemplo anterior es otra de estas herramientas específicas de cygwin.

Mientras lo hace, probablemente también desee leer el uso efectivo de Cygwin con la documentación de Windows . Hay muchos consejos realmente buenos.