web-dev-qa-db-fra.com

Comment faire en sorte que nautilus se monte sur `/ drivename` au lieu de` / media / drivename`?

Je souhaite monter mes autres lecteurs (principalement ntfs et fat) sur /drivename en cliquant sur l’icône du lecteur dans le volet latéral de Nautilus, où "drivename" fait référence à l’étiquette du lecteur. Par défaut, nautilus monte les lecteurs avec le nom piloted dans le dossier /media/drivename.

Ma question est la suivante: Comment faire pour que Nautilus fasse comme ça?

Je ne veux pas utiliser fstab: Merci de ne pas le faire en éditant le fichier /etc/fstab. Je veux cette fonctionnalité dans Nautilus et après avoir cliqué sur le lecteur devrait également être vu dans le volet latéral. (ne devrait pas être caché).


Edit: Il semble y avoir un malentendu avec cette question. I ne veut pas monter dans le lecteur /, c’est-à-dire tout le contenu d’un lecteur dans /. Ce que je veux, c'est lorsque je monte un lecteur avec le nom de lecteur "Main", ce lecteur sera monté à /Main au lieu de /media/Main.

3
Anwar

Vous pouvez le faire en étendant ces règles selon vos besoins -

# 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"

Regardez de plus près les règles. Cela ne fonctionne pas pour les lecteurs de disque dur. KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end" indique si le nom du périphérique est sda * (si ce n'est sdb * ou sdc *), passez à l'étiquette media_by_label_auto_mount_end ie. à la fin des règles. Alors modifiez la ligne comme vous le souhaitez. Mais n'oubliez pas le lecteur système. Ajouter une exception pour cela.

Si votre lecteur système est/dev/sda7, les deux premières lignes doivent être

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"

Si vous devez exécuter des commandes supplémentaires, concatérez-les avec RUN.

Pour plus d'informations sur les règles udev, cliquez ici

1
Sarowar

vous devez écrire une règle udev pour cela: vous pouvez créer un fichier dans le répertoire /etc/udev/rules.d/ avec

# 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"

Et changez les actions ADD et REMOVE avec votre chemin, dans ce cas /

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}"
1
white-shy-guy

Vous souhaitez que les volumes montés dynamiquement apparaissent directement dans /. Jusqu'ici, les travaux sur ce problème se sont concentrés sur le changer de /media en /. Je soupçonne qu'il y a un moyen de le faire. Mais une solution simple et rapide serait pour que /media et / soient le même dossier .

Je ne peux pas le recommander fortement, car le système n’est pas conçu pour fonctionner de cette façon et il peut y avoir des bogues car les développeurs n’ont pas envisagé cette possibilité. (Certains pourraient même ne pas considérer l'hypothèse que / n'est pas /media un bogue.)

Mais vous devriez pouvoir créer /media un lien symbolique vers /, de sorte que quand quelque chose est monté dans /media/mount-point, il est réellement monté dans /mount-point.

  • Il sera également accessible via /media/media/mount-point, /media/media/media/mount-point, etc., mais il serait assez déroutant de pouvoir y accéder par ces noms.

Veuillez noter que bien que je n’aie pas fait les recherches nécessaires pour s’assurer que cela ne puisse jamais créer un problème de sécurité, cela ne le crée pas du tout de la même manière qu’il le ferait au départ semble à:

  • Les répertoires de /, tels que /usr et /dev, dans lesquels un utilisateur non -root pourrait obtenir un accès système en compromettant, ne sont pas accessibles de cette manière. Si vous montez une partition dont le nom de volume est /usr, elle n'écrasera ni ne donnera accès à /usr, mais elle sera montée avec un autre nom (généralement /usr_).

  • Cela ne donne pas un accès illimité dans /, et vous n'avez pas besoin (et ne devriez pas, changer) de propriété ou d'autorisations de / (ou de tout autre fichier ou dossier). La propriété et les autorisations de / et /media sont déjà identiques (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
    

    Ce n'est que pour des points de montage spécifiques que les utilisateurs non -root peuvent obtenir un accès qu'ils ne possédaient pas déjà, lorsque le périphérique est monté sur eux.

Pour créer/média un lien symbolique vers /, procédez comme suit:

  1. Démontez toutes vos partitions montées dans /media afin que /media soit vide.

  2. Supprimer /media:

    Sudo rmdir /media
    
  3. Recréez /media sous forme de lien symbolique vers /, situé dans /:

    Sudo ln -s / /media
    

    Veuillez noter que / vient avant /media dans la commande ln, car lors de la création de liens symboliques, nous plaçons d’abord la cible , puis la source .

Si vous avez besoin ou souhaitez annuler cette opération , procédez comme suit:

  1. Démontez toutes les partitions montées dynamiquement.

    • Ils sont montés dans /, mais c'est via le lien symbolique /media, de sorte que vous ne pourrez probablement pas supprimer ce lien symbolique tant qu'ils seront montés. pouvoir y accéder, leur vider des données ou les démonter proprement.
  2. Supprimer le lien symbolique:

    Sudo rm /media
    
  3. Recréez le répertoire réel:

    Sudo mkdir /media
    

    Vous n'êtes pas obligé de spécifier un masque de bits, car lorsque vous créez un dossier en tant que root, les autorisations par défaut sont correctes pour /media.

Cette méthode est similaire à la suggestion précédente de créer manuellement des liens symboliques individuels dans / dans des sous-répertoires spécifiques de /media. La différence est que le lien symbolique est /media lui-même, ce qui devrait donner le comportement exact demandé par l'OP, sans qu'il soit nécessaire de créer manuellement des liens pour chaque point de montage.

1
Eliah Kagan