Монтирование без рут

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Закрыто
Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#1

22 июн 2019, 11:40

Хочу через терминал монтировать флеху как гуёвые проги монтируют, как то: Caja, Disks, Dolphin, Double Commander.
Может знает кто, каким чудом они это делают без рут прав?
Т.е. просто вставил флешку и нажал на неё - она автоматом подмонтируется. У меня только через sudo mount получается, подглядел в инете:
sudo mount -t vfat /dev/sdc1 /media/alex/flash -o uid=1000,gid=1000,utf8,dmask=027,fmask=137

Решение FreeStyler » 23 июн 2019, 19:29
darkfenix, ага, так и есть, но не хотелось в исходник лезть...

лол, нашёл таки решение через исходник -__-

Искал через mount, нашёл такие строки

Код: Выделить всё

UDisksDeviceInterface = 'org.freedesktop.UDisks.Device';

message := dbus_message_new_method_call(UDisksAddress,
PChar(ObjectPath),
UDisksDeviceInterface,
'FilesystemUnmount');
Но я не заметил что код про отмонтирование - 'FilesystemUnmount', хотя может это и не важно.

Полез искать org.freedesktop.UDisks.Device, в итоге нашёл такой пост https://askubuntu.com/a/181854/743770

Из него попробовал

Код: Выделить всё

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdc4 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" []
но он выдаёт ошибку.

В том же посте нашёл что есть уже UDisks2 и с помощью него можно сделать вывод списка дисков

Код: Выделить всё

gdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
Ну и в том же посте нашёл таки ту самую команду, которую юзает сам DC:

Код: Выделить всё

udisksctl mount --block-device /dev/sdc1
udisksctl unmount --block-device /dev/sdc1
И по ней уже в исходниках нашёл, что это действительно так:

Код: Выделить всё

{$IF DEFINED(LINUX)}
if not Result and HaveUDisksCtl then
begin
Result:= RunCommand('udisksctl', ['mount', '-b', Drive^.DeviceId], MountPath);
if Result then
begin
Write(MountPath);
Index:= Pos(' at ', MountPath);
if Index > 0 then
begin
Inc(Index, 4);
Drive^.Path:= Copy(MountPath, Index, Length(MountPath) - Index - 1);
end;
end
end;
if not Result and uUDisks.Initialize then
begin
try
Result := uUDisks.Mount(DeviceFileToUDisksObjectPath(Drive^.DeviceId), EmptyStr, nil, MountPath);
except
on E: Exception do
begin
Result := False;
WriteLn(E.Message);
end;
end;
if Result then
Drive^.Path := MountPath;
uUDisks.Finalize;
end;
if not Result and HavePMount and Drive^.IsMediaRemovable then
Result := fpSystemStatus('pmount ' + Drive^.DeviceId) = 0;
{$ELSE IF DEFINED(DARWIN)}
Так что можно не морочиться с фстаб и прочей лабудой, и если есть, то юзать udisksctl :smile:

Перейти к ответу ➙
Последний раз редактировалось пользователем 1 FreeStyler; всего редактировалось раз: 22
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

slant
Сообщения: 4469
Зарегистрирован: 21 июн 2017, 18:09
Решено: 95
Благодарил (а): 51 раз
Поблагодарили: 1966 раз
Контактная информация:

Монтирование без рут

#2

22 июн 2019, 12:57

Они не делают это без root прав. Там работает механизм схожий с sudo (для него есть возможность настроить запуск какой-либо конкретной программы пользователем с повышением прав, и даже сделать этот запуск безусловным - без запроса пароля). Для файловых менеджеров этот процесс в современных линуксах настраивают обычно через polkit.

Если нужно монтировать только определенный носитель известный заранее, есть простой способ. Добавляем в /etc/fstab примерно такое:

/dev/sdc /mnt/flashpen auto noauto,user 0 0

После чего команду mount /dev/sdc /mnt/flashpan может давать и обычный пользователь. Ключевые опции - noauto,user. Первая запрещает автоматически монтировать написанное в этой строчке, вторая - дает права непривилегированному пользователю.

Есть еще механизм automount для systemd - можно настроить автоматическое монтирование (определенных носителей в определенный каталог). Есть возможность сделать это еще через правила udev. Но это будет полное монтирование сразу по факту втыкания флешки, и размонтировать без прав root вручную тоже не выйдет. А давать через polkit или sudo обычному юзеру полный свободный доступ к mount и umount - грубейшее нарушение безопасности системы.

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#3

22 июн 2019, 13:34

slant, хм, что-то как-то не верится, что портабельный Double Commander, запускаемый не под рутом имеет какое-то отношение к polkit и всякому такому...
slant писал(а):
22 июн 2019, 12:57
Добавляем в /etc/fstab
но это же тоже получается что нужен рут для редактирования этого файла и опять же - так вся динамика рушится, вдруг я ещё один ЖД подключу и уже он будет sdc

Блин, исходники что ли копать придётся :sad: так неохота...
Вообще я питонячий скрипт пишу дабы он монтировал флеху автоматом, когда я её встввляю. Я могу его и с судо запускать, хотелось бы как-то без судо обойтись.
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

rogoznik
Сообщения: 10015
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Монтирование без рут

#4

22 июн 2019, 17:07

FreeStyler писал(а):
22 июн 2019, 13:34
портабельный Double Commander,
Он в принципе ничего не монтирует даже если установлен из реп. Он только знает какой "скрипт" нужно запустить для монтирования.
ИзображениеИзображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3008 раз
Контактная информация:

Монтирование без рут

#5

22 июн 2019, 17:38

slant писал(а):
22 июн 2019, 12:57
noauto
Поправь если я не ошибаюсь, но noauto вроде про сетевые шары параметр.
С дивана вещал, и перепутал его значение. :smile:

глянул в ман
noauto
Can only be mounted explicitly (i.e., the -a option will not cause the filesystem to be mounted).
...
Изображение
   
Изображение

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#6

22 июн 2019, 18:18

darkfenix, ну даже если так, суть в том что он монтирует. Может кто знает какой он скрипт запускает? Или код этого скрипта? Без рута же это делает. Я бы тоже мог этот скрипт запускать.
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

rogoznik
Сообщения: 10015
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Монтирование без рут

#7

22 июн 2019, 20:14

FreeStyler писал(а):
22 июн 2019, 18:18
Без рута же это делает.
Ты очень не внимательно читал пост slant. Перечитай вдумчиво и внимательно.
ИзображениеИзображение

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#8

22 июн 2019, 20:50

darkfenix, и шо там? -__-
Фига...
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

rogoznik
Сообщения: 10015
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Монтирование без рут

#9

22 июн 2019, 21:11

FreeStyler, ну тогда я не знаю как тебе еще понятнее объяснить.
ИзображениеИзображение

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#10

23 июн 2019, 07:21

То ли лыжи не едут, то ли вижу фигу -__-

darkfenix, ну вот он описал 3 способа - полкит, фстаб, юдев.

1. Через полкит как я понимаю это DC должен сделать телодвижения, которые описаны здесь Запуск привилегированных приложений с pkexec (PolicyKit) ? Или я не так понял? Если не так, то, объясните пожалуйста поподробнее. А если так, то для этих телодвижений опять же нужны рут права.
2. Через фстаб - как уже писал выше "но это же тоже получается что нужен рут для редактирования этого файла и опять же - так вся динамика рушится, вдруг я ещё один ЖД подключу и уже он будет sdc" ну и думаю вряд ли DC лезет в фстаб.
3. С юдев та же ботва, которая в п.2, что и с фстаб.
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

KOT040188
Сообщения: 827
Зарегистрирован: 11 май 2017, 22:01
Решено: 5
Откуда: РБ
Благодарил (а): 11 раз
Поблагодарили: 34 раза
Контактная информация:

Монтирование без рут

#11

23 июн 2019, 14:26

В sudoers отключить пароль для команды sudo mount. Ничего сложного.
Хто ты гэткі?

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#12

23 июн 2019, 14:49

KOT040188, а, ну это всё решает, спасибо!
Читать тему? Не, не слышал...
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

rogoznik
Сообщения: 10015
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Монтирование без рут

#13

23 июн 2019, 19:01

FreeStyler, все намного проще. Эти правила уже написаны. И ФМ просто их дергает при необходимости. В этих правилах, вероятно, указано что выполнять эти действия с повышением прав, но без запроса пароля.
ИзображениеИзображение

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#14

23 июн 2019, 19:29

darkfenix, ага, так и есть, но не хотелось в исходник лезть...

лол, нашёл таки решение через исходник -__-

Искал через mount, нашёл такие строки

Код: Выделить всё

UDisksDeviceInterface = 'org.freedesktop.UDisks.Device';

message := dbus_message_new_method_call(UDisksAddress,
PChar(ObjectPath),
UDisksDeviceInterface,
'FilesystemUnmount');
Но я не заметил что код про отмонтирование - 'FilesystemUnmount', хотя может это и не важно.

Полез искать org.freedesktop.UDisks.Device, в итоге нашёл такой пост https://askubuntu.com/a/181854/743770

Из него попробовал

Код: Выделить всё

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdc4 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" []
но он выдаёт ошибку.

В том же посте нашёл что есть уже UDisks2 и с помощью него можно сделать вывод списка дисков

Код: Выделить всё

gdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/drives --recurse --only-properties
Ну и в том же посте нашёл таки ту самую команду, которую юзает сам DC:

Код: Выделить всё

udisksctl mount --block-device /dev/sdc1
udisksctl unmount --block-device /dev/sdc1
И по ней уже в исходниках нашёл, что это действительно так:

Код: Выделить всё

{$IF DEFINED(LINUX)}
if not Result and HaveUDisksCtl then
begin
Result:= RunCommand('udisksctl', ['mount', '-b', Drive^.DeviceId], MountPath);
if Result then
begin
Write(MountPath);
Index:= Pos(' at ', MountPath);
if Index > 0 then
begin
Inc(Index, 4);
Drive^.Path:= Copy(MountPath, Index, Length(MountPath) - Index - 1);
end;
end
end;
if not Result and uUDisks.Initialize then
begin
try
Result := uUDisks.Mount(DeviceFileToUDisksObjectPath(Drive^.DeviceId), EmptyStr, nil, MountPath);
except
on E: Exception do
begin
Result := False;
WriteLn(E.Message);
end;
end;
if Result then
Drive^.Path := MountPath;
uUDisks.Finalize;
end;
if not Result and HavePMount and Drive^.IsMediaRemovable then
Result := fpSystemStatus('pmount ' + Drive^.DeviceId) = 0;
{$ELSE IF DEFINED(DARWIN)}
Так что можно не морочиться с фстаб и прочей лабудой, и если есть, то юзать udisksctl :smile:
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

KOT040188
Сообщения: 827
Зарегистрирован: 11 май 2017, 22:01
Решено: 5
Откуда: РБ
Благодарил (а): 11 раз
Поблагодарили: 34 раза
Контактная информация:

Монтирование без рут

#15

23 июн 2019, 20:21

FreeStyler писал(а):
23 июн 2019, 14:49
а, ну это всё решает, спасибо!
Читать тему? Не, не слышал...
Читал. А что?
Хто ты гэткі?

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#16

24 июн 2019, 05:17

KOT040188 писал(а):
23 июн 2019, 20:21
Читал. А что?
видимо по-диагонали или не понял смысла
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

rogoznik
Сообщения: 10015
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Монтирование без рут

#17

24 июн 2019, 06:03

FreeStyler, рад что нашел как сделать. :thumbs:
А на кота не обращай внимания, он же кот :crazy:
ИзображениеИзображение

Аватара пользователя

vir0id
Сообщения: 2757
Зарегистрирован: 19 дек 2017, 18:48
Решено: 15
Откуда: Рига
Благодарил (а): 163 раза
Поблагодарили: 305 раз
Контактная информация:

Монтирование без рут

#18

24 июн 2019, 07:11

FreeStyler писал(а):
22 июн 2019, 11:40
Т.е. просто вставил флешку и нажал на неё - она автоматом подмонтируется. У меня только через sudo mount получается, подглядел в инете:
sudo mount -t vfat /dev/sdc1 /media/alex/flash -o uid=1000,gid=1000,utf8,dmask=027,fmask=137
Т.е ты не хотел вводить в консоле sudo mount?

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#19

24 июн 2019, 07:27

vir0id, я вообще не хотел ничего вводить, как я уже писал
FreeStyler писал(а):
22 июн 2019, 13:34
Вообще я питонячий скрипт пишу дабы он монтировал флеху автоматом, когда я её вставляю. Я могу его и с судо запускать, но хотелось бы как-то без судо обойтись, раз уж такая возможность есть и ею пользуются другие проги.
Ну и заодно выяснить есть ли действительно такая команда, как оказалось - есть.
Ну и udisksctl mount -b /dev/sdXY попроще таки, чем простыня

Код: Выделить всё

sudo mount -t vfat /dev/sdc1 /media/alex/flash -o uid=1000,gid=1000,utf8,dmask=027,fmask=137
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Аватара пользователя

Автор темы
FreeStyler
Сообщения: 795
Зарегистрирован: 23 июл 2018, 07:58
Решено: 6
Откуда: Сиб
Благодарил (а): 756 раз
Поблагодарили: 94 раза
Контактная информация:

Монтирование без рут

#20

26 июн 2019, 09:30

Хм, сейчас пересмотрел код с исходником и заметил там ещё pmount.
На всякий случай оставлю это здесь)
https://ua3nbw.ru/all/avtomaunt-fleshek ... n-stretch/
https://raspberrypi.stackexchange.com/q ... thout-uuid
deadmau5 - Harmonic Mix
■ KDE Neon 22.04 (UE) @ Lenovo IdeaPad 3-15 Ryzen 5 4500U, 18 Гб DDR-4, 128 Gb SSD +1 Gb SSD 1920x1080

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей