chmod를 사용하여 장치에 대한 권한을 변경할 수 있습니까?

chmod를 사용하여 장치에 대한 권한을 변경할 수 있습니까?

노트: udev 규칙을 사용하고 싶지 않습니다.

프로그래밍 방식으로 일부 장치의 권한을 변경해야 합니다. 코드에서 수행해야 하는 작업을 이해하려면 chmod명령만 사용하여 수행하고 싶습니다 .

지금까지 나는 다음을 시도했습니다.

root# ls -l /dev/sdb
brw-rw-rw- 1 root disk 8, 16 Apr 7 05:27 /dev/sdb

root# chmod 0600 /dev/sdb 

root# ls -l /dev/sdb
brw------- 1 root disk 8, 16 Apr 7 05:27 /dev/sdb

보시다시피 /dev/sdb소유자(루트)만이 읽기 및 쓰기 권한을 갖습니다. 하지만 여전히 새 파일을 만들고 연결된 플래시 드라이브에서 파일을 읽을 수 있습니다.

내가 무엇을 놓치고 있나요? chmod사용자가 특정 장치에 쓰는 것을 방지하는 방법은 무엇입니까 ?

답변1

내가 올바르게 이해했다면 /dev/sdb에 일부 파일 시스템이 마운트되어 있는 것입니다. 여기서 중요한 것은 권한입니다.파일 시스템에서/dev/sdb에 상주하며 /dev/sdb에 대한 권한은 문제와 전혀 관련이 없습니다. 권한 0666을 제외하면 누구나 파일 시스템의 액세스 제어 메커니즘을 우회하고 장치의 콘텐츠에 임의로 액세스할 수 있지만 이는 다른 문제입니다.

파일 시스템의 파일에 대한 액세스를 제한하려면 파일에 적절한 소유권과 사용 권한을 할당해야 합니다(파일 시스템의 루트에서 시작). FAT와 같은 파일 시스템의 경우, mount(8)을 사용하면 파일 시스템의 모든 파일에 대한 소유권과 액세스 권한을 설정할 수 있습니다. 전체 트리를 특정 사용자에게만 공개하고 다른 모든 사용자에게는 숨기려면 해당 사용자만 액세스할 수 있는 위치에 트리를 설치할 수 있습니다. 그러나 모든 사용자는 무언가가 마운트되고 있음을 볼 수 있습니다(mount(8) 또는 df(1)가 이를 표시합니다).

chroot(1)은 전혀 도움이 되지 않습니다.

답변2

/dev/sdb블록 장치 이름입니다. 권한을 변경해도 /dev/sdb파일 시스템에는 영향을 주지 않습니다 /dev/sdb.

mount마운트된 미디어 및 마운트 지점 목록을 가져옵니다 .

chmod마운트 지점에서 권한을 변경하는 데 사용됩니다 .

예를 들어 mount다음과 같은 줄이 표시됩니다.

/dev/sdb1 on /run/mount/pioneeraxon/disk1 type ext4 (...)

이 경우에는 /run/mount/pioneeraxon/disk1장착 지점입니다 /dev/sdb1. 변경하려면 권한이 필요합니다 /run/mount/pioneeraxon/disk1.

관련 정보