Монтирование папки Windows с разрешениями на запись в Ubuntu

17

Видимо ответ здесь: /superuser/251537/mount-specific-ntfs-directory-on-linux, однако он не работает должным образом.

У меня есть система двойной загрузки с Windows 7 и Ubuntu 13.04 (обновленная с 12.10), и я хочу получить доступ к своим личным папкам Windows 7 для чтения и записи. Я следовал инструкциям по указанной ссылке, и мой /etc/fstabфайл выглядит так:

/dev/sda1 /media/windows ntfs ro,umask=0222,defaults 0 0
/media/windows/Users/MyUser/    /home/myuser/Windows    ntfs-3g rbind,user,umask=0222,defaults 0 0
/media/windows/Users/OtherUser/ /home/otheruser/Windows ntfs-3g rbind,user,umask=0222,defaults 0 0

Это почти работает, как ожидалось. Мой раздел Windows включен /media/windows/с правами только для чтения, а моя личная папка Windows находится в ~/Windows. Однако эта личная папка также доступна только для чтения.

Примечание. Я настраиваю это в многосессионной среде, поэтому мне нужно, чтобы это работало для моего сеанса и для сеансов других пользователей. Мне нужно, чтобы каждый пользователь мог получить доступ и иметь возможность писать и читать свои папки Windows из Linux.

Карлос Эухенио Томпсон Пинсон
источник
Есть ли способ, которым я могу изменить и протестировать конфигурации без перезагрузки всей системы. До сих пор я пытался изменить umask (до 0002), добавить параметры uid и gid и т. Д. Без каких-либо положительных результатов, но каждое изменение требует выключения системы.
Карлос Эухенио Томпсон Пинсон
Я наградил 100 наград Тотти за идею или установку раздела под /root/(который работает). Мое текущее решение использует подсказки, предоставленные falconer, ajThapa, totti и yilmi, ни один из них не работает так, как ожидалось в исходном вопросе (защиты недостаточно), но он работает (пользователи имеют прямой доступ к своим данным). Все эти упомянутые ответы были отклонены.
Карлос Эухенио Томпсон Пинсон

Ответы:

6

Вышеупомянутый связанный вопрос суперпользователя предназначен для монтирования раздела и подкаталога в режиме только для чтения. Вам нужен только подкаталог (личная папка) для чтения и записи.

Сначала проверьте, что ваша система может монтировать раздел ntfs в режиме чтения-записи.

mount -t ntfs-3g  -o rw /dev/sda1 /media/windows

Теперь проверьте, доступен ли для записи смонтированный fs. Если не останавливаться здесь и задать еще один вопрос на этом сайте.

Проблема в том, что подкаталог подключенного RO-раздела не может быть в RW. Таким образом, решение заключается в монтировании раздела Windows в RW в скрытом и недоступном месте. Итак, давайте смонтируем его в / root / win, который недоступен пользователям без полномочий root (без sudo)

Как пользователь root выполните следующие
шаги:
1. Смонтируйте раздел Windows в RW.

mount -t ntfs-3g -o rw /dev/sda1 /root/win  

2. Свяжите это

mount --bind /root/win/Users/MyUser/  /home/myuser/Windows  

3. Привязать доступный только для чтения экземпляр раздела Windows

mount --bind /root/win /media/windows  
mount -o remount,ro /media/windows

Теперь все должно быть в порядке. Кроме того, вы можете размонтировать раздел Windows, но я предупреждаю вас, что в некоторых системах это сделает недоступным привязанный раздел (@home). Кодumount /root/win

В качестве альтернативы вы можете смонтировать раздел Windows в RW в / media / windows (вместо / root / win) и сразу же связать его в той же точке монтирования (/ media / windows), чтобы никто (даже root) не мог писать в раздел (но в папке пользователя).

Тотти
источник
Это работает ? В чем проблема?
Тотти
Первая часть, монтирование rw в / media / windows, кажется, работает, хотя и не сообщает о разрешениях, которые я могу на самом деле трогать и редактировать файлы.
Карлос Эухенио Томпсон Пинсон
При перемонтировании я получаю следующую ошибку:Remounting is not supported at present. You have to umount volume and then mount it once again.
Карлос Эухенио Томпсон Пинсон
Я думаю, что это проблема вашей системы. Я успешно проверил это в Ubuntu 12.10. Я никогда не вижу такой ошибки даже в Ubuntu 10.04. Вы можете попробовать это в действующей системе (как вы, казалось, обновили ОС).
Тотти
Спасибо +1 от меня тоже, за элегантное решение и очень четкое объяснение. Мне особенно нравится трюк для монтирования пользовательской папки, чтобы один (даже root) мог писать на другой, кроме пользовательской папки. Это действительно лучшее решение, поскольку ни один экземпляр ОС, кроме экземпляра Windows 8.1, к которому принадлежат системные файлы, не имеет доступа к этим системным файлам. Совместно используемые данные, однако, это отдельная история.
Билл Обезьяна
5

Я сомневаюсь, что связанный ответ суперпользователя является рабочим. (Хотя я не могу попробовать.) От man mount:

Обратите внимание, что параметры монтирования файловой системы останутся такими же, как и в исходной точке монтирования, и их нельзя изменить, передав параметр -o вместе с --bind / - rbind. Параметры монтирования могут быть изменены отдельной командой перемонтирования, например:

mount --bind olddir newdir
mount -o remount,ro newdir

Я также сомневаюсь, что это возможно для --rbindчасти файловой системы с другим драйвером файловой системы (ntfs vs ntfs-3g).

Когда вы rbindиспользуете команду монтирования, все параметры игнорируются, поэтому ничто не станет доступным для чтения и записи. И поскольку драйвер ядра ntfs не поддерживает записи, очевидно, что rwопция не поможет и с этим. Используйте драйвер ntfs-3g.

В основном, что вы должны сделать, это (в терминале):

mount -t ntfs-3g -o ro /dev/sda1 /media/windows
mount --bind /media/windows/Users/MyUser/    /home/myuser/Windows
mount -o remount,rw /home/myuser/Windows

(Я думаю, что --rbindэто тоже не нужно, --bindдолжно быть достаточно.)

А что касается комментария под вопросом: Конечно, вам не нужно перезапускать систему для тестирования, просто используйте mountкоманду, как я делал выше. (И размонтировать с помощью umountкоманды.)

После того, как вы подтвердили, что это работает как задумано, вы просто измените монтирование и добавите нужные параметры: uid, gid, umask и т. Д.

сокольничий
источник
Что ж, я могу протестировать использование mount, однако, когда я найду рабочую конфигурацию, я захочу сделать это автоматически, либо /etc/fstabлюбым другим способом. (С Обским Вопросом: как я могу преобразовать mountкоманды в fstabпараметры?)
Карлос Эухенио Томпсон Пинсон
@ CarlosEugenioThompsonPinzón Это fstabпросто файл, который последовательно анализируется mountкомандой при запуске. Но я думаю, что Ubuntu не использует, mountно mountallпри запуске, который может не запускать команды в fstab последовательно. Так что да, просто поместить эти параметры команды в fstabнеработоспособное состояние. Но вы всегда можете просто поместить рабочие команды монтирования в сценарий запуска (например /etc/rc.local) или выполнить из них задание на вылет. Более важная вещь в вашем случае - это выяснить работающую схему монтирования, сделать ее автоматическим монтированием при запуске - простая задача.
сокольничий
@ CarlosEugenioThompsonPinzón Ой, я пропустил последний вопрос из вашего комментария. Итак, как команды монтирования переводятся в fstab? Вы можете посмотреть это здесьman mount или здесь . Краткая история: первое поле: устройство для монтирования, второе поле: точка монтирования, третье поле: тип fs (точнее, драйвер fs), четвертое поле: параметры монтирования, другое поле теперь менее важно. Таким образом, из команды mount строка, которую мы написали, -tидет в третье поле, а строка, которую мы написали, -oидет в четвертое поле.
сокольничий
3

Посмотрите, поможет ли это ...

Если sda1он уже подключен /media/windows, вы можете размонтировать его:

sudo umount /media/windows

Затем создайте каталог windowsв /media/:

sudo mkdir /media/windows

Отредактируйте /etc/fstabкак показано ниже:

/dev/sda1  /media/windows ntfs-3g  rw,nodev,noexec,auto,nouser,async,locale=en_US.utf8,uid=1000,gid=1000,umask=0002 0 0

/media/windows/Users/MyUser/  /home/myuser/Windows  ntfs-3g rbind,user,rw,nodev,noexec,auto,async,uid=1000,gid=1000,umask=0002 0 0

/media/windows/Users/OtherUser/  /home/otheruser/Windows  rbind,user,rw,nodev,noexec,auto,async,uid=1001,gid=1001,umask=0002 0 0

( Примечание : измените значения uid и gid для пользователя. Чтобы получить uid и gid пользователя, вы можете использовать команду id -u usernameи т id -g username. Д.)

Теперь вы можете смонтировать их с помощью команды:

sudo mount -a

Теперь перейдите в каталоги rebinded и посмотрите, сможете ли вы отредактировать файл. И ты должен быть готов.

точный
источник
Хорошо, у меня есть права доступа rw /media/windows(не сообщается ls, но я могу редактировать файлы) от имени пользователя root, однако в локальных каталогах мне это нужно sudoдля изменения файлов.
Карлос Эухенио Томпсон Пинсон
... и теперь все подключенные каталоги принадлежат мне (пользователь 1000), от /media/windowsдо /home/someotheruser/Windows.
Карлос Эухенио Томпсон Пинсон
Я думаю, теперь вы и другие пользователи можете создавать и сохранять работы в соотв. точки монтирования в пользовательском $ HOME ... если остальные пользователи по-прежнему не могут получить доступ к RW, добавьте их в свою группу (вероятно, с помощью gid 1000)
точным
В настоящее время у меня есть группа, к которой присоединены все локальные пользователи, и я даю разрешения на запись этой группе. Это решает «каждый пользователь имеет доступ к своим собственным данным», но весь раздел и данные других пользователей не защищены.
Карлос Эухенио Томпсон Пинсон
3

Проведите все тестирование перед редактированием файла конфигурации fstab.

Ну, вы, вероятно, знаете, что файловая система ntfs автоматически монтируется в режиме «только для чтения», если файловая система помечена как грязная. Прежде чем пытаться ответить на один из вопросов, нужно сначала подключить диск в windows и запустить chkdsk, а затем снова подключить его.

Кроме того, если монтирование в rw все еще не удается, попробуйте монтировать с другими вариантами типа монтирования, такими как sudo mount -t ntfsилиsudo mount -t ntfs-3g

Когда fs смонтирован в rw, вы можете сделать следующее:

mount --bind /media/MOUNTPOINT/TARGETFOLDER /home/SHAREDDIRECTORY/ mount -o remount,ro /home/SHAREDDIRECTORY/

или

sudo gksu nautilusили sudo gksu dolphinоткрыть проводник с правами su

yilmi
источник
Спасибо за chkdsk. В разделе NTFS действительно были некоторые повреждения, и теперь я могу записывать на подключенный диск с помощью sudo.
Карлос Эухенио Томпсон Пинсон
2

Почему не пытается установить его с атрибутом чтения и записи: rw ?

/ dev / sda1 / media / windows ntfs rw , umask = 0222, по умолчанию 0 0

user189541
источник
Я проверю, однако я бы предпочел, чтобы весь раздел был доступен только для чтения и только для некоторых определенных папок для чтения и записи.
Карлос Эухенио Томпсон Пинсон
Не сработало И раздел, и папки все еще доступны только для чтения. Единственное отличие состоит в том, что chmod и chown не перестают сообщать об ошибке только для чтения: они просто не работают.
Карлос Эухенио Томпсон Пинсон,
2

Я не совсем уверен, однако, вы можете попробовать это, пожалуйста. После того, как диск смонтирован, подайте следующую команду на терминал

sudo gksu nautilus

введите свой пароль администратора и в открывшемся графическом окне вы сможете щелкнуть диск и изменить права на чтение / запись.

Дайте мне знать, если это работает. Доступна помощь для использования nautilus с графическим интерфейсом с привилегиями root.

KSR
источник
Это позволило бы получить доступ к файлам, и они также могли бы быть скопированы, но права только для чтения не могли быть изменены, так как не-Unix файловые системы монтируются как только для чтения ...
Wilf
1

Я бы порекомендовал использовать sudo chmod.666 ~ / Windows

https://help.ubuntu.com/community/FilePermissions

user1553176
источник
1
Я не могу изменить разрешение или владельца (даже с sudo). Он отклоняет команду, говоря, что система доступна только для чтения. Даже в том, в /media/windows/котором находится весь раздел (и который не будет ожидаемым поведением)
Карлос Эухенио Томпсон Пинсон
Возможно, я ошибаюсь, но иногда у sudo нет прав, которые имел бы root. Попробуйте запустить sudo su, затем chmod
virtualxtc
0

Самый простой способ монтировать Windows в режиме чтения-записи - просто перезагрузить ее или полностью завершить работу. NTFS-раздел находится в спящем режиме, когда используется «быстрое отключение». Этот принцип более подробно рассматривается по этой ссылке.


источник