디스크 장치 파일 읽기 권한 부여

디스크 장치 파일 읽기 권한 부여

hdparm벤치마킹 목적으로 이를 사용 하거나 장치에서 직접 사용해야 하는 경우 dd이를 안전하게 수행하는 올바른 방법이 무엇인지 알고 싶습니다.

문제의 디스크가 다음과 같다고 가정합니다 /dev/sda.

root@igloo:~# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 May 29 08:23 /dev/sda
brw-rw---- 1 root disk 8, 1 May 29 08:23 /dev/sda1

난 정말 그러고 싶지 않아쓰다어쨌든 sda. 그럼 일반 사용자로 chmod o+r /dev/sda*실행 하는 것이 좋을까요 dd, 아니면 실행하는 것이 좋을까요?hdparm

답변1

chmod o+r /dev/sda*/etc/shadow모든 프로그램이 전체 디스크(예를 들어 루트 파티션이 있는 경우 비밀번호 해시 포함 sda)를 읽을 수 있기 때문에 매우 위험합니다 !

이 작업을 보다 안전하게 수행하는 방법에는 최소한 두 가지가 있습니다.

  1. 디스크를 읽어야 하는 모든 사용자를 이 disk그룹에 추가하고 chmod g-w /dev/sda*이 그룹에 대한 쓰기 액세스를 차단하려면 실행하세요.
  2. /dev/sda*예를 들어 디스크를 읽어야 하는 사용자만 포함된 그룹으로 그룹을 변경하고 를 사용하여 chgrp my-benchmarkers /dev/sda*해당 그룹에 대한 쓰기 액세스를 차단합니다 chmod.

장치 노드의 그룹 및 권한 변경은 /dev연결된 장치의 연결이 끊어지거나 컴퓨터가 다시 시작될 때까지 일시적일 뿐입니다.

hdparm한 가지 문제는 대부분의 기능에 쓰기 액세스가 필요하다는 것입니다 . 원하는 모든 항목에 대해 읽기 전용 액세스가 가능한지 확인해야 합니다.

편집하다:hdparm쓰기 액세스가 필요하지 않은 것 같습니다 . 더 필요해CAP_SYS_RAWIO 능력대부분의 ioctl을 실행합니다. setcap cap_sys_rawio+ep /sbin/hdparmhdparm을 사용하여 이 기능을 제공 할 수 있습니다 . 이것이 허용된다는 점에 유의하십시오.누구나매뉴얼 페이지에서 "매우 위험함", "매우 위험함" 또는 "예외적으로 위험함"으로 설명하는 다른 모든 hdparm을 포함하여 해당 장치에서 수행할 수 있는 거의 모든 작업을 수행하기 위해 장치 파일을 실행 hdparm하고 최소한 읽기 액세스 권한을 가질 수 있는 사람 주문하다. 래퍼 스크립트가 더 나은 솔루션일 수 있습니다.hdparm--write-sector

그렇지 않은 경우 쓰기 액세스 권한을 부여하거나 sudo 규칙을 사용하여 루트 사용자가 실행할 수 있는 래퍼 스크립트를 작성해야 합니다.

답변2

/dev의 일부 배포에서는 이를 지원하지 않을 수도 있지만 한 가지 가능성은 ACL을 사용하는 것입니다. 예:

$ dd if=/dev/sda bs=1M count=200 of=/dev/null
dd: failed to open '/dev/sda': Permission denied
$ sudo setfacl -m u:youruser:r /dev/sd*
$ dd if=/dev/sda bs=1M count=200 of=/dev/null
200+0 records in
200+0 records out
209715200 bytes (210 MB, 200 MiB) copied, 0.0335544 s, 6.3 GB/s

AFAIK hdparm -t그래도 루트로 실행해야 합니다.

관련 정보