
블록 장치에 대한 권한이 실제로 무엇을 의미하는지에 대한 정보를 찾는 데 어려움이 있습니다. 블록 장치의 경우 읽기 권한이란 무엇을 의미합니까? hexdump 같은 작업을 수행할 수 없다는 뜻인가요? 쓰기 권한은 어떻습니까? 아니면 실행?
또한 사용자에게 해당 특정 장치만 마운트할 수 있는 sudo 권한을 부여하고 장치에 대한 r,w 또는 x 권한은 부여하지 않음으로써 장치에 대한 마운트 권한이 있는 경우 어떻게 될까요? 그러면 무슨 일이 일어날까요?
답변1
간단한 경우(파일처럼 장치에 액세스하는 경우)는 @Jasen이 쓴 것과 같습니다.
- 읽기 권한은 장치에서 읽기(덤핑,
fsck
읽기 전용 모드로 실행 등) 를 허용합니다. - 쓰기 권한은 장치에 쓰기(이미지 덮어쓰기 등)를 허용합니다.
- 읽어야 하는 , 등을
fsck
실행 하려면 두 권한 모두 필요합니다.tune2fs
그리고파일 시스템을 수정하십시오. - 실행 권한은 무시됩니다. 장치 파일을 실행하려고 하면 블록 장치에 유효한 실행 코드가 포함되어 있어도 '권한 거부' 메시지가 표시됩니다.
루트 사용자라면 일반적으로 다음을 얻습니다 CAP_DAC_READ_SEARCH
.CAP_DAC_OVERRIDE
능력, 이는 권한 플래그가 완전히 무시됨을 의미합니다.
을 위한ioctl더 복잡합니다.
ioctl을 수행하려면 다음을 수행할 수 있어야 합니다.열려 있는이는 최소한 읽기 또는 쓰기 권한이 필요하다는 것을 의미합니다.
다른 모든 것은 드라이버에 따라 다릅니다. 일부 장치 드라이버는 CAP_SYS_RAWIO
또는 같은 기능만 확인하고 CAP_SYS_ADMIN
일부는 정보만 제공하는 "무해한" ioctl에 대한 읽기 권한과 다른 ioctl에 대한 읽기+쓰기 권한을 사용합니다. 장치 드라이버는 ioctl 권한 확인을 위해 실행 권한을 사용할 수 있지만 이를 수행하는 드라이버는 없습니다.
을 위한산더 쉽습니다:
syscall mount
은 다음 두 가지만 확인합니다.
- 당신은 할 수 있어야합니다도달하다장치 파일. 즉, 장치 파일 경로에 있는 모든 디렉터리에는 최소한 실행 권한 비트가 설정되어 있어야 합니다(또는 해당 기능이 있어야 함
CAP_DAC_READ_SEARCH
). - 당신은 능력이 필요합니다
CAP_SYS_ADMIN
(보통 루트일 때 얻을 수 있는 능력)
장치 파일 자체의 권한 비트는 마운트 시 완전히 무시되며 마운트된 파일 시스템에 대한 액세스에는 어떤 방식으로도 영향을 미치지 않습니다.
사용sudo사용 가능한 모든 기능을 사용하여 실행된 프로그램을 루트로 실행합니다. 즉, 모든 권한 확인이 무시되고 @Jasen이 주석에 쓴 것처럼 /bin/mount
일반적으로 setuid-root이므로 항상 사용 가능한 모든 기능을 얻게 되므로 권한 비트는 영향을 미치지 않습니다. mount
대부분의 Linux 배포판에 있음및 기타 유닉스 운영 체제.
편집하다:기능에 관한 부분은 Linux에만 해당됩니다. BSD나 OSX와 같은 다른 Unixoid 운영 체제는 루트의 특수 능력을 기능별로 분리하지 않으므로, 기능이 언급되면 루트만 있으면 됩니다. 사용 가능한 맨페이지에 따르면 검사는 mount
제가 설명한 Linux 관련 검사와 유사합니다. 마운트할 때 권한 비트를 확인하는 OS는 없는 것 같습니다.
답변2
읽기는 읽기(예: hexdump)를 허용하고 쓰기는 쓰기(예: 장치에 이미지 쓰기)를 허용합니다. 이는 "hexedit"와 같은 도구를 사용하여 내용을 보고 수정할 수 있음을 의미합니다.
x가 무엇을 허용하는지 모르겠습니다. (아마도 ioctl을 허용할까요?)
권한은 brwx______
소유자(일반적으로 root
)만이 이러한 작업을 수행할 수 있음을 의미합니다.