2012-04-19 10 views
58

Estoy trabajando en un laboratorio donde estamos ejecutando Linux (Debian y Ubuntu). Los nombres de usuarios y grupos son manejados por NIS y yp. Tenemos algunos usuarios comunes a los que todos tienen acceso para que realicen los experimentos y luego cada uno tiene nuestros propios usuarios, además hay un grupo común del que todos somos miembros.¿Cómo establecer umask en todo el sistema?

¿Cómo puedo hacer para que todos los archivos y directorios en la unidad compartida /home/ (NFS) sea de lectura/escritura (/ ejecutable) por usuario/grupo? Básicamente lo que quiero es

chmod -R 664 /home 
chgrp -R commongroup /home 

o equivalentemente umask 0002.

Pero la ejecución de los comandos anteriores solo corrige los archivos actuales en las carpetas y umask solo funciona para usuarios únicos y debe ejecutarse cada vez que un usuario inicia sesión, es decir. en el archivo .bashrc (¿y esto funcionará para el modo de cambios a través de gnome?). ¿Hay algún comando o configuración de todo el sistema que pueda usar para asegurarme de que nuestro grupo de comunicación tenga acceso de escritura a los archivos comunes?

+2

Creo que se puede usar 'setfacl' para fijar de forma recursiva (y mantener) la configuración de acceso a un directorio. http://linuxcommand.org/man_pages/setfacl1.html – tMC

+2

Usted * no * quiere 'chmod -R 644/home': esto elimina el bit eXecute de los directorios, lo que los hace indescifrables. – ephemient

+0

Seguimiento del comentario de tMC: si desea esto en directorios específicos (y opcionalmente subdivide) y no lo vincula a todos (!) Archivos y directorios que pertenecen a un usuario específico, entonces use ACL. Aquí hay [una buena respuesta] (http://stackoverflow.com/a/6550059/923794) a una pregunta similar – cfi

Respuesta

90

Tanto Debian como Ubuntu se envían con pam_umask. Esto le permite configurar máscara de usuario en /etc/login.defs y hacer que todo el sistema se aplican, independientemente de cómo un usuario inicie sesión.

Para activarlo, puede que tenga que añadir una línea a /etc/pam.d/common-session lectura

session optional pam_umask.so 

o es posible que ya esté habilitado. A continuación, edite /etc/login.defs y cambiar la línea UMASK a

UMASK   002 

(el valor predeterminado es 022).

Tenga en cuenta que los usuarios todavía pueden anular máscara de usuario en su propio ~/.profile o ~/.bashrc o similar, pero (al menos en las nuevas instalaciones de Debian y Ubuntu) no debe haber ninguna primordial de la máscara de usuario en /etc/profile o /etc/bash.bashrc. (Si los hay, simplemente elimínelos.)

+3

En 12.04 está habilitado de forma predeterminada. –

+6

debian 7 does ** not ** tiene esto habilitado por defecto. – earthmeLon

+0

cómo configurar umask personalizado para un usuario específico? – brauliobo

20

Primero, asegúrese de que el paquete pam-modules esté instalado. Eso hace que el módulo pam_umask esté disponible. A continuación, asegúrese de que /etc/pam.d/common-session tiene una línea de la forma

session optional pam_umask.so 

modo que pam_umask está habilitado.

Ahora, de acuerdo a la página pam_umask hombre, la máscara de usuario por defecto se determina en el inicio de sesión mediante la comprobación de cada uno de los siguientes lugares, con el fin de:

  1. Un defecto en todo el sistema duro situado en /etc/pam.d/common-session. Para configurar esta manera, reemplace la línea de ese archivo se mencionó anteriormente con esto:

    session optional pam_umask.so umask=002 
    
  2. Una entrada en el campo GECOS de un usuario individual en /etc/passwd anula un defecto en todo el sistema suave para ese usuario específico.Cree que la entrada mediante un comando de la forma:

    chfn --other='umask=002' username 
    
  3. Una línea de la forma en UMASK=002/etc/default/login (puede que tenga que crear ese archivo) establece un defecto suave de todo el sistema.

  4. El valor UMASK de /etc/login.defs. Ese valor también se usa para otra cosa (calcular los permisos en el directorio de inicio de un nuevo usuario que se está creando; consulte los comentarios en /etc/login.defs para obtener más detalles). Por lo tanto, es mejor evitar confiar en esto para establecer la umask predeterminada para los inicios de sesión regulares, para mantener las cosas separadas.

Así, en su caso, debe configurar esta sea en /etc/default/login si usted quiere que sea posible anular la configuración para los usuarios individuales, o ponerlo en /etc/pam.d/common-session como se describe más arriba si quiere que sea el mismo para todos los usuarios.

Tenga en cuenta que incluso con la configuración predeterminada fija, los usuarios aún pueden anular manualmente el umask predeterminado mediante el comando umask en el indicador del shell o en su secuencia de comandos .profile.

También tenga en cuenta que la forma tradicional de Unix para establecer este valor predeterminado es agregando un comando umask al /etc/profile, y eso también funcionaría. Pero no es la forma recomendada de configurar cosas como esta en Ubuntu, porque es difícil de administrar de manera confiable usando scripts y GUI.

Nota, lamentablemente este stopped working for any application which has been converted to launch via systemd --user.

+1

Hay opciones de 'USERGROUPS_ENAB' que pueden cambiar' 022' a '002' en algunos casos. –

+0

En Ubuntu Server 16.04.1, el paquete 'libpam-modules' contiene el módulo' pam_umask'. (El comando 'dpkg-query --search/lib/x86_64-linux-gnu/security/pam_umask.so' imprime' libpam-modules: amd64:/lib/x86_64-linux-gnu/security/pam_umask.so'.) –

+3

'/ etc/defaults' no existe en Ubuntu Server 16.04.1. ¿Podría la ruta correcta ser '/ etc/default/login'? –

0

Con el fin de hacer coincidir los derechos del grupo, en el servidor, el bit gid establecido (uno de los "bits adhesivos") se puede considerar como una opción adicional.

Si el directorio compartido está vinculado al grupo, el lanzamiento (con raíz): chmod -R 2775 folder_for_the_group puede ser interesante.

Para cualquier archivo nuevo creado en la carpeta, el creador será el propietario, pero el grupo se especificará automáticamente (siempre que el creador sea parte del grupo). rejilla

Derechos de los ahora aparece como -rwxrwsr-x +

Cuestiones relacionadas