우분투에서 fstab을 사용하여 마운트 읽기 전용 읽기?


8

한 위치 (/ src)를 다른 위치 (/ dst)에서 읽기 전용으로 다시 마운트해야합니다. 이것은 다음과 같이 수행 할 수 있습니다 :

$ sudo mount --bind /src /dst
$ sudo mount -o remount,ro /dst

그러나 /etc/fstab부팅 할 때 마운트를 수행하고이 문제에 대한 다른 제안 된 솔루션을 보려고합니다. 예 :

/src  /dst    none  bind            0 0
/src  /dst    none  remount,bind,ro 0 0

불행히도 디렉토리는 내 시스템에서 읽기 / 쓰기로 마운트되어 있습니다.

/src  /dst    none  bind            0 0
/dst  /dst    none  remount,bind,ro 0 0

마운트하려고 할 때 오류가 발생합니다 /dst.

mount: /dst not mounted already, or bad option

위의 솔루션은 다른 배포판에서 작동하지만 불행히도 Ubuntu 10.04.4 LTS (커널 2.6.32-41- 서버)에서는 작동하지 않습니다.

mount명령을 배치하는 것 외에 이것을 달성하는 방법에 대한 아이디어 가 /etc/rc.local있습니까?

답변:


6

이전 커널에서는 mount --bind읽기 / 쓰기 파일 시스템의 읽기 전용보기를 작성할 수 없습니다. 커널은 파일 시스템의 읽기-쓰기 상태를 바인드 마운트에 의해 복제되지 않은 단일 위치에 저장합니다. 최신 커널에서는이를 허용하지만 여전히 별도의 mount단계 가 필요합니다 . 먼저 바인드 한 다음 읽기 전용으로 만드십시오. 이를 변경하기위한 커널 패치가 있으며 데비안과 같은 일부 배포판에서이를 적용했지만 우분투는 (적어도 12.04가 아닌) 적용하지 않았습니다.

한 가지 해결책은 Oli가 설명하는/etc/fstab 것처럼 부트 스크립트에서 대신 읽기 전용보기를 작성하는 것 입니다.

그렇지 않으면 대신 bindfs 를 사용할 수 있습니다 . 이것은 FUSE 파일 시스템입니다. FUSE를 통과하면 추가 간접 계층이 도입되므로 약간 느려집니다. ACL과 같은 확장 파일 메타 데이터에 대한 지원도 손실됩니다. 반대로 읽기 전용보기에는 인식 가능한 파일 시스템 유형이 있으므로 파일 시스템 탐색 (예 : locate및 백업) 에서 쉽게 제외 할 수 있습니다.

fstab항목은 다음과 같습니다 :

bindfs#/src  /dst  fuse perms=a=rX

6

이 LWN 기사 에 따르면 이 동작은 버전 2.6.25 주위의 커널에 들어갔다. 간단히 말해 대상 파일 시스템이 rw인 경우 맨 위에 바인딩하면로 변환 할 수 없습니다 ro.

2.6.26에서는 그것들이 부분적으로 수정되었으므로 (발견 한 바와 같이) 다시 마운트를 시작할 수는 있지만 fstab에서는 그렇게 할 수 없습니다.


fstab에서 시도한 내용은 다음과 같습니다.

/home/oli/Desktop/testmount  /mnt none bind,ro

을 발사 한 후 mount -a, /mnt장착했지만, 난 여전히 파일을 만들 수 있습니다. 그런 다음 발사 후 sudo mount -o remount /mnt읽기 전용이되었습니다.

예, 가장 깨끗한 방법은 이벤트 /etc/rc.local를 시작하는 매우 간단한 Upstart 스크립트를 작성하거나 mountall즉시 작성하는 것입니다.


또한 옵션을 mount --bind변경할 수 없다는 것을 읽었습니다 mount(의 맨 페이지에도 나와 있습니다 mount). 이상한 점은 내가 분명히 (다른 출처에 따르면) 나열된 솔루션이 Fedora (첫 번째 솔루션)에서 작동한다는 것입니다. 를 사용하는 아이디어에 감사드립니다 upstart. (BTW 첫 줄의 두 번째 "rw"는 "ro"여야한다고 생각합니다.)
mgd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.