Ubuntu에서 쓰기 권한이있는 Windows 폴더 마운트


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있습니다. 그러나이 개인 폴더도 읽기 전용입니다.

참고 멀티 세션 환경에서이를 구성하고 있으므로 세션 및 다른 사용자의 세션에서 작동해야합니다. 각 사용자가 Linux에서 Windows 폴더에 액세스하고 Windows 폴더를 쓰고 읽을 수 있어야합니다.


전체 시스템을 다시 시작하지 않고도 구성을 변경하고 테스트 할 수있는 방법이 있습니까? 지금까지 긍정적 인 결과없이 umask 및 000 매개 변수 등을 추가하여 umask (0002로)를 변경하려고 시도했지만 각 변경에는 시스템 종료가 필요합니다.
— Carlos Eugenio Thompson Pinzón

나는 아이디어를 얻거나 /root/(작동중인) 파티션을 마운트하기 위해 totti에게 100 현상금을 수여했습니다 . 내 현재 솔루션은 falconer, ajThapa, totti 및 yilmi가 제공 한 힌트를 사용하지만 원래 질문에서 예상대로 작동하지 않지만 (보호는 충분하지 않음) 작동합니다 (사용자는 데이터에 rw 액세스 할 수 있음). 언급 된 모든 답변은 찬성되었습니다.
— Carlos Eugenio Thompson Pinzón

답변:


6

위의 링크 된 수퍼 유저 질문은 파티션과 하위 디렉토리를 읽기 전용 모드 로 마운트하기위한 것 입니다. 하위 디렉토리 (개인 폴더) 만 읽고 쓸 수 있습니다.

먼저 시스템이 읽기-쓰기 모드로 ntfs 파티션을 마운트 할 수 있는지 확인하십시오

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

이제 마운트 된 fs가 쓰기 가능한지 테스트하십시오. 여기서 멈추지 않으면이 사이트에서 다른 질문을하십시오.

문제는 RO 마운트 파티션의 하위 디렉토리가 RW에있을 수 없다는 것입니다. 따라서 해결책은 RW의 Windows 파티션을 숨겨져 액세스 할 수없는 장소에 마운트하는 것입니다. 그럼에 마운트 할 수 / / 루트 승리 (없이 루트가 아닌 사용자가 액세스 할 수있는 sudo)

루트 사용자 로서 다음
단계를 수행
하십시오. 1. RW에 Windows 파티션 마운트

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

또는 / root / win 대신 / media / windows 에서 RW의 Windows 파티션을 마운트하고 동일한 마운트 포인트 (/ media / windows)에 즉시 마운트하여 바인드 할 수 없습니다 (루트조차도). 파티션 (그러나 사용자 폴더에 있음).


작동합니까 ? 무슨 문제 요?
— totti

첫 번째 부분 인 / media / windows에 rw를 마운트하면 실제로 파일을 터치하고 편집 할 수있는 권한이보고되지 않지만 작동하는 것 같습니다.
— Carlos Eugenio Thompson Pinzón

다시 마운트 할 때 나는 다음과 같은 오류가 발생합니다 :Remounting is not supported at present. You have to umount volume and then mount it once again.
— 카를로스 에우 제 니오 톰슨 핀존

나는 당신의 시스템 문제라고 생각합니다. 우분투 12.10에서 성공적으로 테스트했습니다. 우분투 10.04에서도 그러한 오류를 보지 못했습니다. 실제 시스템에서 시도 할 수 있습니다 (OS가 업데이트 된 것처럼 보입니다).
— totti

우아한 해결책과 매우 명확한 설명을 위해 나에게도 +1 감사합니다. 특히 사용자 폴더를 마운트하는 트릭이 마음에들므로 하나의 루트 (심지어 루트)가 사용자 폴더 이외의 다른 폴더에 쓸 수 있습니다. 시스템 파일이 속한 Windows 8.1 인스턴스 이외의 OS 인스턴스가 해당 시스템 파일에 액세스하는 비즈니스가 없기 때문에 실제로 최상의 솔루션입니다. 그러나 공유 데이터는 다른 이야기입니다.
— Bill The Ape

5

연결된 수퍼 유저 답변이 제대로 작동하는지 의심합니다. (나는 그것을 시도 할 수는 없지만) man mount.

파일 시스템 마운트 옵션은 원래 마운트 포인트의 옵션과 동일하게 유지되며, -bind /-rbind와 함께 -o 옵션을 전달하여 변경할 수 없습니다. 마운트 옵션은 다음과 같은 별도의 다시 마운트 명령으로 변경할 수 있습니다.

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

또한 --rbind다른 파일 시스템 드라이버 (ntfs와 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입니다. 하지만 우분투가 사용하지 않는 생각 mount하지만, mountall순차적으로 fstab 파일에있는 명령을 실행되지 않을 수 있습니다 시작에서. 예, 이러한 명령 매개 변수를 단순히 넣으면 fstab작동하지 않을 수 있습니다. 그러나 항상 간단하게 작동하는 마운트 명령을 시작 스크립트 (예 /etc/rc.local:)에 넣거나 시작 스크립트에서 시작할 수 있습니다. 귀하의 경우 가장 중요한 것은 작동하는 마운트 구성표를 찾는 것입니다. 시작시 자동 마운트하는 것은 쉬운 일입니다.
— 매 사냥

@ CarlosEugenioThompsonPinzón 죄송합니다. 댓글에서 마지막 질문을 놓쳤습니다. 그러면 마운트 명령이 fstab으로 어떻게 변환됩니까? man mount또는 여기 에서 찾을 수 있습니다 . 짧은 이야기 : 첫 번째 필드 : 마운트 할 장치, 두 번째 필드 : 마운트 포인트, 세 번째 필드 : fs 유형 (보다 정확하게는 fs 드라이버), 네 번째 필드 : 마운트 옵션, 다른 필드는 현재 덜 중요합니다. 그래서 우리가 쓴 문자열 -t은 세 번째 필드에 -o들어가고, 우리가 쓴 문자열 은 네 번째 필드에갑니다.
— falconer

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 usernameresp를 사용할 수 있습니다 .)

이제 다음 명령을 사용하여 마운트 할 수 있습니다.

sudo mount -a

이제 리 바인드 디렉토리 로 이동 하여 파일을 편집 할 수 있는지 확인하십시오. 그리고 당신은해야합니다.


좋아,에 RW 권한이 /media/windows(안보고를 ls,하지만 난 파일을 편집 할 수 있습니다)하지만 내가 필요 로컬 디렉토리에 루트로 sudo파일을 수정하기 위해.
— Carlos Eugenio Thompson Pinzón

... 지금은 모든 디렉토리에서 나에게 (사용자 1000)에 속하는된다 장착 /media/windows에 /home/someotheruser/Windows.
— Carlos Eugenio Thompson Pinzón

나는 지금 당신과 다른 사용자가 resp에서 작품을 만들고 저장할 수 있다고 생각합니다. 사용자의 $ HOME에있는 마운트 포인트 ... 나머지 사용자가 여전히 RW 액세스 권한을 가질 수없는 경우 그룹에 추가하십시오 (아마도 gid 1000 사용)
— 정확한

현재 모든 로컬 사용자가 연결된 그룹이 있으며 해당 그룹에 대한 쓰기 권한을 부여하고 있습니다. 이렇게하면 "각 사용자가 자신의 데이터에 rw 액세스 할 수 있지만"전체 파티션 및 다른 사용자의 데이터가 보호되지 않습니다.
— Carlos Eugenio Thompson Pinzón

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 dolphinsu 권한이있는 탐색기를 열려면


감사합니다 chkdsk. 실제로 NTFS 파티션에 약간의 손상이 있었으므로 이제로 마운트 된 드라이브에 쓸 수 있습니다 sudo.
— Carlos Eugenio Thompson Pinzón

2

읽기 및 쓰기 속성으로 마운트를 시도하지 않는 이유는 무엇 rw 입니까?

/ dev / sda1 / media / windows ntfs rw , umask = 0222, 기본값은 0 0


확인하지만 전체 파티션을 읽기 전용으로하고 특정 폴더 만 읽기 / 쓰기로 설정합니다.
— Carlos Eugenio Thompson Pinzón

작동하지 않았다. 파티션과 폴더는 모두 읽기 전용입니다. 유일한 차이점은 chmod와 chown이 읽기 전용 오류보고에 실패하지 않는다는 것입니다. 작동하지 않습니다.
— Carlos Eugenio Thompson Pinzón

2

그러나 잘 모르겠습니다. 이걸 시도해보십시오. 드라이브가 마운트 된 후 터미널에 다음 명령을 제공하십시오

sudo gksu nautilus

관리자 암호를 입력하고 열리는 그래픽 창에서 드라이브를 클릭하고 읽기 / 쓰기 권한을 변경할 수 있어야합니다.

이것이 작동하는지 알려주세요. 루트 권한이있는 그래픽 인터페이스와 함께 노틸러스를 사용할 수있는 도움말이 있습니다.


이렇게하면 파일에 액세스 할 수 있으며 파일도 복사 할 수 있지만 비 유닉스 파일 시스템은 읽기 전용으로 마운트되므로 읽기 전용 권한은 변경되지 않을 수 있습니다.
— Wilf

1

sudo chmod.666 ~ / Windows를 사용하는 것이 좋습니다.

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


1
권한이나 소유자를 변경할 수 없습니다 (로도 sudo). 시스템이 읽기 전용이라는 명령을 거부합니다. 심지어에 /media/windows/있는 모든 파티션은 (그리고 예상되는 동작하지 않을 것이다)
— 카를로스 에우 제 니오 톰슨 핀존

아마도 틀렸을 수도 있지만 sudo에 루트 권한이없는 경우가 있습니다. sudo su를 실행 한 다음 chmod
— virtualxtc

0

읽기 / 쓰기로 Windows를 마운트하는 가장 쉬운 방법은 간단히 재부팅하거나 완전히 종료하는 것입니다. "빠른 종료"를 사용하면 NTFS 파티션이 최대 절전 모드로 전환 됩니다. 이 원칙은 이 링크 에서 더 자세히 다루고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.