Autor Tópico: [Resolvido] Geany - como executar programa em drive externa?  (Lida 6901 vezes)

Offline Vkthor

  • Usuário Ubuntu
  • *
  • Mensagens: 52
    • Ver perfil
[Resolvido] Geany - como executar programa em drive externa?
« Online: 09 de Abril de 2012, 08:11 »
Ao tentar executar um programa em C com o Geany obtenho o seguinte erro:

Código: [Selecionar]
./geany_run_script.sh: 5: ./e1-1p13: Permission denied
------------------
(program exited with code: 126)

e1-1p13 é o nome do programa. O programa compilou normalmente criando o e1-1p13.o e foi gerado também criando o e1-1p13. Só não executa.
Isto acontece unicamente se os ficheiros estiverem guardados num directório de uma drive externa. Se estiverem na pasta pessoal executam normalmente, pelo que está afastada a hipótese de erro no programa que afinal é bem simples:

e1.1p13.c
Código: [Selecionar]
#include <stdio.h>
main ()
{
    float x;
    x=1.5*1.5*1.5;
    printf("%f\n",x);
}

O problema deve ter a ver com permissões da própria drive ou pasta que eu não consigo alterar através das propriedades. Tentei alterar a permissão do próprio ficheiro executável seleccionando em propriedades «permitir executar o ficheiro como aplicação» mas não é permitida a alteração.  

O acesso do dono (eu) é de leitura escrita mas o de grupo e outros é nenhum. E aqui não consigo alterar nada porque simplesmente o sistema não deixa. Alguma ideia de como rodear a questão? Um path, utilização de chmod...

obrigado desde já.

--
Geany 0.20
opções:
- compilar: gcc -Wall -c "%f"
- gerar: gcc -Wall -o "%e" "%f"
- make: make
- gerar personalizado: make
- gerar objecto: make %e.o
- executar: "./%e"

Ubuntu 11.10
« Última modificação: 13 de Abril de 2012, 08:34 por Vkthor »
Obrigado desde já pelo tempo dispensado a ler este post.

Vkthor

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #1 Online: 09 de Abril de 2012, 15:08 »
fat? ntfs? O sistema de arquivo provavelmente foi montado com a opção "noexec". Pra ter certeza, com o dispositivo plugado e montado, digite
Código: [Selecionar]
findmnt || mount

Offline Vkthor

  • Usuário Ubuntu
  • *
  • Mensagens: 52
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #2 Online: 09 de Abril de 2012, 20:22 »
Olá irtigor.
Obrigado pela resposta.

fat? ntfs?
É um disco de 80GB dividido em quatro partições  ntfs de 20GB cada uma. Esta ainda tem 9GB livres. O sistema, totalmente dedicado para o Ubuntu, arranca por um disco de 40GB com uma partição de 14Gb para o Ubuntu, swap de 2Gb e os restantes 22Gb para a /home que quase não uso. Todos os dados são guardados consoante a finalidade numa das quatro partições do disco de 80GB.

Citar
O sistema de arquivo provavelmente foi montado com a opção "noexec". Pra ter certeza, com o dispositivo plugado e montado, digite
Código: [Selecionar]
findmnt || mount

Eu não escolho opções nenhumas. Apenas selecciono a unidade no nautilus e fica montada ao abrir a pasta. Sei que todos os programas que uso gravam lá os dados sem problemas. o Geany também. Só que realmente não executa. Aliás já experimentei com outros IDE's como o CodeBlocks e o Anjuta e nenhum deles executa. E nas propriedades do ficheiro não consigo seleccionar a caixa de verificação «Permitir executar o ficheiro como uma aplicação». Desmarca imediatamente.

Este é o output do comando:
Código: [Selecionar]
vkthor@vkthor-dsk:/media/WebStuff$ findmnt || mount
TARGET                       SOURCE                            FSTYPE   OPTIONS
/                            /dev/disk/by-uuid/d27bb471-a4d7-40ae-b886-8fc321d650ad
                                                               ext4     rw,relat
├─/sys                       sysfs                             sysfs    rw,nosui
│ ├─/sys/fs/fuse/connections fusectl                           fusectl  rw,relat
│ ├─/sys/kernel/debug                                          debugfs  rw,relat
│ └─/sys/kernel/security                                       security rw,relat
├─/proc                      proc                              proc     rw,nosui
│ └─/proc/sys/fs/binfmt_misc binfmt_misc                       binfmt_m rw,nosui
├─/dev                       udev                              devtmpfs rw,relat
│ └─/dev/pts                 devpts                            devpts   rw,nosui
├─/run                       tmpfs                             tmpfs    rw,nosui
│ ├─/run/lock                                                  tmpfs    rw,nosui
│ └─/run/shm                                                   tmpfs    rw,nosui
├─/home                      /dev/sda6                         ext4     rw,relat
│ └─/home/vkthor/.gvfs       gvfs-fuse-daemon                  fuse.gvf rw,nosui
├─/media/AGENT_CODY_BANKS_D1 /dev/sr0                          udf      ro,nosui
├─/media/My Book             /dev/sdc1                         fuseblk  rw,nosui
└─/media/WebStuff            /dev/sdb3                         fuseblk  rw,nosui
vkthor@vkthor-dsk:/media/WebStuff$

E agora?
 ???
Obrigado desde já pelo tempo dispensado a ler este post.

Vkthor

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #3 Online: 09 de Abril de 2012, 21:04 »
A saída foi "comida" (não apareceu tudo, tinha mais coisa à direita), mas deve ser mesmo questão de alguma opção desabilitando a possibilidade de execução (acho que isso é padrão em todas as versões posteriores a 10.04, pra ntfs e fat). Você pode remontar pelo terminar com o comando mount, ex:
Código: [Selecionar]
sudo mount -o remount,rw,exec,permissions /dev/sdb3 /media/WebStuff

Offline Vkthor

  • Usuário Ubuntu
  • *
  • Mensagens: 52
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #4 Online: 10 de Abril de 2012, 06:34 »
Olá irtigor.
Mais uma vez obrigado pela resposta

A saída foi "comida" (não apareceu tudo, tinha mais coisa à direita)

Tinha mesmo. :-)
Aumentei o tamanho da janela da consola e deu para ver, mas só mais algumas coisas, pois continua...
O tamanho da janela não é suficiente. Ocupei o tamanho todo do monitor e se ele é grande. :-)
Há alguma forma de direccionar o conteúdo para um ficheiro? Ou habilitar um modo wrap qualquer? É que na janela da consola, a barra de deslocamento vertical aparece, mas não a horizontal.

Citar
mas deve ser mesmo questão de alguma opção desabilitando a possibilidade de execução (acho que isso é padrão em todas as versões posteriores a 10.04, pra ntfs e fat). Você pode remontar pelo terminar com o comando mount, ex:
Código: [Selecionar]
sudo mount -o remount,rw,exec,permissions /dev/sdb3 /media/WebStuff

Não deu. :-(
O grupo Vkthor continua a ter «nenhum» como acesso à pasta e não permite alterar.
Há um comando que não me lembro, tem a ver com números tipo comando 777 ou comando 753 em que cada número tem uma função. Devo estar a pesquisar qualquer coisa mal, porque não consigo encontrar nada a este respeito. Sei que usei uma vez com o ftp de um site que tenho.
Alguma ideia?
Obrigado desde já pelo tempo dispensado a ler este post.

Vkthor

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #5 Online: 10 de Abril de 2012, 07:02 »
Há alguma forma de direccionar o conteúdo para um ficheiro? Ou habilitar um modo wrap qualquer? É que na janela da consola, a barra de deslocamento vertical aparece, mas não a horizontal.
Não deu. :-(
O grupo Vkthor continua a ter «nenhum» como acesso à pasta e não permite alterar.
Há um comando que não me lembro, tem a ver com números tipo comando 777 ou comando 753 em que cada número tem uma função. Devo estar a pesquisar qualquer coisa mal, porque não consigo encontrar nada a este respeito. Sei que usei uma vez com o ftp de um site que tenho.
Alguma ideia?

1- findmnt > arquivo.txt
2- Sem ver se as opções usadas, não funcionar não é surpresa. A ideia era mostrar o comando mount.
3- É o chmod, mas se a coisa é uma opção usada na montagem do sistema de arquivo, ele também não vai ter efeito.

Offline Vkthor

  • Usuário Ubuntu
  • *
  • Mensagens: 52
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #6 Online: 11 de Abril de 2012, 18:09 »
Olá irtigor. Obrigado mais uma vez pela resposta e pela paciência.

1- findmnt > arquivo.txt

Até parece que voltei aos comandos do MS-DOS. Bem parecido.
:-)

Citar
2- Sem ver se as opções usadas, não funcionar não é surpresa. A ideia era mostrar o comando mount.

Eu não acredito. Até com o output para um ficheiro a informação sai truncada! :-(

Citar
3- É o chmod, mas se a coisa é uma opção usada na montagem do sistema de arquivo, ele também não vai ter efeito.
Ok. Grandes males, grandes remédios. Já podia, quer dizer, DEVIA, ter feito isto. Parece que comecei ontem a usar o Windows...  :-[
Como não consigo aumentar mais a resolução do monitor, aumenta-se o tamanho da janela para lá das medidas do monitor... et voilà!... :-)

Código: [Selecionar]
vkthor@vkthor-dsk:/media/WebStuff$ findmnt || mount
TARGET                       SOURCE                                                 FSTYPE                OPTIONS
/                            /dev/disk/by-uuid/d27bb471-a4d7-40ae-b886-8fc321d650ad ext4                  rw,relatime,errors=remount-ro,user_xattr,acl,barrier=1,data=ordered
├─/sys                       sysfs                                                  sysfs                 rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/fuse/connections fusectl                                                fusectl               rw,relatime
│ ├─/sys/kernel/debug                                                               debugfs               rw,relatime
│ └─/sys/kernel/security                                                            securityfs            rw,relatime
├─/proc                      proc                                                   proc                  rw,nosuid,nodev,noexec,relatime
│ └─/proc/sys/fs/binfmt_misc binfmt_misc                                            binfmt_misc           rw,nosuid,nodev,noexec,relatime
├─/dev                       udev                                                   devtmpfs              rw,relatime,size=2018204k,nr_inodes=504551,mode=755
│ └─/dev/pts                 devpts                                                 devpts                rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
├─/run                       tmpfs                                                  tmpfs                 rw,nosuid,relatime,size=810848k,mode=755
│ ├─/run/lock                                                                       tmpfs                 rw,nosuid,nodev,noexec,relatime,size=5120k
│ └─/run/shm                                                                        tmpfs                 rw,nosuid,nodev,relatime
├─/home                      /dev/sda6                                              ext4                  rw,relatime,user_xattr,acl,barrier=1,data=ordered
│ └─/home/vkthor/.gvfs       gvfs-fuse-daemon                                       fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=1000,group_id=1000
├─/media/AGENT_CODY_BANKS_D1 /dev/sr0                                               udf                   ro,nosuid,nodev,relatime,uid=1000,gid=1000,umask=77,dmode=500,iocharset=utf8
├─/media/My Book             /dev/sdc1                                              fuseblk               rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096
└─/media/WebStuff            /dev/sdb3                                              fuseblk               rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096
vkthor@vkthor-dsk:/media/WebStuff$

Dá para «traduzir» algumas das coisas de ubuntuês para português? :-)
Obrigado desde já pelo tempo dispensado a ler este post.

Vkthor

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil

Offline Vkthor

  • Usuário Ubuntu
  • *
  • Mensagens: 52
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #8 Online: 12 de Abril de 2012, 08:17 »
Olá irtigor

Obrigado pela resposta. Agora acho que estou no bom caminho.
:-)

Olha: http://ubuntuforum-br.org/index.php/topic,76285.0.html

Pelo que percebi não se devem usar partições ntfs. Cusquei e verifiquei que agora tenho o Ubuntu montado numa partição ext4, bem assim como a partição /home. Por isso é que o programa executa na pasta Documentos ou outra do meu utilizador.
Esta formatação «migrou» do tempo em que eu tinha dual boot com o Ubuntu e o Windows XP e escolhia a partir do groob. Aida era o Hero! :-)
Como neste computador não tenho mais Windows nenhum, não preciso desse tipo de formatação. Portanto, à partida, se eu usar o gparted e formatar a partição para ext4 já deverá funcionar.
Vou fazer assim:
1. cópia de segurança da partição para um disco externo
2. cópia de segurança da partição para um computador da rede (não se trata de saber SE um dia vamos perder dados, mas QUE um dia os vamos perder de certeza)
3. formatação da partição no format ext4 usando o gparted
4. recuperação da cópia a partir de uma das cópias de segurança
5. verificação do conteúdo da partição (e se os cuidados resultaram)
6. verificação do funcionamento
ok...
vamos lá a ver
Pena que não há um smiley a roer as unhas...
LOL
Obrigado desde já pelo tempo dispensado a ler este post.

Vkthor

Offline Vkthor

  • Usuário Ubuntu
  • *
  • Mensagens: 52
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #9 Online: 12 de Abril de 2012, 18:11 »
Eu só não adivinho os números do Euromilhões.
:-)
Voltei à estaca zero (talvez menos três ou quatro).
:-)
Passo a explicar: executei os pontos 1. 2.  e 3. do post anterior, só que quando tento o 4. aí é que o gato torceu o rabo. Tenho uma bela partição formatada a ext4 com 20GB disponíveis e uma única pasta lost+find e que não recebe mais nada, porque não sou o dono e não tenho permissões para criar pastas no destino. Tentei alterar em propriedades mas o dono é root, o grupo também e não posso alterar as permissões porque não sou o dono... O dono pode criar e apagar ficheiros, mas o grupo e outros só podem aceder aos ficheiros.
:-(
Ou seja como não consigo recolocar os meus ficheiros de volta (e ainda bem que tenho as cópias de segurança) só me resta perguntar: e agora? ???
Obrigado desde já pelo tempo dispensado a ler este post.

Vkthor

Offline Stivekx

  • Usuário Ubuntu
  • *
  • Mensagens: 126
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #10 Online: 12 de Abril de 2012, 18:24 »
Pode parecer meio idiota, mas tentou mudar as permissões do geany?
Mudar a pasta onde ele está e deixar essa pasta na sua pasta de usuário (/home/user/geany)

Depoois, todos os scripts .sh do geany, você dá um chmod +x ,
e.g.: chmod +x geany_run_script.sh

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #11 Online: 12 de Abril de 2012, 19:49 »
Mas como está sendo montado (as opções usadas)? Com tanto que não inclua um noexec ou parecido, vai bastar editar uma vez a permissão como root ("gksudo nautilus" sem aspas, vai abrir o gerenciador de arquivos como adm.).

Offline Vkthor

  • Usuário Ubuntu
  • *
  • Mensagens: 52
    • Ver perfil
Re: Geany - como executar programa em drive externa?
« Resposta #12 Online: 13 de Abril de 2012, 08:33 »
Olá irtigor
Mais uma vez obrigado pela reposta e pelo tempo dispensado.

(snip), vai bastar editar uma vez a permissão como root ("gksudo nautilus" sem aspas, vai abrir o gerenciador de arquivos como adm.).

Assunto resolvido. Já tinha usado esta instrução uma vez mas esqueci-a. Em grupo seleccionei «Vkthor» da longa lista existente e alterei as permissões de pastas para «criar e apagar ficheiros (como em dono).
- já consegui recolocar os dados da cópia de segurança
- reiniciei o computador para ver se funcionava
- já usei o Geany para editar, compilar, gerar e executar um programa
- acho que o resto está a funcionar normalmente. Eram basicamente documentos de texto e folhas de cálculo que abri uma ou duas pelo que devem funcionar todas.
- apaguei a cópia em rede e mantenho a cópia de segurança feita, (just in case...) :-)

--

@Stivekx
Obrigado pela intervenção, mas já estando a funcionar da forma que eu queria fico bastante satisfeito. Como disse alguém, em equipa vencedora não se mexe. :-)
Mas acho que devo uma explicação mesmo assim. Tenho o trabalho organizado por discos onde em cada um tenho as coisas referentes a um mesmo tema de índole profissional. Por isso é que não quero misturar nada com a minha pasta Documentos ou com a minha /home.
Essa era a forma fácil que eu já tinha visto que funcionava, mas não era a que queria. Só a usaria se não conseguisse MESMO fazer como fiz, mas uma vez que o consegui, sinto-me suficientemente happy :-D
Mais uma vez obrigado.
Obrigado desde já pelo tempo dispensado a ler este post.

Vkthor