Montar Pendrive corretamente no Ubuntu 10.10

Iniciado por cesargcomp, 09 de Fevereiro de 2011, 20:52

tópico anterior - próximo tópico

cesargcomp

Bom... Resolvi mudar do Lucid para o Maverick. Estava com um problema com páginas do Google que vez ou outra sem nenhum sentido paravam de funcionar e só voltavam reiniciando o computador.
Aparentemente tudo ficou mais rápido. Instalei também o kernel liquorix 2.6.37-7 e tudo funciona perfeitamente (ou quase).
Quando "espetei" meu pendrive, consigo ler tudo e alterar os arquivos, copiar, mover mas não consigo executar scripts. Já tentei mudar as permissões e dono de várias formas (chmod +x, chmod 777, chown -R cesar, tentei graficamente com o nautilus abrindo como root e após marcar para execução, ele desmarca automaticamente).

O que fiz:

Desmontei o meu pendrive: sudo umount /media/KINGSTON
Criei uma entrada na pasta media: sudo mkdir /media/pen
Montei o pendrive novamente: sudo mount -t vfat /dev/sdb1 /media/pen

Para minha surpresa, funcionou normalmente. Agora consigo executar os scripts que já no Lucid já estavam marcados como execução. O pendrive agora funciona normalmente.
Se eu retirar o pendrive da porta USB e quiser colocá-lo novamente, tenho que executar todo o procedimento citado acima.
Pergunta: Tem como fazer o pendrive montar automaticamente ao "espetá-lo" na USB e ele ficar montado da forma que eu fiz?
Quero somente utilizar o pendrive da forma que usava no Lucid (ou seja, normalmente). Pensei que a solução pode estar no /etc/fstab mas não sei como alterá-lo (sei acessá-lo mas não tenho conhecimentos suficientes para modificá-lo).

Alguma boa alma pode me ajudar? Não quero voltar para o Lucid pois gostei bastante do Maverick.
De ante mão, já agradeço.

César
Use Ubuntu. Segurança, facilidade e gratuidade em suas mãos.

cesargcomp

Pesquisei mais um pouco e das dicas montei a linha para o meu fstab.
Acrescentando a linha abaixo no /etc/fstab:

/dev/sdb1 /media/KINGSTON vfat  auto,users,rw,exec,umask=000 00

Agora quando monto o Pendrive, consigo ter a opção de executar ou exibir o conteúdo de um script.
Se alguém tiver esse problema acho que a linha no fstab é a solução.

Tópico Resolvido
Use Ubuntu. Segurança, facilidade e gratuidade em suas mãos.

irtigor

No 10.10 os discos externos, por segurança, são montados com maior restrição, se você digitar mount no terminal, com um pendrive montado, vai ver "nodev","noexec" e "nosuid".  No seu caso, o melhor seria criar uma regra pro udev que só seria usada quando fosse o seu pendrive (todo o resto seria montado com as restrições). O fstab é ruim pra isso, só é aceitável se você não pretende remover e ainda assim seria melhor substituir o "/dev/sdb1" pelo uuid.

cesargcomp

Citação de: irtigor online 09 de Fevereiro de 2011, 22:53
No 10.10 os discos externos, por segurança, são montados com maior restrição, se você digitar mount no terminal, com um pendrive montado, vai ver "nodev","noexec" e "nosuid".  No seu caso, o melhor seria criar uma regra pro udev que só seria usada quando fosse o seu pendrive (todo o resto seria montado com as restrições). O fstab é ruim pra isso, só é aceitável se você não pretende remover e ainda assim seria melhor substituir o "/dev/sdb1" pelo uuid.
Teria como me passar a receita do bolo? rs
Nem tenho idéia de como fazer. Agradeço a resposta.
Use Ubuntu. Segurança, facilidade e gratuidade em suas mãos.

irtigor

Pluge o pendrive e rode esse comando (substitua __disco__ por sda, sdb... vai depender do seu sistema)
udevadm info -a -p $(udevadm info -q path -n /dev/__disco__)

Ai é só criar uma regra, elas ficam em /etc/udev/rules.d. Pode ser mais ou menos assim:

# Define o alvo
SUBSYSTEMS=="usb", KERNEL=="sd[a-z][0-9]", ATTRS{idVendor}=="__info__", ATTRS{idProduct}=="__info__", ATTRS{serial}=="__info__"

# Importa informacoes do fs
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Pega o label, se nao existir cria um
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Opcao de montagem global
ACTION=="add", ENV{mount_options}="relatime"
# Opção especifica to tipo de fs
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002,exec"

# Monta
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Desmonta e limpa
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"


Dê um nome como 81-thumbdrive.rules, substitua os __info__ pelas informações obtidas com o primeiro comando. É necessário reiniciar o udev pra ter efeito. Se não funcionar, a saída do comando mount (sem argumentos) é útil.

Olhe:
https://wiki.archlinux.org/index.php/Udev
http://hackaday.com/2009/09/18/how-to-write-udev-rules/

cesargcomp

Citação de: irtigor online 10 de Fevereiro de 2011, 11:05
Pluge o pendrive e rode esse comando (substitua __disco__ por sda, sdb... vai depender do seu sistema)
udevadm info -a -p $(udevadm info -q path -n /dev/__disco__)

Ai é só criar uma regra, elas ficam em /etc/udev/rules.d. Pode ser mais ou menos assim:

# Define o alvo
SUBSYSTEMS=="usb", KERNEL=="sd[a-z][0-9]", ATTRS{idVendor}=="__info__", ATTRS{idProduct}=="__info__", ATTRS{serial}=="__info__"

# Importa informacoes do fs
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Pega o label, se nao existir cria um
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Opcao de montagem global
ACTION=="add", ENV{mount_options}="relatime"
# Opção especifica to tipo de fs
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002,exec"

# Monta
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Desmonta e limpa
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"


Dê um nome como 81-thumbdrive.rules, substitua os __info__ pelas informações obtidas com o primeiro comando. É necessário reiniciar o udev pra ter efeito. Se não funcionar, a saída do comando mount (sem argumentos) é útil.

Olhe:
https://wiki.archlinux.org/index.php/Udev
http://hackaday.com/2009/09/18/how-to-write-udev-rules/

Adequando a sua dica maravilhosa, funcionou perfeitamente aqui. Olha como ficou meu arquivo:
# Define o alvo
SUBSYSTEMS=="usb", KERNEL=="sd[a-z][0-9]", ATTRS{idVendor}=="0930", ATTRS{idProduct}=="6545", ATTRS{serial}=="0000:00:10.4"

# Importa informacoes do fs
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Pega o label, se nao existir cria um
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Opcao de montagem global
ACTION=="add", ENV{mount_options}="relatime"
# Opção especifica to tipo de fs
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},auto,users,rw,exec,umask=000"

# Monta
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -t $env{mount_options} /dev/%k /media/%E{dir_name}"

# Desmonta e limpa
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"


Estava com problema de permissão e mudei a linha de "Opção especifica to tipo de fs".
Estava com problema para desmontar o pendrive e mudei as linha de "Monta" e "Desmonta e limpa".

Perfeito!!!!!!!!!!!!!!!!!!!

irtigor,
obrigado mesmo... você resolveu completamente meu problema... sempre que precisar pode contar comigo...

César
Use Ubuntu. Segurança, facilidade e gratuidade em suas mãos.