Como fazer o nautilus para montar em '/ drivename' em vez de '/ media / drivename'?

3

Eu quero montar minhas outras unidades (principalmente ntfs e fat) em /drivename clicando no ícone da unidade no painel lateral do nautilus, onde "drivename" se refere à etiqueta da unidade. Por padrão, o nautilus monta unidades com nome drivename na pasta /media/drivename .

A minha pergunta é: Como posso fazer o Nautilus para fazer assim?

Eu não quero usar o fstab: Por favor, não sugira fazer isso editando o arquivo /etc/fstab . Eu quero esse recurso no nautilus e depois de clicar na unidade também deve ser visto no painel lateral. (não deve ser escondido).

Editar: parece haver algum mal-entendido com essa pergunta. Eu não quero montar na unidade / , ou seja, todo o conteúdo de uma unidade em / . O que eu quero é montar uma unidade com nome de unidade "Main", essa unidade será montada em /Main em vez de /media/Main .

    
por Anwar 12.06.2012 / 16:29

4 respostas

-1

Tanto quanto eu sei, isso não é possível agora, (pelo menos não é viável). Pode exigir a compilação de alguns pacotes, incluindo nautilus

    
por Anwar 24.07.2012 / 17:47
1

você precisa escrever uma regra do udev para isso: você pode criar um arquivo no diretório /etc/udev/rules.d/ com

# Start at sdb to avoid system harddrive. 
KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Global mount options
ACTION=="add", ENV{mount_options}="defaults,relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs",         ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

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

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="media_by_label_auto_mount_end"

E altere as ações ADD e REMOVE com seu caminho, neste caso /

ACTION=="add", RUN+="/bin/mkdir -p /%E{dir_name}", RUN+="/bin/mount -o    $env{mount_options} /dev/%k /%E{dir_name}"
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /%E{dir_name}", RUN+="/bin/rmdir /%E{dir_name}"
    
por white-shy-guy 12.06.2012 / 17:00
1

Você pode fazer isso estendendo essas regras conforme sua necessidade -

# Start at sdb to avoid system harddrive. 
KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Global mount options
ACTION=="add", ENV{mount_options}="defaults,relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs",                ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

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

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}",   RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="media_by_label_auto_mount_end"

Veja mais de perto as regras. Não está funcionando para discos rígidos. KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end" diz que se o nome do dispositivo for sda * (se não sdb * ou sdc *), vá para o rótulo media_by_label_auto_mount_end ie. até o fim das regras. Então, edite a linha como quiser. Mas não se esqueça da unidade do sistema. Adicione uma exceção para isso.

Se a unidade do seu sistema for / dev / sda7, o primeiro par de linhas deverá ser

KERNEL=="sda7" GOTO="media_by_label_auto_mount_end" #sda7 is system drive, so go to end.
#KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end"

Se você precisar executar comandos adicionais, concatene-os com RUN .

Para mais informações sobre as regras do udev, clique aqui

    
por Sarowar 23.07.2012 / 13:44
1

Você deseja que os volumes montados dinamicamente apareçam diretamente em / . Até agora, o trabalho neste problema concentrou-se em mudar de /media para / . Eu suspeito que há alguma maneira de fazer isso. Mas uma solução simples, rápida e suja seria para fazer com que /media e / sejam a mesma pasta .

Eu não recomendo strongmente isso, já que o sistema não foi projetado para funcionar dessa maneira, e pode haver bugs que existem porque os desenvolvedores não consideraram essa possibilidade. (Alguns podem até não considerar a suposição de que / não seja /media de um bug.)

Mas você deve ser capaz de tornar /media um link simbólico para / , de modo que, quando algo é montado em /media/mount-point , ele seja montado em /mount-point .

  • Ele também estará acessível por meio de /media/media/mount-point , /media/media/media/mount-point e assim por diante, embora seja muito confuso se você realmente o acessasse por esses nomes.

Por favor, note que embora eu não tenha feito a pesquisa necessária para garantir que isso nunca crie um problema de segurança, ele não cria uma das maneiras que inicialmente parece para:

  • Os diretórios em / , como /usr e /dev , que um usuário que não seja root poderia obter acesso ao sistema por comprometimento, não podem ser acessados dessa maneira. Se você montar uma partição cujo nome de volume seja /usr , ela não substituirá nem dará acesso a /usr , ela será montada com um nome alternativo (geralmente /usr_ ).

  • Isso não dá acesso irrestrito em / , e você não precisa (e de fato não deve) alterar a propriedade ou as permissões de / (ou qualquer outro arquivo ou pasta). A propriedade e as permissões de / e /media já são iguais ( 0755 , root:root ):

    ek@Apok:~$ ls -ld / /media
    drwxr-xr-x 25 root root 4096 2012-07-15 19:17 /
    drwxr-xr-x 14 root root 4096 2012-07-23 15:16 /media
    

    É somente para pontos de montagem específicos que usuários que não são root podem obter acesso que eles já não tinham, quando o dispositivo é montado neles.

Para tornar / media um link simbólico para / , siga estas etapas:

  1. Desmonte todas as partições montadas em /media , então /media está vazio.

  2. Excluir /media :

    sudo rmdir /media
    
  3. Recrie /media como um link simbólico para / , localizado em / :

    sudo ln -s / /media
    

    Observe que / vem antes de /media no comando ln , porque ao criar links simbólicos, colocamos o alvo primeiro e, em seguida, a fonte .

Se você precisar ou quiser desfazer isso , basta executar as etapas ao contrário:

  1. Desmonte todas as partições montadas dinamicamente.

    • Eles são montados em / , mas é através do link simbólico /media , então você provavelmente não conseguirá remover esse link simbólico enquanto estiver montado, e se o fizer, talvez não seja capaz de acessá-los, liberar dados para eles ou desmontá-los de maneira limpa.
  2. Remova o link simbólico:

    sudo rm /media
    
  3. Recrie o diretório real:

    sudo mkdir /media
    

    Você não precisa especificar uma máscara de bits, porque quando você cria uma pasta como root , as permissões padrão estão corretas para /media .

Este método é semelhante à sugestão anterior para criar manualmente links simbólicos individuais em / para específicos subdiretórios de /media . É diferente porque o link simbólico é /media , o que deve resultar no comportamento exato que o OP solicitou, sem precisar fazer manualmente links para cada ponto de montagem.

    
por Eliah Kagan 24.07.2012 / 19:09