Pregunta chmod no puede cambiar el permiso de grupo en Cygwin


Estoy usando Cygwin y estoy tratando de cambiar el permiso de acceso grupal con chmod, p.ej.

$ls -l id_rsa
-rwxrwxr-- 1 None 1679 Jun 13 10:16 id_rsa 

$ chmod g= id_rsa 

$ ls -l id_rsa 
-rwxrwxr-- 1 None 1679 Jun 13 10:16 id_rsa 

Pero esto no funciona. Puedo cambiar el permiso para el usuario y otros. Parece que el nivel de permiso para el grupo de alguna manera se mantiene igual que el del usuario?


16
2018-06-13 16:12


origen


Respuestas:


Estaba teniendo un problema similar para ti, y estaba usando el sistema de archivos NTFS, por lo que la respuesta de Keith Thompson no me solucionó.

Cambié el propietario del grupo del archivo a Users grupo:

chown :Users filename

Después de hacer eso, pude cambiar los permisos del grupo a mi voluntad usando chmod. En mi caso, dado que era una clave RSA para OpenSSH, lo hice:

chmod 700 filename

Y funcionó. En Cygwin obtienes dos grupos por defecto, el Root grupo y el Users grupo. Quería agregar otro grupo, pero no pude hacerlo con las herramientas que estoy acostumbrado a usar en Linux. Por esa razón acabo de usar el Users grupo.


31
2017-11-04 23:39



A Cygwin no le gusta que los archivos sean propiedad de grupos que no conoce. Desafortunadamente, eso sucede con bastante frecuencia en Cygwin, especialmente si su PC está en un dominio de Windows donde las cosas siguen cambiando. También sincronizo mis archivos entre dos PC, a través de un disco externo, y los uids / gids son diferentes entre las diferentes PC, por lo que esta es una fuente de problemas.

Si lo haces ls -l y ver una identificación numérica de grupo en lugar de un nombre de grupo, significa que Cygwin no conoce el gid, es decir, no está en /etc/group, y Cygwin tampoco puede consultarlo desde Windows. Puede confirmar esto ejecutando getent group <gid>, dónde <gid> es el id del grupo numérico

Para solucionarlo, puede usar chgrp para cambiar el grupo de todos los archivos / directorios afectados, tal como se describe en la respuesta aceptada anteriormente, o crear una entrada para el archivo gid desconocido en /etc/groupcon cualquier nombre de grupo no utilizado (p. Users2)

Después de hacer esto, puede ser necesario cerrar todas las ventanas de Cygwin y luego volver a abrirlas.


4
2018-06-08 03:14



Un experimento muestra que chmod funciona correctamente para cambiar los permisos de grupo en Cygwin.

El experimento usó un archivo en una partición NTFS. Cygwin implementa una capa POSIX en la parte superior de Windows, pero todavía utiliza las funciones de Windows y la implementación particular del sistema de archivos.

En las versiones modernas de Windows, la mayoría de los discos duros están formateados para usar NTFS, lo que proporciona suficiente soporte para chmod. Pero las unidades USB externas generalmente usan FAT32, que no tiene las mismas capacidades para representar permisos. La capa de Cygwin simula la semántica POSIX tan bien como puede, pero hay mucho que puede hacer.

Tratar

$ df -T .

Si indica que estás usando un sistema de archivos FAT32, ese es probablemente el problema. La solución sería almacenar el archivo en un sistema de archivos NTFS en su lugar. Un archivo llamado id_dsa es probablemente una clave privada SSH, y necesita ser almacenada en $HOME/.ssh de todas formas.

¿Su directorio de inicio está en una partición FAT32? Según recuerdo, las versiones recientes de Windows ("reciente", es decir, los últimos 10 o más años) pueden convertir sistemas de archivos FAT32 a NTFS.


El resto de esta respuesta fue en respuesta a la versión original de la pregunta, que tenía un error tipográfico en el chmod mando.


Cygwin usa la versión de GNU Coreutils de chmod. Esta,

chmod g=0 fileName

no es la sintaxis correcta Yo obtengo:

$ chmod g=0 fileName
chmod: invalid mode: `g=0'
Try `chmod --help' for more information.

(Esto está en Linux, no en Cygwin, pero debería ser el mismo).

Para desactivar todos los permisos de grupo, esto debería funcionar:

$ chmod g= fileName
$ ls -l fileName 
-rw----r-- 1 kst kst 0 Jun 13 10:31 fileName

Ver el chmod documentación:

$ info coreutils chmod

Para ver la documentación en modo de archivo simbólico:

$ info coreutils Symbolic

El formato de los modos simbólicos es:

 [ugoa...][+-=]PERMS...[,...]

donde PERMS es cero o más letras del conjunto 'rwxXst', o un   una sola letra del conjunto 'ugo'.


2
2018-06-13 17:40



Al igual que las respuestas anteriores, los grupos no reconocidos causan dichos problemas. Sucede principalmente en Dominios de Windows.

La forma más fácil de solucionarlo es regenerar tu /etc/passwd y /etc/group archivos (parámetro -d es necesario para los usuarios de dominio):

mkpasswd -l -d > /etc/passwd
mkgroup  -l -d > /etc/group

Cierre y ejecute Cygwin nuevamente.


2
2018-06-27 07:32



Este es un problema muy molesto para mí. En mi caso, la solución de user135348 funcionó mejor. El mayor problema con el chown :Users -R El enfoque es que cada vez que se crea un archivo nuevo, se lo asigna al gid desconocido 1049120. Es muy frustrante seguir cambiando el archivo gid.

Lo intenté mkgroup también, pero en mi caso no funcionó: mi gid es 1049120.

De acuerdo con las reglas explicadas en Asignación de los SID de Windows a los valores de POSID uid / gid  :: 0x100000 offset se utiliza para la cuenta desde el dominio principal de la máquina. Al intentar eliminar el mismo desplazamiento de 1049120, obtienes 544, que es un RID del grupo de administradores incorporado.

Esta cuenta no es miembro del grupo de administradores locales; usamos SuRun para otorgar derechos de administrador sin dar credenciales. En este caso, mkgroup no pudo generar todos los gids posibles.

La edición del archivo de grupo y la adición de un nombre de grupo personalizado siempre parece solucionar el problema fácilmente.


0
2017-10-23 15:54



Tuve este problema cuando trabajé de forma remota desde el Dominio y usé cygserver.

Corriendo ls -l mostró una identificación numérica de grupo en lugar de un nombre de grupo.

Dejé de cygserver, net stop "CYGWIN cygservery otros procesos de Cygwin, luego ejecutó el ls -l de nuevo, y los nombres de los grupos se visualizaron correctamente.

Supongo que cygserver tenía información de grupo de dominio incompleta.

Después de reiniciar cygserver, el sistema continuó funcionando correctamente.


0
2017-09-17 06:52



Debe especificar el nombre del grupo en el sistema Windows al que pertenece su usuario.

Así que acabo de hacer esto: chown -R ONEX:Users ~/*

Puede encontrar su nombre de usuario y grupo aquí:

Image


-1
2018-01-21 07:27