Estoy tratando de actualizar de forma segura el directorio de inicio como se especifica en /etc/passwd
, pero Cygwin no proporciona las utilidades estándar de Linux (usermod y vipw) para hacerlo.
¿Alguien podría decirme cómo cambiaron esto en Cygwin?
Respuestas:
EDITAR: Para versiones recientes de Cygwin (1.7.34 y posteriores), consulte esta pregunta más reciente .
Como la respuesta de sblundy, siempre puedes editar a mano.
Pero si desea hacerlo de la forma "oficial", utilice el
mkpasswd
comando específico de cygwin . A continuación se muestra un fragmento de los documentos oficiales sobremkpasswd
:Hay un montón de otros comandos realmente útiles descritos en la página de documentación de Cygwin Utilities (que incluye
mkpasswd
). El uso decygpath
en el ejemplo anterior es otra de estas herramientas específicas de cygwin.Mientras lo hace, probablemente también desee leer la documentación de Uso eficaz de Cygwin con Windows . Hay un montón de buenos consejos.
fuente
-d
para el dominio)$ mkpasswd -l -d -p "$(cygpath -H)" > /etc/passwd
Esto no funcionó para mí, básicamente se colgó. Como soy el único que usa esta máquina, podría usar esta alternativa, que debería ser segura ya sea que esté o no en un dominio (-c
es para "usuario actual")$ mkpasswd -l -c -p "$(cygpath -H)" > /etc/passwd
$HOME
. ¿Algúna idea de cómo arreglar esto?Terminé saliendo de todos mis shells cygwin y editándolos a mano en un editor de texto. Hasta ahora tan bueno.
Nota: no escapes de los espacios en el directorio "Documentos y configuraciones". La entrada se verá como
La línea está tokenizada en el
:
personaje.fuente
La respuesta más simple que he encontrado es hacer que / home sea un enlace suave a su directorio Windows Home / UserProfile
Usé cygpath ya que obtendrá la ubicación adecuada para el directorio HOME en la versión actual de Windows. En mi caja
cygpath -H
regresa/cygdrive/c/Users
fuente
cygwin -H
por defecto. Es la ubicación más sensata y, desde Windows 7, tampoco hay espacio en su camino.Para el usuario actual, lo siguiente funcionó para mí:
Confirmé que funcionaba ejecutando ssh-keygen sin ningún argumento. Después de realizar este cambio, la aplicación ahora tiene como valor predeterminado guardar la clave en / cygdrive / c / Users / user en lugar de / home / user.
No sé si es necesario configurar HOME, pero lo hice de todos modos según las instrucciones para configurar TortoiseGit con Cygwin usando la documentación oficial de Tortoise para soporte no oficial de Cygwin aquí . Sin embargo, configurar HOME 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.
fuente
Siempre configuro HOME como una variable de entorno específica del usuario en Propiedades del equipo.
fuente
Para evitar problemas causados por tener espacios en la ruta a su directorio de inicio, use la forma abreviada del directorio 'Perfiles' de Windows, es decir
/cygdrive/c/DOCUME~1/user
.Puede hacer esto escribiendo el comando:
mkpasswd -l -p "$(cygpath $(cygpath -dH))" > /etc/passwd
fuente
Me gusta mantener mi instalación de cygwin sincronizada con un pendrive y otra computadora, así que odio codificar el directorio de inicio. Yo uso el siguiente cygwin.bat:
SETLOCAL y ENDLOCAL se aseguran de que SHELL y HOME no superen las variables env existentes para otros programas.
HOME=%~dp0..\..\doc\unix
establece HOME para que esté dos directorios arriba, en el subdirectorio doc / unix. Luego, en .... \ doc \ unix.bashrc, incluyoPATH="/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin"
. No uséstart /wait %CD%\bin\bash
para iniciar bash, porque estoy usando Console2 , por lo que no necesito una ventana de cmd adicional.fuente
Uso de la variable de entorno de Windows: INICIO
Esto me funciona para una solución permanente, no portátil y sin red; es decir, establecer la variable de entorno HOME de forma permanente en Windows.
Tenga en cuenta que esto no afecta a las sesiones ssh o telnet que siempre se refieren a / etc / passwd
ref: Configuración de Cygwin- Mi variable de entorno HOME no es lo que quiero.
CMD
Para el usuario actual (debe ejecutarse una vez por usuario):
Para nuevos usuarios:
Nota: intercalaciones ^ antes de los signos de porcentaje%
IMPORTAR ARCHIVO REG
Importe este archivo de registro ( usuario actual ):
Para nuevos usuarios:
REGÉDITO
En Regedit, bajo:
Para el usuario actual :
Para nuevos usuarios:
Cree HOME como un nuevo valor de cadena expandible (* REG_EXPAND_SZ *) y coloque % USERPROFILE%
fuente
Cygwin 1.7.34+
Para aquellos que usan Cygwin 1.7.34 o superior, Cygwin admite la configuración de cómo obtener el directorio de inicio, el shell de inicio de sesión y la información de gecos en formato
/etc/nsswitch.conf
. Esto se detalla en la sección de la Guía del usuario de Cygwin:Si ha creado anteriormente un archivo
/etc/passwd
o/etc/group
, querrá eliminarlos y configurar Cygwin utilizando el nuevo modelo de seguridad de Windows para las asignaciones POSIX.La configuración
/etc/nsswitch.conf
del archivodb_home:
define cómo Cygwin obtiene el directorio de inicio del usuario. La configuración predeterminada paradb_home:
esEntonces, de forma predeterminada, Cygwin simplemente establece el directorio de inicio en
/home/$USERNAME
. Sin embargo, 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 (que es u minúscula).%U
El nombre de usuario de Windows (que es la U mayúscula).%D
Dominio de Windows en estilo NetBIOS.%H
Directorio de inicio de Windows en estilo POSIX. Tenga en cuenta que, para ladb_home:
configuración, esto solo tiene sentido justo después de la barra anterior, como endb_home: /%H/cygwin
%_
Dado que el espacio y los caracteres TAB se utilizan para separar los esquemas, se debe dar un espacio en el nombre del archivo como%_
(que es un guión bajo).%%
Un carácter de porcentaje.En lugar de una ruta, puede especificar uno de los cuatro esquemas de ruta con nombre que están predefinidos.
windows
El directorio de inicio del usuario se establece en el mismo directorio que se utiliza como directorio de inicio de Windows, normalmente algo similar a%USERPROFILE%
oC:\Users\$USERNAME
. Por supuesto, Cygwin convierte el directorio de Windows al estilo POSIX.cygwin
Solo AD: el directorio de inicio del usuario se establece en la ruta POSIX dada en el atributo cygwinHome de la clase auxiliar cygwinUser. Consulte también la sección denominada "El esquema cygwin" .unix
Solo AD: el directorio de inicio del usuario se establece en la ruta POSIX dada en el atributo unixHomeDirectory de la clase auxiliar posixAccount. Vea también la sección llamada "El esquema de Unix" .desc
El directorio de inicio del usuario se establece en la ruta POSIX dada en la configuración similar a XML home = "..." en el atributo de descripción del usuario en SAM o AD. Consulte la sección llamada "El esquema desc" para obtener una descripción detallada.Lo siguiente hará que el directorio de inicio del usuario en Cygwin sea el mismo que se utiliza para el directorio de inicio de Windows.
Cygwin 1.7.33 o anterior
Para aquellos que usan Cygwin 1.7.33 o anterior, actualice a la última versión de Cygwin y elimine los archivos
/etc/passwd
y usados anteriormente/etc/group
, luego consulte los pasos anteriores.De lo contrario, siga estos pasos anteriores a continuación.
En primer lugar, configure una variable de entorno de Windows para HOME que apunte a su perfil de usuario:
HOME
%USERPROFILE%
Ahora vamos a actualizar el
/etc/passwd
archivo Cygwin con la%HOME%
variable de Windows que acabamos de crear. Los inicios de sesión de Shell y los inicios de sesión remotos víassh
dependerán/etc/passwd
para indicarles la ubicación de la$HOME
ruta del usuario .En el símbolo del sistema de Cygwin bash, escriba lo siguiente:
El
-d
conmutador le dice a mkpasswd que incluya a los usuarios de DOMINIO, mientras-l
que solo genera usuarios de máquinas LOCALES. 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 utilice una computadora que sea parte de un dominio de Windows. Cygwin lee la información del grupo de las bases de datos de la cuenta de Windows, pero puede agregar un
/etc/group
archivo si su máquina a menudo se desconecta de su controlador de dominio.En el indicador de Cygwin bash, escriba lo siguiente:
Ahora, salga de Cygwin y vuelva a iniciarlo. Debería encontrar que su ruta de INICIO apunta a la misma ubicación que su perfil de usuario de Windows, es decir
/cygdrive/c/Users/username
fuente
No estoy realmente seguro de si es la solución más segura, pero es una posible solución que funciona para mí;)
fuente
Edité mi archivo / etc / passwd directamente (asegurándome de que nada más accedería a él) y cambié todas las referencias a / home a / Users (en Windows 7). Descubrí que, para que todo funcionara correctamente, tenía que eliminar todos los directorios del directorio / home (o moverlos a la otra ubicación adecuada). 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ía hacer lo contrario. Una vez que borré / home / Pablo, todo funcionó bien.
fuente
Solo necesitaba estar
C:\Users\username
cuando comenzara con cygwin. Entonces, solo agregué.bashrc
y.profile
cd ${HOMEPATH}
Si prefiere usar en
~/.
lugar de$HOMEPATH
, también puede agregar lo siguiente:export HOME=${HOMEPATH}
De esta forma no interrumpo la instalación de cygwin.
fuente