루트가 아닌 사용자가 파티션을 포맷하지 못하도록 방지

루트가 아닌 사용자가 파티션을 포맷하지 못하도록 방지

며칠 전, "컴퓨터" 컨텍스트 메뉴에서 "포맷"을 클릭하여 실수로 외장 하드 드라이브의 파티션을 포맷했습니다. 루트가 아닌 사용자가 이 작업을 수행하는 것을 방지하는 방법을 알고 싶습니다. 동시에 파티션에서 읽고 쓸 수 있으려면 루트가 아닌 사용자가 필요합니다.

저는 페도라 14를 사용합니다.

감사해요.

답변1

~처럼CNC 3b이미 지적했듯이 이는 PolicyKit에 의해 제어됩니다. 디스크 정책은 다음 위치에 있으며 /usr/share/polkit-1/actions/org.freedesktop.udisks.policy조정할 수 있습니다.
루트 권한으로 열고 다음 줄을 검색하거나 <action id="org.freedesktop.udisks.change">, 전체 블록을 주석 처리하거나 <!-- [udisks.change-block] -->, "No"로 설정하고 <allow_active>저장하고 종료합니다.

비활성화되어 있는지 확인하십시오.

$ pkaction --verbose --action-id org.freedesktop.udisks.change
No action with action id org.freedesktop.udisks.change

또는 다음을 설정한 경우 no:

...
implicit active:   no

좋습니다. 다음에 상황에 맞는 메뉴나 디스크 유틸리티를 통해 루트가 아닌 사용자로 장치를 포맷하려고 하면 포맷을 금지하는 오류 메시지가 나타납니다. 이 단계에서는 루트가 아닌 사용자도 장치를 읽고 쓸 수 있습니다.


여전히 장치 포맷을 허용하되 더 높은 보안 수준을 원하는 경우 PolicyKit에서 매번 암호를 묻도록 할 수 있습니다.
동일한 파일을 열고 동일한 섹션으로 이동하여 다음에서 "yes"를 "auth_admin"으로 바꿉니다 allow_active.

<allow_active>auth_admin</allow_active>

확인하다:

$ pkaction --verbose --action-id org.freedesktop.udisks.change
...
implicit active:   auth_admin

훌륭한!

노트:우분투에서만 테스트해 봤지만 페도라도 PolicyKit을 사용하고 있으니 먼저 가상 드라이브로 테스트해 보세요.

답변2

이는 정책 확대의 경우일 수 있습니다. 정직한 터미널에서 이 작업을 수행하면 다음과 같은 일이 발생합니다.

nc3b@aiur:~$ /sbin/mke2fs -jv /dev/sda1
mke2fs 1.41.3 (12-Oct-2008)
mke2fs: Permission denied while trying to determine filesystem size

gnome이나 다른 장치에서 이 작업을 수행할 때 슈퍼유저 작업을 수행하려고 할 때 권한을 높이는 작업을 수행하는 데몬이 있습니다(일반적으로 이것이 권한 있는 작업임을 경고하고 비밀번호를 묻습니다). 나는 Fedora가 PolicyKit을 사용한다고 생각하지만이들 시스템은 비슷하게 작동합니다..

대부분의 실제 위험은 "이 비밀번호를 키링에 보관" 또는 이와 유사한 기능을 제공하고 다시 경고하지 않는다는 것입니다.

sudo, [6] gksudo 및 kdesu는 관리자 권한 프로그램이 호출될 때마다 사용자에게 비밀번호를 다시 입력하도록 요구하지 않습니다. 대신 사용자에게 처음에 비밀번호를 입력하라는 메시지가 표시됩니다. 사용자가 일정 기간(sudo의 기본값은 5분[6]) 동안 관리 권한을 사용하지 않으면 사용자는 비밀번호를 다시 입력할 때까지 다시 표준 사용자 권한으로 제한됩니다.

따라서 해결책은 비밀번호를 입력하더라도 이러한 작업을 수행할 권한이 전혀 없는 사용자를 사용하는 것입니다.

답변3

Fedora가 루트가 아닌 사용자가 디스크를 포맷하도록 허용하면 몇 가지 심각한 보안 문제가 발생할 수 있습니다. 가장 좋은 방법은 다음과 같습니다.

chown root:root /dev/[sh]da[0-9]
chmod 0600 /dev/[sd]da[0-9]

그런 다음 "파티션에서 읽고 쓸 수 있는 루트가 아닌 사용자"가 필요하고 파일 시스템을 읽고 쓰는 것을 의미한다면 마운트하기만 하면 됩니다.

다른 의미라면 읽기 및 쓰기를 수행하는 프로그램의 권한을 수정하면(아마도 프로그램을 실행하여 sudo) 문제가 해결될 수 있습니다.

그 외에도 파티션 구조는 디스크의 슈퍼 블록(예: /dev/sda - 숫자 없음)에 저장되어 있다고 생각하므로 이를 로 설정하고 0600파티션을 보다 허용적인 마스크(예 0660: 그룹 소유)로 설정하는 것이 좋습니다. 문제를 해결할 것입니다.

관련 정보