/sys 또는 /proc의 블록 장치가 읽기 전용인지 어떻게 테스트합니까?

/sys 또는 /proc의 블록 장치가 읽기 전용인지 어떻게 테스트합니까?

/dev/block/sr0CentOS6 시스템에는 (읽기 전용) 및 /dev/block/sda(읽기/쓰기) 가 있습니다 . 어떤 장치가 읽기 전용인지 프로그래밍 방식으로 확인하는 방법은 무엇입니까? 거기에 파일이 있지만 ro두 장치 모두 "0"입니다.

사용할 수 있는 몇 가지 트릭( name 을 ^srname 과 비교 ^sd, 장치 노드의 소유권 찾기 cdrom)이 있지만 일반적인 솔루션을 기대합니다.

답변1

1 이면 /sys/block/xxx/ro커널은 읽기 전용임을 보장합니다.

$ sudo losetup /dev/loop0 a
$ sudo losetup -r /dev/loop1 b
$ cat /sys/block/loop0/ro
0
$ cat /sys/block/loop1/ro
1

그렇지 않은 경우 커널에서 위에 쓰기를 시도할 수 있지만 더 낮은 수준에서는 쓰기가 차단될 수 있습니다.

CD/DVD의 경우 미디어 유형(읽기 전용, 쓰기 가능, 다시 쓰기 가능, 세션 열기...)을 찾을 수 있습니다 cdrdao disk-info.

이제 장치에 쓰기가 가능하지만 장치 파일에 대한 쓰기 권한이 없을 수도 있지만 이는 또 다른 이야기이며 쉽게 확인할 수 있습니다.[ -w "$dev" ]

답변2

살펴보기 /proc/mounts(또는 출력주문하다).

/dev/sr0항목은 다음과 같습니다. ro,....
/dev/sda1항목은 다음과 같습니다.rw,....

일반적으로 루트 파티션은 UUID를 사용하거나 제 경우에는 볼륨 레이블을 사용하여 마운트됩니다. 그 부분에 대해서는 현명해야 하지만 CDROM과 추가 드라이브는 다음과 같이 나열됩니다./dev/...

장치의 상태가 아니라 파일 시스템의 RO/RW 상태를 찾고 있다는 점을 명심하세요.

관련 정보