LINUX.ORG.RU
ФорумAdmin

Подключение удаленных файловых систем при помощи systemd для пользователя

 , , , ,


1

2

Решил попробовать подключить удаленные файловые системы при помощи systemd .mount-модулей. По пользователям, а не для системы глобально.

Подключение из командной строки работает без проблем:

sshfs iron.burato:/ ~/iron
Файловая система подключается, можно работать. В ~/.ssh/config
Host iron.burato
    HostName 10.10.0.5
    IdentityFile ~/.ssh/Keys/iron.burato
    User burato
Ключ ~/.ssh/Keys/iron.burato присутствует. Попробовал из академического интереса создать .mount-модуль и подключится при помощи него. ~/.config/systemd/user/home-burato-iron.mount:
[Install]
WantedBy=default.target

[Mount]
Type=fuse.sshfs
What=iron.burato:/
Where=/home/burato/iron
Запускаю:
systemctl --user start home-burato-iron.mount
Получаю ошибку:
mount[17611]: mount: only root can use "--types" option
Попробовал добавить в .mount:
Options=user
systemctl --user daemon-reload
Получаю ошибку:
mount[20509]: mount: only root can use "--options" option
Получается подключаться systemd .mount-модулями можно только от суперпользователя? Просто была идея наделать таких файлов .mount для разных удаленных sshfs, webdav и nfs.

ОС Arch Linux, но systemd вроде как везде одинаков.



Последнее исправление: Xoomoh (всего исправлений: 1)

Получается подключаться systemd .mount-модулями можно только от суперпользователя?

Да. Чтобы это заработало, нужно либо добавить в .mount-юниты возможность переопределять запускаемую программу (внутри они тупо запускают /usr/bin/mount), либо ослабить проверки внутри mount.

Или можно написать обёртку вокруг mount, которая напрямую запускает бинарник драйвера ФС, если тип выглядит как fuse.*.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

почему NTFS-разделы можно монтиировать просто вот так mount -t ntfs-3g и оно работает?

Не-а:

$ mount -t ntfs-3g /dev/sdb2 /mnt/temp           
mount: only root can use "--types" option
intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Ну тогда в качестве альтернативы сделаю пока что вместо .mount .service-юниты, и там уже укажу необходимые ExecStart= и ExecStop=.

А вот еще такой вопрос, можно ли сделать так что бы этот .service-юнит автоматически стартовал когда есть сеть, а если пропадает отключался? Вроде встречал что-то такое.

Xoomoh
() автор топика

Да, систем ди еще не научили нормально обращаться с монтированием в обычном, пользовательском режиме. Если тебя интересует sshfs (да и не только), то посмотри на afuse. Удобная приблуда для автомонтирования.

anonymous
()
Ответ на: комментарий от Xoomoh

А вот еще такой вопрос, можно ли сделать так что бы этот .service-юнит автоматически стартовал когда есть сеть, а если пропадает отключался? Вроде встречал что-то такое.

Нет, и не будет, by design. «Сеть есть» — это слишком расплывчатое понятие.

intelfx ★★★★★
()
Ответ на: комментарий от Xoomoh

Это рядом, но не оно. Это костыль для программ, которые не умеют в IP_FREEBIND, и он работает только в одну сторону (стопорит поднятие зависящих сервисов, пока не поднята сеть, где «поднята сеть» зависит от реализации).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.