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
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
.
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
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}"
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
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
.
/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:
Desmonte todas as partições montadas em /media
, então /media
está vazio.
Excluir /media
:
sudo rmdir /media
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:
Desmonte todas as partições montadas dinamicamente.
/
, 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. Remova o link simbólico:
sudo rm /media
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.