Как сделать так, чтобы nautilus монтировался в `/ drivename` вместо` / media / drivename`?

Я хочу смонтировать другие накопители (в основном, ntfs и fat) на /drivename, щелкнув значок накопителя на боковой панели nautilus, где «drivename» относится к метке накопителя. По умолчанию nautilus монтирует диски с именем Управляемое имя в папке /media/drivename.

Мой вопрос: Как я могу сделать так, чтобы nautilus делал это?

Я не хочу использовать fstab: Пожалуйста, не предлагайте делать это отредактировав файл /etc/fstab. Я хочу эту функцию в nautilus и после нажатия на диск также должен быть виден в боковой панели. (не должен быть скрыт).


Редактировать: Кажется, есть некоторые недоразумения с этим вопросом. Я не хочу монтировать в приводе / , то есть все содержимое привода в /. Что мне нужно, так это когда я монтирую диск с именем «Main», этот диск монтируется в /Main вместо /media/Main.

3
задан 24 July 2012 в 10:00

4 ответа

Вы можете сделать это, расширив эти правила по мере необходимости -

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

. Внимательно посмотрите на правила. Это не работает для жестких дисков. KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end" говорит, что если имя устройства sda * (если не sdb * или sdc *), перейдите к метке media_by_label_auto_mount_end, т.е. до конца правил. Так что редактируйте строку как хотите. Но не забывайте о системном диске. Добавьте для этого исключение.

Если ваш системный диск - / dev / sda7, то первая пара строк должна быть

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"

Если вам нужно выполнить дополнительные команды, объедините их с RUN.

Чтобы узнать больше о правилах udev, нажмите здесь

.
0
ответ дан 24 July 2012 в 10:00

Насколько я знаю, сейчас это невозможно (по крайней мере, невозможно). Может потребоваться компиляция некоторых пакетов, включая nautilus

0
ответ дан 24 July 2012 в 10:00

вам нужно написать правило udev для этого: вы можете создать файл в каталоге /etc/udev/rules.d/ с помощью

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

и изменить действия ADD и REMOVE с вашим путем, в этом случае /

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}"
0
ответ дан 24 July 2012 в 10:00

Вы хотите, чтобы динамично смонтированные объемы появились непосредственно в /. До сих пор работа над этой проблемой сфокусировалась на изменении его от /media кому: /. Я подозреваю, что существует некоторый способ сделать это. Но простое, быстрое-и-грязное решение состояло бы в том, чтобы сделать его так /media и / та же папка.

Я не могу настоятельно рекомендовать это, поскольку система не разработана для прокладывания себе путь, и могут быть ошибки, который существует, потому что разработчики не рассматривали эту возможность. (Некоторые не могли бы даже считать предположение этим / не /media ошибка.)

Но необходимо смочь сделать /media символьная ссылка на /, так, чтобы, когда что-то смонтировано в /media/mount-point, это на самом деле смонтировано в /mount-point.

  • Это также будет доступно через /media/media/mount-point, /media/media/media/mount-point, и т.д, хотя это довольно сбивало бы с толку, если бы необходимо было на самом деле получить доступ к нему теми именами.

Обратите внимание на то, что, в то время как я не провел необходимое исследование, чтобы гарантировать, что это никогда не могло создавать проблему безопасности, оно не создает один ни одним из способов, которым это первоначально казалось бы:

  • Каталоги в /, как /usr и /dev, то, что не -root пользователь мог получить системный доступ путем взлома, не может быть получен доступ таким образом. Если Вы монтируете раздел, имя тома которого /usr, это не перезапишет или предоставит доступ к /usr, это смонтируется с альтернативным названием (обычно /usr_).

  • Это не предоставляет несдержанный доступ в /, и Вам не нужно к (и действительно, не должен), владение изменения или полномочия / (или любой другой файл или папка). Владение и полномочия / и /media уже то же (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
    

    Это - только для определенных точек монтирования это не -root пользователи могут получить доступ, который они уже не имели, когда устройство смонтировано на них.

Сделать / медиа символьной ссылкой на /, выполните эти шаги:

  1. Размонтируйте все свои разделы, которые смонтированы в /media так /media пусто.

  2. Удалить /media:

    sudo rmdir /media
    
  3. Воссоздать /media как символьная ссылка на /, расположенный в /:

    sudo ln -s / /media
    

    Обратите внимание на то, что / прибывает прежде /media в ln команда, потому что при создании символьных ссылок, мы ставим цель сначала и затем источник.

Если Вы когда-нибудь нуждаетесь или хотите отменить это, просто выполнить шаги наоборот:

  1. Размонтируйте все динамично смонтированные разделы.

    • Они смонтированы в /, но это через /media символьная ссылка, таким образом, Вы, вероятно, не сможете удалить ту символьную ссылку, в то время как они смонтированы, и если Вы, Вы не можете получать доступ к ним, действительно сбросила данные им или размонтировала их чисто.
  2. Удалите символьную ссылку:

    sudo rm /media
    
  3. Воссоздайте реальный каталог:

    sudo mkdir /media
    

    Вы не должны указывать битовую маску, потому что при создании папки как root, полномочия по умолчанию корректны для /media.

Этот метод похож предыдущему предложению для ручного создания отдельных символьных ссылок в / к определенным подкаталогам /media. Это отличается в этом, символьная ссылка /media самостоятельно, который должен привести к точному поведению OP, который требуют, не имея необходимость вручную делать ссылки для каждой точки монтирования.

1
ответ дан 24 July 2012 в 10:00

Другие вопросы по тегам:

Похожие вопросы: