no se puede cambiar el permiso del archivo

no se puede cambiar el permiso del archivo

Cada vez que creo o copio algunos archivos shell en un dispositivo de almacenamiento USB, no puedo hacerlos ejecutables.

Si creo test.sh, su permiso de archivo predeterminado será 644, pero cuando ejecuto

chmod 777 prueba.sh

no hay informes de errores y echo $?también devuelve "0". Pero todavía ls -lmuestra permiso 644y no puedo ejecutarlo como./test.sh

Respuesta1

Sí, esto puede ocurrir si su dispositivo está formateado con un sistema de archivos que no admite ese tipo de configuración de permisos, como VFAT. En esos casos, la umask se crea sobre la marcha a partir de una configuración en fstab (o el equivalente de conexión en caliente).

Ver, muy probablemente, montura del hombre para más detalles. Por ejemplo, para VFAT, encontramos:

Opciones de montaje para grasa.

uid=valor y gid=valor

Establezca el propietario y el grupo de todos los archivos. (Predeterminado: el uid y gid del proceso actual).

umask=valor

Establezca la umask (la máscara de bits de los permisos que no están presentes). El valor predeterminado es la umask del proceso actual. El valor se da en octal.

etc.

Respuesta2

Parece que su sistema de archivos está montado con la noexecopción que prohíbe la ejecución de programas en ese sistema de archivos actuando como si todos los bits de ejecución en los permisos no estuvieran configurados. Si usa la useropción de montaje (o si alguna interfaz de usuario la usa bajo el capó), noexecestá activada a menos que la desactive explícitamente con exec.

La mayoría de las memorias USB utilizan el sistema de archivos VFAT derivado de MSDOS, que no tiene noción de permisos. Solo puede especificar bits de permiso cuando monta el sistema de archivos, y estos permisos se aplican a todos los archivos de ese sistema de archivos.

Si no tiene permiso para ejecutar un script, llame al intérprete explícitamente:

sh /media/stick/test.sh

Para un binario vinculado dinámicamente, invoque el vinculador dinámico.

/lib/ld-linux.so.2 /media/stick/myprog

información relacionada