Montowanie folderu Windows z uprawnieniami do zapisu w Ubuntu


17

Najwyraźniej odpowiedź jest tutaj: /superuser/251537/mount-specific-ntfs-directory-on-linux, jednak nie działa zgodnie z oczekiwaniami.

Mam system podwójnego rozruchu z Windows 7 i Ubuntu 13.04 (uaktualniony z 12.10) i chcę mieć dostęp do moich folderów osobistych Windows 7 zarówno do odczytu, jak i pisania. Postępowałem zgodnie z instrukcjami zgodnie z podanym linkiem, a mój /etc/fstabplik wygląda następująco:

/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

Działa prawie zgodnie z oczekiwaniami. Moja partycja Windows jest włączona /media/windows/z uprawnieniami tylko do odczytu, a mój folder osobisty Windows jest w ~/Windows. Jednak ten folder osobisty jest również tylko do odczytu.

Uwaga: Konfiguruję to w środowisku wielosesyjnym, więc potrzebuję tego do pracy z sesją i sesjami innych użytkowników. Potrzebuję, aby każdy użytkownik miał dostęp i mógł pisać i czytać swoje foldery Windows z Linuksa.


Czy jest jakiś sposób na zmianę i przetestowanie konfiguracji bez konieczności restartowania całego systemu. Do tej pory próbowałem zmienić umask (na 0002), dodając parametry uid i gid itp. Bez pozytywnych rezultatów, ale każda zmiana wymaga wyłączenia systemu.
Carlos Eugenio Thompson Pinzón

Przyznałem 100 nagród Totti za pomysł lub zamontowanie partycji /root/(która działa). Moje obecne rozwiązanie wykorzystuje wskazówki dostarczone przez falconer, ajThapa, totti i yilmi, żadne z nich nie działa zgodnie z oczekiwaniami w pierwotnym pytaniu (zabezpieczenia nie są wystarczające), ale działa (użytkownicy mają dostęp do swoich danych). Wszystkie wspomniane odpowiedzi zostały ocenione pozytywnie.
Carlos Eugenio Thompson Pinzón

Odpowiedzi:


6

Powyższe połączone pytanie superużytkownika dotyczy montowania partycji i podkatalogu w trybie tylko do odczytu . Potrzebujesz tylko podkatalogu (folder osobisty) do odczytu i zapisu.

Najpierw sprawdź, czy system może zamontować partycję NTFS w trybie do odczytu i zapisu

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

Teraz sprawdź, czy zamontowany fs jest zapisywalny. Jeśli nie, zatrzymaj się tutaj i zadaj kolejne pytanie na tej stronie.

Problem polega na tym, że podkatalog partycji zamontowanej na RO nie może znajdować się w RW. Tak więc rozwiązaniem jest zamontowanie partycji Windows w RW w ukrytym i niedostępnym miejscu. Zamontujmy to na / root / win, co jest niedostępne dla użytkowników innych niż root (bez sudo)

Jako głównego użytkownik ma następujące
kroki
1. Zamontować partycji Windows w RW

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

2. Wiąż to

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

3. Powiąż wystąpienie partycji Windows tylko do odczytu

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

Teraz wszystko powinno być OK. Dodatkowo możesz odmontować partycję Windows, ale ostrzegam cię w jakimś systemie, że sprawi, że powiązana (@home) stanie się niedostępna. Kod jestumount /root/win

Alternatywnie możesz zamontować partycję Windows w RW w / media / windows (zamiast / root / win) i natychmiast powiązać zamontować ją w tym samym punkcie montowania (/ media / windows), aby nikt (nawet root) nie mógł pisać na partycja (ale w folderze użytkownika).


Czy to działa ? W czym problem
totti

Pierwsza część, montaż rw w / media / windows wydaje się działać, chociaż nie zgłasza uprawnień w, których mogę dotykać i edytować pliki.
Carlos Eugenio Thompson Pinzón

Podczas ponownego montażu pojawia się następujący błąd:Remounting is not supported at present. You have to umount volume and then mount it once again.
Carlos Eugenio Thompson Pinzón

Myślę, że to problem twojego systemu. Testowałem to pomyślnie w Ubuntu 12.10. Nigdy nie widzę takiego błędu nawet w Ubuntu 10.04. Możesz spróbować w systemie na żywo (ponieważ wydaje się, że zaktualizowano system operacyjny).
totti

Dziękuję też +1 ode mnie za eleganckie rozwiązanie i bardzo jasne wyjaśnienie. Szczególnie podoba mi się sposób montowania folderu użytkownika, aby jeden (nawet root) mógł pisać w folderze innym niż folder użytkownika. To jest rzeczywiście najlepsze rozwiązanie, ponieważ żadne wystąpienie systemu operacyjnego inne niż wystąpienie systemu Windows 8.1, do którego należą pliki systemowe, nie ma dostępu do tych plików. Udostępniane dane to jednak inna historia.
Bill The Ape,

5

Wątpię, czy połączona odpowiedź superużytkownika jest poprawna. (Chociaż nie mogę tego spróbować.) Od man mount:

Zauważ, że opcje montowania systemu plików pozostaną takie same jak te w oryginalnym punkcie montowania i nie można ich zmienić, przekazując opcję -o wraz z --bind / - rbind. Opcje montowania można zmienić za pomocą osobnego polecenia remount, na przykład:

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

Wątpię również, aby możliwa --rbindbyła część systemu plików z innym sterownikiem systemu plików (NTFS vs NTFS-3G).

Kiedy rbindpolecenie mount zignoruje każdą opcję, więc nic nie stanie się odczytem-zapisem. A ponieważ sterownik jądra NTFS nie obsługuje zapisów, oczywiście rwopcja ta również nie pomoże. Użyj sterownika NTFS-3G.

Zasadniczo powinieneś to zrobić (w terminalu):

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

(Myślę, że --rbindto również nie jest konieczne, --bindpowinno wystarczyć.)

A jeśli chodzi o komentarz pod pytaniem: Oczywiście nie musisz ponownie uruchamiać systemu do testowania, po prostu użyj mountpolecenia tak jak ja powyżej. (I odmontować za pomocą umountpolecenia.)

Po potwierdzeniu, że działa to zgodnie z przeznaczeniem, wystarczy zmodyfikować mount i dodać żądane opcje: uid, gid, umask itp.


Cóż, mogę testować za pomocą mount, jednak kiedy znajdę działającą konfigurację, będę chciał to zrobić automatycznie, albo za pomocą /etc/fstablub w jakikolwiek inny sposób. (Z pytaniem Ob: jak tłumaczyć mountpolecenia na fstabparametry?)
Carlos Eugenio Thompson Pinzón

@ CarlosEugenioThompsonPinzón To fstabtylko plik, który jest analizowany sekwencyjnie przez mountkomendę podczas uruchamiania. Ale myślę, że Ubuntu nie używa, mountale mountallprzy starcie, co może nie uruchamiać poleceń w fstab po kolei. Tak, więc po prostu ustawienie tych parametrów poleceń fstabmoże nie działać. Ale zawsze możesz umieścić po prostu działające polecenia montowania w skrypcie startowym (np. /etc/rc.local) Lub wykonać z nich zadanie wstępne. Ważniejszą rzeczą w twoim przypadku jest znalezienie działającego schematu montowania, dzięki czemu automatyczne podłączanie przy uruchamianiu jest łatwym zadaniem.
sokolnik

@ CarlosEugenioThompsonPinzón Ups, przegapiłem ostatnie pytanie z twojego komentarza. Jak więc polecenia montować tłumaczą się na fstab? Możesz to sprawdzić tutajman mount lub tutaj . Krótka historia: pierwsze pole: urządzenie do zamontowania, drugie pole: punkt montowania, trzecie pole: typ fs (a dokładniej sterownik fs), czwarte pole: opcje montowania, drugie pole jest teraz mniej ważne. Tak więc z polecenia mount ciąg, który napisaliśmy, -tprzechodzi do trzeciego pola, ciąg, który napisaliśmy, -oprzechodzi do czwartego pola.
sokolnik

3

Sprawdź, czy to pomoże ...

Jeśli sda1jest już zamontowany /media/windows, możesz odmontować go za pomocą:

sudo umount /media/windows

Następnie utwórz katalog windowsw /media/:

sudo mkdir /media/windows

Edytuj /etc/fstabjak poniżej:

/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

( Uwaga : zmień wartości UID i GID jak dla użytkownika. Aby uzyskać identyfikator UID i GID użytkownika, możesz użyć polecenia id -u usernamei id -g usernameodpowiednio.)

Teraz możesz zamontować je za pomocą polecenia:

sudo mount -a

Teraz przejdź do ponownie powiązanych katalogów i sprawdź, czy możesz edytować plik. I powinieneś skończyć.


Ok, mam uprawnienia rw na /media/windows(nie zgłaszane ls, ale mogę edytować pliki) jako root, jednak w lokalnych katalogach muszę to zrobić sudo, aby zmodyfikować pliki.
Carlos Eugenio Thompson Pinzón

... a teraz wszystkie zamontowane katalogi należą do mnie (użytkownik 1000), od /media/windowsdo /home/someotheruser/Windows.
Carlos Eugenio Thompson Pinzón

Wydaje mi się, że teraz ty i inni użytkownicy możecie tworzyć i zapisywać prace w odniesieniu. punkty montowania w $ HOME użytkowników ... jeśli reszta użytkowników nadal nie ma dostępu do RW, dodaj je do swojej grupy (prawdopodobnie z gid 1000)
dokładnie

Obecnie mam grupę, do której przyłączeni są wszyscy użytkownicy lokalni, i udzielam uprawnień do zapisu dla tej grupy. To rozwiązuje problem „każdy użytkownik ma dostęp do własnych danych”, ale cała partycja i dane innych użytkowników nie są chronione.
Carlos Eugenio Thompson Pinzón

3

Wykonaj wszystkie testy przed edycją pliku konfiguracyjnego fstab.

Prawdopodobnie wiesz, że system plików NTFS jest automatycznie montowany w trybie tylko do odczytu, jeśli system plików jest oznaczony jako brudny. Przed wypróbowaniem jakiejkolwiek odpowiedzi musisz najpierw zainstalować dysk w systemie Windows i uruchomić program chkdsk przed ponownym podłączeniem.

Ponadto, jeśli montaż w rw nadal nie powiedzie się, powinieneś spróbować montażu z różnymi opcjami typu montażu, takimi jak sudo mount -t ntfslubsudo mount -t ntfs-3g

Po zamontowaniu fs w rw możesz wykonać następujące czynności:

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

lub

sudo gksu nautiluslub sudo gksu dolphinotworzyć eksploratora z uprawnieniami su


Dziękuję za chkdsk. Rzeczywiście wystąpiły pewne uszkodzenia na partycji NTFS, a teraz mogę pisać na zamontowanym dysku za pomocą sudo.
Carlos Eugenio Thompson Pinzón

2

Dlaczego nie próbuje go zamontować z atrybutu odczytu i zapisu: rw ?

/ dev / sda1 / media / windows ntfs rw , umask = 0222, domyślnie 0 0


Sprawdzę, jednak wolę mieć całą partycję tylko do odczytu i tylko niektóre określone foldery jako do odczytu i zapisu.
Carlos Eugenio Thompson Pinzón

Nie działało Zarówno partycja, jak i foldery są nadal tylko do odczytu. Jedyną różnicą jest to, że chmod i chown nie zawiadamiają o błędzie tylko do odczytu: po prostu nie działają.
Carlos Eugenio Thompson Pinzón

2

Nie jestem jednak pewien, czy możesz tego spróbować. Po zamontowaniu napędu wydaj następujące polecenie na terminalu

sudo gksu nautilus

wprowadź hasło administracyjne, a w otwartym oknie graficznym powinieneś być w stanie kliknąć dysk i zmienić uprawnienia do odczytu / zapisu.

Daj mi znać, czy to działa. Dostępna jest pomoc dotycząca używania nautilusa z interfejsem graficznym z uprawnieniami administratora.


Pozwoliłoby to na dostęp do plików i można je również skopiować, ale uprawnienia tylko do odczytu nie mogą zostać zmienione, ponieważ systemy plików inne niż unix są montowane jako tylko do odczytu ...
Wilf

1

Polecam używanie sudo chmod.666 ~ / Windows

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


1
Nie mogę zmienić uprawnienia ani właściciela (nawet z sudo). Odrzuca polecenie mówiące, że system jest tylko do odczytu. Nawet w /media/windows/którym nie jest cała partycja (a co nie byłoby oczekiwanym zachowaniem)
Carlos Eugenio Thompson Pinzón

Prawdopodobnie się mylę, ale czasami sudo nie ma uprawnień, które miałby root. Spróbuj uruchomić sudo su, a następnie chmod
virtualxtc

0

Najłatwiejszym sposobem zamontowania systemu Windows w trybie odczytu i zapisu jest po prostu ponowne uruchomienie go lub całkowite zamknięcie. Partycja NTFS hibernuje, gdy używane jest „szybkie zamykanie”. Zasada ta jest szczegółowo opisana pod tym linkiem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.