¿Por qué los archivos en mi directorio de inicio se crean como de escritura mundial a pesar de una umask más restrictiva?

10

Me he dado cuenta de que los permisos para nuevos archivos y directorios se comportan de manera un poco extraña. En primer lugar, umask parece devolver la respuesta correcta:

$ umask
0002

Esto significa acceso completo para mi usuario y mi grupo, sin acceso de escritura para el resto del mundo, sin suid. Pero si creo un archivo en mi $ HOME, así es como se ve:

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

es decir, dar acceso de escritura a todos. Lo mismo sucede con los directorios:

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

Creo que esto es lo mismo que tener umask 0000, no 0002. He buscado en todos / etc alguna instancia de umask que cambia el valor predeterminado 0002 o 0022, pero no encontré ninguno. Esta es una instalación predeterminada de CentOS 5.5. ¿Alguna pista de por qué está sucediendo esto?

rsuarez
fuente
3
¿En qué tipo de sistema de archivos está su directorio de inicio?
mattdm
44
¿Y cómo estás creando testfiley testdir?
mattdm
3
@mattdm, tenías razón al insistir: es XFS. Olvidé que tenemos volúmenes separados para / home, / var y varios más. Aunque uso XFS a menudo y no había visto este comportamiento. ¿Cómo se puede relacionar?
rsuarez
2
acl puede anular umask localmente. ¿Es posible que sus directorios estén siendo montados con acl?
Faheem Mitha
3
Hmm, aparentemente xfs siempre tiene acl habilitado. por lo que podría no aparecer en su / etc / fstab. Intente ejecutar getfacl en sus particiones / directorios.
Faheem Mitha

Respuestas:

3

No sé si es apropiado responder mi propia pregunta. Editores, por favor, aconsejen sobre esto si este no es el caso. Gracias por adelantado.

Creo que he resuelto este misterio: el problema era la falta de una ACL predeterminada en los volúmenes XFS. Aquí está la entrada de ACL para / srv / backups, uno de los directorios afectados:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Cada vez que hacía una "prueba mkdir" o un "archivo de prueba táctil", aparecía con los permisos 777. Entonces hice esto:

setfacl -m d:u::rwx /srv/backups

Dejando la ACL así:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

Anteriormente allí (supuestamente) no había ACL, pero ahora sí. Puedo ver el signo "+" adjunto a los permisos cuando hago un "ls -l". Y por arte de magia, ahora "mkdir test" y "touch testfile" funcionan con los permisos esperados:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

No sé por qué sucede esto. Supongo que a XFS no le gusta no tener una ACL predeterminada y se comporta de manera extraña cuando sucede. Además, he visto que esto sucede solo en CentOS, no en Debian / Ubuntu. Tal vez esté relacionado con la versión XFS en el núcleo, o algo así. Ni idea.

De todos modos, eso resuelve el caso para mí. Muchas gracias por todas las sugerencias :-)

rsuarez
fuente
Responder su propia pregunta es perfectamente aceptable .
Keith Thompson
0

La llamada a creat puede especificar explícitamente permisos que tienen prioridad sobre umask.

No has respondido cómo estás creando testfile,testdir.

Cree el archivo usando touch testfile, luego enumere y publique los permisos

bsd
fuente
Perdón por el retraso. Probé usando "touch testfile", y también "mkdir testdir", con resultados similares. umask parece estar configurado en "0000", porque se crean con permisos 777.
rsuarez
0

Pruebe getfacl .en el directorio donde está creando su archivo de prueba, para ver si hay una acl predeterminada que afecta los permisos.

Andrés
fuente
1
No, no hay ACL predeterminada. Parece estar relacionado con XFS de alguna manera, porque solo ocurre en volúmenes XFS. Pero gracias de cualquier manera.
rsuarez
-1

Simplemente busque la variable USERGROUPS_ENAB en /etc/login.defs

Comente para deshabilitarlo # USERGROUPS_ENAB yes

Si también desea cambiar la máscara de usuario de su usuario actual, primero debe seguir el procedimiento anterior y hacer lo siguiente.

ejemplo para 027

echo "umask 027" >> ~ / .bashrc && pkill -KILL -u nombre_de_usuario_aquí

echo "umask 027" >> ~ / .bashrc este comando establecerá un valor predeterminado de umask para su perfil

esto te obligará a cerrar sesión

después de iniciar sesión nuevamente

simplemente ejecute el comando umask nuevamente y vea si funciona para usted

usuario336810
fuente