루트에 대한 전체 권한과 다른 모든 사람에 대한 읽기 전용 권한으로 마운트하려는 장치가 있습니다. 매뉴얼 페이지에서는 이것이 가능하다고 알려줍니다.
그래서:
sudo mkdir /mnt/foo
sudo mkdir /mnt/fooReadOnly
sudo chmod 700 /mnt/foo
(rw는 루트에서만 작동합니다)sudo chmod 555 /mnt/fooReadOnly
(ro/모두가 탐색하도록 허용)- 장치가
/dev/sdaX
다음과 같이 설치되어 있는지 확인하십시오./mnt/foo
그런 다음 매뉴얼 페이지의 조언을 따랐습니다.
sudo mount --bind /mnt/foo /mnt/fooReadOnly
sudo mount -o remount,bind,ro /mnt/foo /mnt/fooReadOnly
이제 테스트해보자:
ls /mnt/foo
-->Permission denied
...옳은sudo ls /mnt/foo
일하다..옳은ls /mnt/fooReadOnly
-->Permission denied
...잘못된?
해당 바인드 마운트에서는 아무것도 변경할 수 없다는 메시지가 표시됩니다 Read-only file system
.
어떻게 해결할 수 있나요?
/etc/fstab
또한 시작 시 자동으로 다시 설치되도록 어떻게 추가합니까 ?
답변1
루트에 대한 전체 권한과 다른 모든 사람에 대한 읽기 전용 권한으로 마운트하려는 장치가 있습니다.
sudo mkdir /root/mnt/foo
sudo mkdir /mnt/fooReadOnly
mount -oro /dev/sdaX /mnt/foo
- 이렇게 하면 /dev/sdaX 장치가 마운트됩니다.읽기 전용/mnt/foo에 있습니다. 한 번에 읽기 전용 바인드 마운트를 생성할 수 없기 때문에 먼저 설정했습니다. 나는 사용자에게 단 한 순간이라도 읽기-쓰기 바인드 마운트에 대한 액세스 권한을 부여하고 싶지 않습니다.
ls -ld /root
- 표시되는 모드dr-xr-x---
와 소유자를 다시 확인하세요root root
.sudo mount --bind /mnt/fooReadOnly /root/mnt/foo
sudo mount -oremount,rw /root/mnt/foo
위의 명령을 시도해 보세요. 각 마운트 명령 후에 를 실행하면 grep foo /proc/self/mountinfo
각 파일 시스템과 각 마운트 지점 플래그가 별도의 열에 표시됩니다.
이를 이해하려면 모든 파일 시스템 플래그와 모든 마운트 지점 플래그를 동시에 변경해야 합니다 mount -oremount,rw
. mount -oremount,ro
그러나 각 장착 지점의 플래그에는 영향을 미치지 않습니다.다른마운트 지점.
unshare -rm
sdaX 대신 tmpfs 마운트로 전환하더라도 사용자 네임스페이스( ) 내에서는 위 명령을 시도할 수 없습니다. "Permission Denied"로 인해 실패합니다 mount -oremount,rw
. 대신 다음 순서를 사용해야 합니다.
mount tmp -ttmpfs /root/mnt/foo
mount --bind /root/mnt/foo /root/mnt/fooReadOnly
mount -oremount,bind,ro /root/mnt/fooReadOnly
mount --bind /root/mnt/fooReadOnly /mnt/fooReadOnly
또한 부팅 시 자동으로 다시 마운트되도록 /etc/fstab에 어떻게 추가합니까?
fstab은 너무 해킹적이므로 첫 번째 시퀀스를 fstab에 적용하지 않는 것이 좋습니다. 대신 두 번째 순서를 조정할 수 있습니다.
/dev/sdaX /root/mnt/foo ...
/root/mnt/foo /root/mnt/fooReadOnly none bind,ro
/root/fooReadOnly /mnt/fooReadOnly none bind