não é possível alterar a permissão do arquivo

não é possível alterar a permissão do arquivo

Sempre que crio ou copio alguns arquivos shell para um dispositivo de armazenamento USB, não consigo torná-los executáveis.

Se eu criar test.sh, a permissão de arquivo padrão será 644, mas quando eu executar

chmod 777 teste.sh

nenhum relatório de erros e echo $?também retorna "0". Mas ainda ls -lmostra permissão como 644e não consigo executá-lo como./test.sh

Responder1

Sim, isso pode ocorrer se o seu dispositivo estiver formatado com um sistema de arquivos que não suporta esse tipo de configuração de permissão, como VFAT. Nesses casos, o umask é criado instantaneamente a partir de uma configuração no fstab (ou equivalente em hotplugging).

Veja, provavelmente, man mount para obter detalhes. Por exemplo, para VFAT, encontramos:

Opções de montagem para gordura

uid=valor e gid=valor

Defina o proprietário e o grupo de todos os arquivos. (Padrão: o uid e o gid do processo atual.)

umask=valor

Defina o umask (a máscara de bits das permissões que não estão presentes). O padrão é o umask do processo atual. O valor é dado em octal.

etc.

Responder2

Parece que seu sistema de arquivos está montado com a noexecopção, que proíbe a execução de programas nesse sistema de arquivos, agindo como se todos os bits de execução nas permissões estivessem desativados. Se você usar a useropção de montagem (ou se alguma interface de usuário a usar nos bastidores), noexecela será ativada, a menos que você a desative explicitamente com exec.

A maioria dos pendrives usa o sistema de arquivos VFAT derivado do MSDOS, que não tem noção de permissões. Você só pode especificar bits de permissão ao montar o sistema de arquivos, e essas permissões se aplicam a todos os arquivos nesse sistema de arquivos.

Se você não tiver permissão para executar um script, chame o interpretador explicitamente:

sh /media/stick/test.sh

Para um binário vinculado dinamicamente, invoque o vinculador dinâmico.

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

informação relacionada