16 votos

Especificar grupo predeterminado y permisos para nuevos archivos en un directorio determinado

Tengo un cierto directorio en el que hay un proyecto compartido por varios usuarios. Estos usuarios utilizar SSH para acceder a este directorio y modificar/crear archivos.

Este proyecto sólo debe tener permisos de escritura para un grupo determinado de usuarios: vamos a llamarlo "migrupo". Durante una sesión de SSH, todos los archivos/directorios creados por el usuario actual debe por defecto de ser poseído por el grupo "migrupo" y tienen el grupo-permisos de escritura.

Puedo resolver el problema de permisos con umask:

$ cd project
$ umask 002
$ touch test.txt

Archivo "test.txt" ahora es grupo-grabable, pero todavía pertenece a mi grupo por defecto ("mislav", igual que mi nombre de usuario) y no a "mi grupo". Puedo chgrp de forma recursiva para establecer el grupo deseado, pero yo quería saber es que hay una manera de establecer algún grupo implícitamente como umask cambios de permisos predeterminados durante una sesión.

Este directorio es un compartida repositorio git con una copia de trabajo y quiero git checkout y git reset operaciones para establecer la máscara correcta y de grupo para la creación de nuevos archivos en la copia de trabajo. El sistema operativo es Ubuntu Linux.

Actualización: un colega sugiere que debo mirar en getfacl/setfacl de POSIX ACL pero la solución a continuación combinado con umask 002 en la sesión actual es lo suficientemente bueno para mí y es mucho más simple.

20voto

ℝaphink Puntos 5295

Para tener todos los archivos en un directorio determinado heredan los derechos de grupo, es necesario utilizar el bit de setgid en su directorio. Ver este enlace.

 $ mkdir test
 $ sudo chown raphink.staff test
 $ ls -lhd test
     drwxr-xr-x 2 raphink staff 4.0K 2009-12-21 16:19 test
 $ sudo chmod g+s test # Set the setgid bit
 $ ls -lhd test
     drwxr-sr-x 2 raphink staff 4.0K 2009-12-21 16:21 test
 $ touch test/foo
 $ ls -lh test
     total 0
     -rw-r--r-- 1 raphink staff 0 2009-12-21 16:23 foo

6voto

andrewtweber Puntos 231

Si quieres hacerlo con una carpeta existente, usted necesita para asegurarse de que el bit de setgid está habilitado para todas las subcarpetas también. Sin embargo, usted no necesita de archivos, y probablemente no desea en los archivos o bien. Aquí es cómo establecer para todas las subcarpetas de forma recursiva.

find /path/to/base/dir -type d -exec chmod g+s {} +

4voto

ThatGraemeGuy Puntos 9880

Yo no soy mucho de un experto cuando se trata de los * nix laterales, pero creo que lo que estás buscando se llama setgid.

Ver aquí.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: