Executando o shell script a partir da unidade externa via usuário ativo

0

Eu tentei pelo menos 15 soluções diferentes neste momento, e nenhuma funcionou. Eu estou usando uma unidade de inicialização dinâmica Mint 18.1 e tentando executar um script de shell em uma unidade separada. Ele simplesmente diz "permissão negada", então eu tentei sudo chmod 777 /path/to/file.sh , mas sem sucesso. parece como se fosse concluído, mas uma execução rápida de stat /path/to/file.sh diz o contrário. Eu tentei criar um arquivo /etc/udev/rules.d/90-usb-disks.rules com os dados:

# UDEV Rules to change the permission of USB disks
#

KERNEL=="sd*[0-9]", ATTR{removable}=="1", ENV{ID_BUS}=="usb", MODE="0022"

que também não fez nada. Eu tentei remontar a unidade com rwx permissões, mas NOPE! Existe qualquer coisa que permita que isto funcione?!

Nota: este script pode estar iniciando outros scripts na mesma pasta, eu não sei, então isso é algo a ser considerado. Além disso, desculpe por ser um noob do Linux - todos nós começamos em algum lugar.

    
por wundrweapon 12.03.2017 / 06:03

1 resposta

0

O mais provável é que o sistema de arquivos do seu disco externo não suporte permissões estilo Linux / UNIX (FAT32, etc.), infelizmente o chmod e os amigos não retornarão um erro nesta situação, eles simplesmente não poderão definir / alterar permissões. / p>

Além disso, a opção MODE em sua regra do udev afeta as permissões do nó do dispositivo (em / dev) para o próprio sistema de arquivos: por exemplo, /dev/sdc1 , não para o conteúdo do sistema de arquivos.

Dito isto, há algumas possibilidades: primeiro, e mais fácil, seria simplesmente passar o script como um argumento para a capa apropriada, p. bash /path/to/file.sh

Isso terá problemas, no entanto, se file.sh chamar, por exemplo, otherfile.sh dentro dele. Você pode, é claro, modificar o script para chamar bash como acima, senão você precisará garantir o sistema de arquivos é montado com um bit executável definido para arquivos.

Na minha experiência, as montagens "automáticas" geralmente erram por precaução e não permitem a execução por padrão, mas se você montar o sistema de arquivos manualmente a partir da linha de comando como root, o padrão é ter todos os arquivos executáveis ... então , você poderia desmontar a unidade (remover com segurança, etc) da GUI, abra um terminal e digite algo como

sudo mount /dev/sdc1 /mnt

substituindo / dev / sdc1 pela localização do seu sistema de arquivos (se estiver em dúvida, execute dmesg e ele deve lhe dar uma pista sobre o nome do dispositivo que você precisará aqui.

Se por algum motivo ainda for montado sem o bit de execução configurado para arquivos, as opções são específicas do sistema de arquivos para umask, fmask, dmask, mode, etc. man mount e opções para your_filesystem_type

    
por 1crackedbell 12.03.2017 / 08:42