brwx______ 권한이 있는 블록 장치는 얼마나 안전합니까?

brwx______ 권한이 있는 블록 장치는 얼마나 안전합니까?

블록 장치 권한이 실제로 무엇을 의미하는지에 대한 정보를 찾을 수 없습니다. 블록 장치에 대한 읽기 권한은 무엇을 의미합니까? 이는 hexdump와 같은 작업을 수행할 수 없다는 뜻인가요? 쓰기 권한은 어떻습니까? 아니면 처형?

또한 장치에 대한 r, w 또는 x 권한 대신 해당 특정 장치만 마운트할 수 있는 sudo 권한을 사용자에게 부여하여 장치에 대한 마운트 권한이 있는 경우 어떻게 될까요? 무슨 일이야?

답변1

간단한 경우(파일처럼 장치에 액세스하는 경우) @Jasen은 다음과 같이 썼습니다.

  • 읽기 권한을 사용하면 장치에서 읽을 수 있습니다(덤핑, fsck읽기 전용 모드에서 실행 등).
  • 쓰기 권한을 사용하면 장치에 쓸 수 있습니다(이미지 덮어쓰기 등).
  • 실행, 읽기 등 읽기에 필요한 fsck모든 권한이 tune2fs필요합니다.그리고파일 시스템을 수정합니다.
  • 실행 권한은 무시됩니다. 장치 파일을 실행하려고 하면 블록 장치에 유효한 실행 코드가 포함되어 있어도 "권한 거부" 메시지가 표시됩니다.

루트 사용자라면 일반적으로 다음을 얻게 됩니다 CAP_DAC_READ_SEARCH.CAP_DAC_OVERRIDE 능력, 이는 권한 플래그가 완전히 무시됨을 의미합니다.

~을 위한I/W 제어더 복잡한 것은 다음과 같습니다.

ioctl을 수행하려면 다음을 수행할 수 있어야 합니다.열려 있는즉, 최소한 읽기 또는 쓰기 권한이 필요하다는 의미입니다.

그 밖의 모든 것은 운전자에 달려 있습니다. 일부 장치 드라이버는 CAP_SYS_RAWIO또는 같은 기능 만 확인하고 CAP_SYS_ADMIN, 일부는 읽기 권한에 "무해한" ioctl을 사용하고 정보 및 기타 ioctl에 대한 읽기+쓰기 권한만 제공합니다. 장치 드라이버가 ioctl 권한 확인을 위해 실행 권한을 사용하는 것이 가능하지만 이를 수행하는 드라이버는 없습니다.

~을 위한더 쉬움:

시스템 mount호출은 다음 두 가지만 확인합니다.

  1. 당신은 할 수 있어야합니다도착장치 파일. 즉, 장치 파일 경로의 모든 디렉터리에는 최소한 실행 권한 비트가 설정되어 있어야 합니다(또는 해당 기능이 있어야 함 CAP_DAC_READ_SEARCH).
  2. 이 기능이 필요합니다 CAP_SYS_ADMIN(보통 루트일 때 얻을 수 있음).

장치 파일 자체의 권한 비트는 마운트 시 완전히 무시되며 마운트된 파일 시스템에 대한 액세스에는 어떤 방식으로도 영향을 미치지 않습니다.

사용스도사용 가능한 모든 기능을 사용하여 실행된 프로그램을 루트로 실행합니다. 이는 모든 권한 확인이 무시됨을 의미하며 @Jasen이 주석에 쓴 것처럼 /bin/mount일반적으로 setuid-root이므로 항상 사용 가능한 모든 기능을 얻게 되므로 권한 비트가 없습니다. mount대부분의 Linux 배포판 에 미치는 영향및 기타 유닉스 운영 체제.

편집하다:기능에 대한 섹션은 Linux에만 적용됩니다. 다른 Unixoid 운영 체제(예: BSD 또는 OSX)는 루트의 특수 능력을 기능으로 분리하지 않으므로 기능에 관해서는 루트만 있으면 됩니다. 사용 가능한 맨페이지에 따르면 검사는 mount제가 설명한 Linux 관련 검사와 유사합니다. 어떤 운영 체제도 설치 시 권한 비트를 확인하지 않는 것 같습니다.

답변2

읽기는 읽기를 허용합니다(예: hexdump) 쓰기는 쓰기를 허용합니다(예: 장치에 이미지 쓰기). 이는 "hexedit"와 같은 도구를 사용하여 콘텐츠를 보고 수정할 수 있음을 의미합니다.

x가 무엇을 허용하는지 모르겠습니다(아마도 ioctl을 허용할까요?)

권한은 brwx______소유자(일반적으로 root)만이 이러한 작업을 수행할 수 있음을 의미하기 때문입니다.

관련 정보