setguid
Hay 2 fuerzas aquí en el trabajo. El primero es el bit setgid que está habilitada en la carpeta, folder
.
drwxr-s---. user group folder
Ese es el s
paquete de caracteres al comienzo de esta línea. Se agrupan así:
d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users
Esto r-s
significa que cualquier archivo o directorio creado dentro de esta carpeta tendrá el grupo configurado automáticamente en el grupo group
.
Eso es lo que causó los archivos foo.txt
y bar.txt
se creó así:
-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt
permisos y umask
Los permisos que estás viendo son otro asunto. Estos se rigen por la configuración de su umask
. Puede ver a qué umask
está configurado con el comando umask
:
$ umask
0002
NOTA: estos bits también se denominan bits de "modo".
Es una máscara, por lo que deshabilitará cualquiera de los bits relacionados con los permisos que están habilitados. En este ejemplo, lo único que quiero es los permisos de escritura para otros.
0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits
La representación de los "bits" en este comando está en forma decimal. Entonces un 2 equivale a 010 en forma binaria, que es el bit de escritura. Un 4 (100) significaría que desea leer deshabilitado. Un 7 (111) significa que desea leer / escribir / ejecutar todo deshabilitado. Construyéndolo desde aquí:
$ umask 007
Deshabilitaría los bits de lectura / escritura / ejecución para otros usuarios.
Entonces, ¿qué pasa con tus archivos?
Bueno, umask
gobierna los permisos que se establecerán cuando se cree un nuevo archivo. Entonces, si tuviéramos el siguiente umask
conjunto:
$ umask 007
Y comenzamos a tocar nuevos archivos, los veríamos creados así:
$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:34 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:34 newfile2.txt
Si lo cambiamos por otra cosa, di esto:
$ umask 037
$ ls -l |grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:36 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:36 newfile2.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile3.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile4.txt
Sin embargo, no tendrá ningún impacto en los archivos que ya hemos creado. Mira aquí:
$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw---- 1 saml saml 0 Nov 3 22:37 newfile1.txt
-rw-rw---- 1 saml saml 0 Nov 3 22:37 newfile2.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile3.txt
-rw-r----- 1 saml saml 0 Nov 3 22:35 newfile4.txt
Entonces, ¿qué está pasando con el navegador de archivos?
Esto umask
es lo que yo llamé una configuración "suave". De ninguna manera es absoluto y puede pasarse por alto con bastante facilidad en Unix de varias maneras. Muchas de las herramientas toman interruptores que le permiten especificar los permisos como parte de su operación.
Toma mkdir
por ejemplo:
$ umask
0037
$ mkdir -m 777 somedir1
$
$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov 3 22:44 somedir1
Con el -m
interruptor podemos anular umask
. El touch
comando no tiene esta función, por lo que debe ser creativo. Vea estas preguntas y respuestas de U&L tituladas: ¿Se pueden crear archivos con permisos establecidos en la línea de comando? solo por tales métodos.
¿Otras maneras? Solo anular umask
. Lo más probable es que el explorador de archivos haga esto o simplemente ignore por completo umask
y coloque el archivo usando los permisos para los que esté configurado.
0002
. Si umask establece permisos en lugar de eliminar permisos, el bit de ejecución se establecerá tanto para el usuario como para el grupo cuando lo hagatouch
, pero no lo está.touch
comando. Vea el enlace que incluí