No puedo configurar x bit en el archivo creado.
archemar@foobar:~/D> echo echo hello world > v.sh
archemar@foobar:~/D> ls -l v.sh
-rw-rw-r--+ 1 archemar group1 17 Apr 12 08:12 v.sh
sin x-bit, veamos acl
archemar@foobar:~/D> getfacl v.sh
# file: v.sh
# owner: archemar
# group: group1
user::rw-
group::rwx #effective:rw-
group:group1:rwx #effective:rw-
mask::rw-
other::r--
¡ ¡El grupo1 está rwx
en acl!!
veamos acl para el directorio local
archemar@foobar:~/D> getfacl .
# file: .
# owner: FTP_D_adm
# group: admin
user::rwx
group::rwx
group:group2:rwx
group:admin:rwx
group:group1:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:group1:rwx
default:mask::rwx
default:other::r-x
Soy parte del grupo1:
archemar@foobar:~/D> id
uid=1001(archemar) gid=1001(group1) groups=1001(group1),16(dialout),33(video)
intentemos ejecutar
archemar@foobar:~/D> ./v.sh
-bash: ./v.sh: Permission denied
configurar g+x es trivial, pero el archivo real llegará a través de ftp. ¿Hay alguna manera de configurar el bit x?
El sistema operativo es Suse 11.4, el directorio está montado en NFS 3, la ACL está configurada en el sistema de archivos.
Respuesta1
No creo que puedas usar ACL para forzarcolocarun bit de permiso.
Utilizando elPágina de manual de ACL de Linuxcomo referencia, la ACL predeterminada se copia a los permisos del archivo, pero
- Las entradas de acceso ACL correspondientes a los bits de permiso de archivo se modifican para que no contengan permisos que no estén contenidos en los permisos especificados por el parámetro de modo. [dado a
open()
,creat()
etc.].
Dado que la máscara de bits de permiso corresponde a los bits de permiso del grupo, se ve afectada aquí.
Si no hay una ACL predeterminada, se umask
utiliza en su lugar, pero se sigue aplicando el mismo enmascaramiento.
Lo que, por supuesto, está en línea con la costumbre habitual de que un programa pueda limitar los permisos a aquellos a los que pasa open
al crear el archivo, ya sea excluyendo los permisos de ejecución con mode 0666
o excluyendo que otros usuarios accedan al archivo con mode 0600
.
Respuesta2
Esto ha sido respondido periféricamente en estas dos preguntas:
https://superuser.com/questions/180545/setting-differing-acls-on-directories-and-files
Los bits relevantes son generalmente de man setfacl
:
El campo de permisos es una combinación de caracteres que indican los permisos: leer (r), escribir (w), ejecutar (x),ejecutar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario (X). Alternativamente, el campo de permisos puede ser un dígito octal (0-7).
(El énfasis es mío)
La sección relevante de la primera pregunta de la respuesta de@slm♦es el siguiente:
Para resumir
Los archivos no obtendrán permiso de ejecución (enmascaramiento o efectivo). No importa qué método usemos: ACL, umask o máscara y ACL.
Los directorios pueden obtener permisos de ejecución, pero depende de cómo esté configurado el campo de enmascaramiento.
La única forma de establecer permisos de ejecución para un archivo que tiene permisos ACL es configurarlos manualmente usando chmod.
Lo que básicamente significa que parece que no puedes hacer lo que quieres con ACL, ya que muy pocos programas dicen explícitamente que quieren crear un archivo ejecutable.