Tengo un determinado directorio en el que hay un proyecto compartido por varios usuarios. Estos usuarios usan SSH para obtener acceso a este directorio y modificar / crear archivos.
Este proyecto solo debe poder escribirse para un determinado grupo de usuarios: llamémoslo "mygroup". Durante una sesión SSH, todos los archivos / directorios creados por el usuario actual deberían ser propiedad del grupo "mygroup" y tener permisos de escritura grupales.
Puedo resolver el problema de permisos con umask
:
$ cd project
$ umask 002
$ touch test.txt
El archivo "test.txt" ahora se puede escribir en grupo, pero aún pertenece a mi grupo predeterminado ("mislav", igual que mi nombre de usuario) y no a "mygroup". Puedo establecer chgrp
recursivamente el grupo deseado, pero quería saber si hay alguna forma de establecer implícitamente algún grupo como umask cambia los permisos predeterminados durante una sesión.
Este directorio específico es un repositorio git compartido con una copia de trabajo y yo quiero git checkout
y git reset
operaciones para ajustar la máscara correcta y el grupo de nuevos archivos creados en la copia de trabajo. El sistema operativo es Ubuntu Linux.
Actualización: un colega sugiere que debería buscar getfacl / setfacl de POSIX ACL, pero la solución que se muestra a continuación umask 002
en la sesión actual es lo suficientemente buena para mí y es mucho más simple.
Si desea hacer esto con una carpeta existente, debe asegurarse de que el bit setgid también esté habilitado para todas las subcarpetas. Sin embargo, no lo necesita en los archivos, y probablemente tampoco lo desee en los archivos. Aquí se explica cómo configurarlo para todas las subcarpetas de forma recursiva.
fuente
No puedo encontrar la fuente de nuevo, pero el uso
setgid
para resolver este problema para repositorios desnudos de git, que supongo que es su caso, está en desuso y puede causar problemas en algunos casos.Git puede encargarse de todo esto a través de la
core.sharedRepository
bandera. Tuve el mismo problema y lo resolví de la siguiente manera:Asumiendo que
repogroup
es su grupo, y tiene quecd
ir al directorio de repositorios:Primero cambie la bandera compartida a
group
:Nota: aquí debe usar la palabra clave
group
, no el nombre del grupo. Esto es equivalente a crear el repositorio simple con opción--shared=group
.Luego cambie el grupo para todo el repositorio:
Para asegurarse de que los directorios existentes sean de escritura grupal (
g+w
) y que los ejecutables existentes también se conviertan en ejecutables de grupo (g+X
), también debe:Una vez hecho esto, Git cumplirá con la
shared=group
bandera y cuidar de los permisos de grupo en la siguiente, tanto para los archivos existentes y nuevos, por lo que nunca tendrá que volver de nuevo aumask
ochgrp
.Pondré la fuente en un comentario si la encuentro de nuevo.
fuente
No soy un gran experto cuando se trata del lado * nix, pero creo que lo que estás buscando se llama setgid.
Ver aquí .
fuente
Es difícil heredar los permisos del directorio principal en Linux / UNIX sin usar ACL. pero hay una manera de asignar permisos de archivo predeterminados, verifique el siguiente enlace
¿Se pueden heredar los permisos del directorio principal?
fuente