Как сделать так, чтобы nautilus монтировался в `/drivename` вместо`/media/drivename`?
Я хочу смонтировать другие мои диски (в основном NTFS и FATER) на /drivename щелкнув по значку диска на боковой панели nautilus, где "drivename" относится к метке диска. По умолчанию nautilus монтирует диски с именем drivename в /media/drivename папка.
У меня вопрос: как мне сделать так, чтобы nautilus делал так?
Я не хочу использовать fstab: пожалуйста, не предлагайте делать это путем редактирования /etc/fstab файл. Я хочу эту функцию в nautilus и после нажатия на диск также должен быть виден в боковой панели. (не должен быть скрыт).
Изменить: Кажется, есть некоторые недоразумения с этим вопросом. Я не хочу садиться в диск/, т.е. все содержимое диска в /, То, что я хочу, это когда я монтирую диск с именем "Main", этот диск монтируется в /Main вместо /media/Main,
4 ответа
Насколько я знаю, сейчас это невозможно (по крайней мере, невозможно). Может потребоваться компиляция некоторых пакетов, включая nautilus
Вам нужно написать правило 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"
И измените действия ДОБАВИТЬ и УДАЛИТЬ с вашим путем, в этом случае /
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}"
Вы хотите, чтобы динамически смонтированные тома появлялись прямо в /, Пока что работа над этой проблемой была сосредоточена на /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пользователи могут получить доступ, которого у них еще не было, когда на них смонтировано устройство.
Сделать /media символическую ссылку на /, Следуй этим шагам:
Размонтируйте все ваши разделы, которые смонтированы в
/mediaтак/mediaпустой.удалять
/media:sudo rmdir /mediaВоссоздание
/mediaв качестве символической ссылки на/, находится в/:sudo ln -s / /mediaОбратите внимание, что
/приходит раньше/mediaвlnкоманда, потому что при создании символических ссылок мы сначала ставим цель, а затем источник.
Если вам когда-либо понадобится или вы хотите отменить это, просто выполните шаги в обратном порядке:
Размонтируйте все динамически смонтированные разделы.
- Они установлены в
/, но это через/mediaсимволическая ссылка, поэтому вы, вероятно, не сможете удалить эту символическую ссылку, пока они смонтированы, и, если вы это сделали, вы не сможете получить к ним доступ, сбросить данные или отключить их полностью.
- Они установлены в
Удалить символическую ссылку:
sudo rm /mediaПересоздайте настоящий каталог:
sudo mkdir /mediaВам не нужно указывать битовую маску, потому что при создании папки
rootразрешения по умолчанию верны для/media,
Этот метод аналогичен предыдущему предложению вручную создавать отдельные символические ссылки в / в конкретных подкаталогах /media , Это отличается тем, что символическая ссылка /media само по себе, что должно привести к точному поведению запрошенного OP, без необходимости вручную создавать ссылки для каждой точки монтирования.
Вы можете сделать это, расширив эти правила по мере необходимости -
# 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, нажмите здесь