Как сделать так, чтобы 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, нажмите здесь